우분투 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와 함께 안전하게 운영되길 바랍니다!