우분투 UFW 방화벽 명령어 총정리 - 보안 관리를 위한 필수 가이드
우분투 UFW 방화벽 명령어 총정리 - 보안 관리를 위한 필수 가이드
서버 관리자라면 방화벽 설정은 필수적인 보안 요소입니다. 우분투에서는 복잡한 iptables 대신 간편하게 사용할 수 있는 UFW(Uncomplicated Firewall)를 제공합니다. 이 글에서는 UFW 방화벽 명령어를 상황별로 자세히 알아보고, 서버 보안을 효과적으로 관리하는 방법을 알아보겠습니다.
UFW란 무엇인가?
UFW(Uncomplicated Firewall)는 이름 그대로 '복잡하지 않은 방화벽'이라는 의미로, 리눅스의 기본 방화벽인 iptables를 보다 쉽게 사용할 수 있도록 만든 인터페이스입니다. 복잡한 iptables 명령어를 익히지 않고도 간단한 명령어로 방화벽을 효과적으로 관리할 수 있습니다.
UFW 방화벽 상태 및 규칙 확인하기
방화벽 관리에서 가장 기본은 현재 설정된 규칙을 확인하는 것입니다. UFW에서는 다양한 방법으로 방화벽 상태와 규칙을 확인할 수 있습니다.
기본 상태 확인
1sudo ufw status
이 명령어는 UFW의 활성화 여부와 현재 설정된 규칙을 간략하게 보여줍니다.
번호가 매겨진 규칙 확인
1sudo ufw status numbered
이 명령어는 각 규칙에 번호를 부여하여 보여줍니다. 특히 규칙을 삭제할 때 이 번호를 사용하면 편리합니다.
예시 출력:
1Status: active
2
3 To Action From
4 -- ------ ----
5[ 1] 22 ALLOW IN Anywhere
6[ 2] 80 ALLOW IN Anywhere
7[ 3] 443 ALLOW IN Anywhere
상세 규칙 확인
1sudo ufw show raw
이 명령어는 iptables 형식으로 더 상세한 규칙 정보를 보여줍니다. 복잡한 네트워크 설정을 디버깅할 때 유용합니다.
UFW 방화벽 규칙 추가하기
서버 보안을 위해 필요한 포트만 열어두는 것이 중요합니다. UFW를 사용하면 쉽게 규칙을 추가할 수 있습니다.
기본 포트 허용
1sudo ufw allow 22 # SSH 포트(22) 허용
2sudo ufw allow 80/tcp # HTTP 포트(80) TCP 프로토콜만 허용
3sudo ufw allow 443 # HTTPS 포트(443) 허용
특정 IP 주소 허용
1sudo ufw allow from 192.168.0.10 # 특정 IP의 모든 연결 허용
특정 IP에서 특정 포트로의 연결 허용
1sudo ufw allow proto tcp from 192.168.0.10 to any port 3306
이 명령어는 192.168.0.10 IP에서 3306 포트(MySQL)로의 TCP 연결만 허용합니다.
포트 범위 허용
1sudo ufw allow 10000:20000/tcp # 10000부터 20000까지 TCP 포트 허용
서비스명으로 허용
/etc/services
에 등록된 서비스는 포트 번호 대신 서비스명으로 규칙을 추가할 수 있습니다.
1sudo ufw allow ssh # SSH 서비스(22번 포트) 허용
2sudo ufw allow http # HTTP 서비스(80번 포트) 허용
3sudo ufw allow https # HTTPS 서비스(443번 포트) 허용
UFW 방화벽 규칙 삭제하기
더 이상 필요하지 않은 규칙은 삭제하는 것이 좋습니다. UFW에서는 두 가지 방법으로 규칙을 삭제할 수 있습니다.
번호로 규칙 삭제
1sudo ufw status numbered # 먼저 번호가 매겨진 규칙 확인
2sudo ufw delete 2 # 2번 규칙 삭제
규칙 직접 지정하여 삭제
1sudo ufw delete allow 80 # 80번 포트 허용 규칙 삭제
2sudo ufw delete allow from 192.168.0.10 # 특정 IP 허용 규칙 삭제
UFW 방화벽 전체 관리
방화벽 활성화/비활성화
1sudo ufw enable # 방화벽 활성화
2sudo ufw disable # 방화벽 비활성화
기본 정책 설정
1sudo ufw default deny incoming # 기본적으로 들어오는 연결 차단
2sudo ufw default allow outgoing # 기본적으로 나가는 연결 허용
대부분의 경우 위와 같이 설정하는 것이 안전합니다. 들어오는 연결은 명시적으로 허용한 것만 받고, 나가는 연결은 모두 허용합니다.
방화벽 초기화
1sudo ufw reset # 모든 규칙 초기화
UFW 로그 관리
방화벽 로그는 보안 모니터링과 문제 해결에 중요합니다.
로그 활성화/비활성화
1sudo ufw logging on # 로그 활성화
2sudo ufw logging off # 로그 비활성화
로그 레벨 설정
1sudo ufw logging low # 낮은 수준의 로그
2sudo ufw logging medium # 중간 수준의 로그
3sudo ufw logging high # 높은 수준의 로그
로그 확인
1sudo tail -f /var/log/ufw.log # 실시간 로그 확인
고급 UFW 설정 예시
내부 네트워크에서만 특정 서비스 접근 허용
1sudo ufw allow from 192.168.1.0/24 to any port 3306 # 내부 네트워크에서만 MySQL 접근 허용
특정 인터페이스에만 규칙 적용
1sudo ufw allow in on eth0 to any port 80 # eth0 인터페이스로 들어오는 80번 포트 허용
특정 IP와 포트 거부
1sudo ufw deny from 10.0.0.5 to any port 22 # 특정 IP의 SSH 접근 거부
UFW와 Docker 함께 사용하기
Docker를 사용할 때는 UFW 규칙이 우회될 수 있어 주의가 필요합니다. Docker는 자체 iptables 규칙을 생성하기 때문입니다.
이를 방지하기 위해 Docker 데몬 설정에 다음을 추가할 수 있습니다:
1{
2 "iptables": false
3}
또는 Docker 네트워크를 UFW 규칙과 일치하도록 신중하게 구성해야 합니다.
마무리
UFW는 복잡한 iptables 명령어 없이도 효과적인 방화벽 관리를 가능하게 합니다. 이 글에서 소개한 명령어들을 활용하면 서버 보안을 한층 강화할 수 있을 것입니다.
기본적인 규칙으로는 SSH(22), HTTP(80), HTTPS(443) 포트만 열어두고, 나머지는 차단하는 것이 좋습니다. 그리고 필요에 따라 추가 포트를 열거나, 특정 IP에 대한 규칙을 설정하면 됩니다.
보안은 한 번 설정하고 끝나는 것이 아니라 지속적인 관리와 모니터링이 필요합니다. UFW 로그를 정기적으로 확인하고, 필요한 포트만 열어두는 습관을 들이면 서버 보안을 효과적으로 유지할 수 있습니다.
여러분의 서버가 UFW와 함께 안전하게 운영되길 바랍니다!