UFW(Uncomplicated Firewall)는 iptables의 복잡한 문법을 단순화한 Ubuntu 기본 방화벽 도구입니다. 직관적인 명령어로 포트 제어를 할 수 있어 서버 보안의 첫 번째 단계로 적합합니다.
기본 개념
방화벽 정책의 기본 원칙은 화이트리스트 방식입니다. 모든 접속을 차단하고 필요한 것만 허용합니다.
UFW 설치 및 활성화
Ubuntu에는 기본 설치되어 있습니다:
sudo apt install -y ufw
중요: 활성화 전에 반드시 SSH 포트를 허용해야 합니다. 그렇지 않으면 서버에서 잠깁니다.
# SSH 허용 (기본 22번)
sudo ufw allow 22/tcp
# 또는 변경한 포트
sudo ufw allow 2222/tcp
# UFW 활성화
sudo ufw enable
# 상태 확인
sudo ufw status verbose
주요 서비스 포트 허용
# 웹 서버
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
# 데이터베이스 (내부 접근만 필요하면 허용하지 않음)
sudo ufw allow 3306/tcp # MySQL
sudo ufw allow 5432/tcp # PostgreSQL
# 메일 서버
sudo ufw allow 25/tcp # SMTP
sudo ufw allow 587/tcp # SMTP (제출)
sudo ufw allow 993/tcp # IMAPS
특정 IP에서만 허용
관리자 IP에서만 SSH를 허용하는 것이 가장 안전합니다:
# 특정 IP에서 SSH만 허용
sudo ufw allow from 203.0.113.1 to any port 2222
# 특정 IP 대역에서 허용
sudo ufw allow from 203.0.113.0/24 to any port 2222
# 특정 IP의 모든 접근 차단
sudo ufw deny from 1.2.3.4
규칙 확인 및 삭제
# 번호와 함께 규칙 목록 확인
sudo ufw status numbered
# 번호로 규칙 삭제
sudo ufw delete 3
# 규칙 내용으로 삭제
sudo ufw delete allow 80/tcp
기본 정책 설정
# 들어오는 트래픽 기본 차단
sudo ufw default deny incoming
# 나가는 트래픽 기본 허용
sudo ufw default allow outgoing
로깅 설정
# 로깅 활성화
sudo ufw logging on
# 로그 수준 설정 (low, medium, high, full)
sudo ufw logging medium
# 로그 확인
sudo tail -f /var/log/ufw.log
Docker 사용 시 주의사항
Docker를 사용하면 UFW 규칙을 우회할 수 있습니다. Docker는 iptables를 직접 수정하기 때문입니다. 이 경우 /etc/docker/daemon.json에 다음을 추가합니다:
{
"iptables": false
}
그 후 iptables 규칙을 직접 관리하거나, Docker Compose에서 포트 바인딩을 127.0.0.1:8080:80처럼 루프백으로 제한하는 방식을 사용합니다.
권장 최소 설정
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from [관리자IP] to any port [SSH포트]
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
이 설정만으로도 대부분의 자동화 공격을 차단할 수 있습니다.