방화벽은 서버 보안의 가장 기본적인 출입문입니다. 허용한 통신만 통과시키고 나머지는 모두 막아 불필요한 공격 경로를 차단합니다. 우분투를 비롯한 리눅스에서는 **ufw(Uncomplicated Firewall)**라는 도구로 방화벽을 아주 간단하게 다룰 수 있습니다. 이 글에서 기본기를 정리합니다.
1. ufw란
ufw는 복잡한 iptables를 쉽게 쓸 수 있도록 만든 방화벽 관리 도구입니다. 이름 그대로 “복잡하지 않은 방화벽”을 지향해, 명령어 한 줄로 포트를 열고 닫을 수 있습니다.
2. 현재 상태 확인
먼저 방화벽이 켜져 있는지 확인합니다.
sudo ufw status
inactive라고 나오면 아직 비활성화 상태입니다.
3. 기본 정책 설정
가장 안전한 기본 정책은 “들어오는 건 모두 막고, 나가는 건 모두 허용”입니다.
sudo ufw default deny incoming
sudo ufw default allow outgoing
이제 명시적으로 허용한 포트만 외부에서 접속할 수 있습니다.
4. 필요한 포트 열기
서비스에 필요한 포트만 선택적으로 엽니다. SSH는 반드시 먼저 열어야 방화벽을 켰을 때 접속이 끊기지 않습니다.
sudo ufw allow OpenSSH
sudo ufw allow 80 # HTTP
sudo ufw allow 443 # HTTPS
특정 포트 번호로도 열 수 있습니다.
sudo ufw allow 3306 # MySQL
5. 방화벽 활성화
규칙을 모두 등록했다면 방화벽을 켭니다.
sudo ufw enable
SSH 포트를 열어두었는지 다시 한번 확인한 뒤 실행하세요. 열지 않은 채로 활성화하면 원격 접속이 끊길 수 있습니다.
6. 규칙 확인과 삭제
현재 적용된 규칙을 번호와 함께 봅니다.
sudo ufw status numbered
특정 규칙을 지우려면 번호로 삭제합니다.
sudo ufw delete 2
7. 특정 IP만 허용하기
관리용 포트는 신뢰하는 IP에서만 접속하도록 제한하면 더 안전합니다.
sudo ufw allow from 203.0.113.10 to any port 22
마무리
ufw의 핵심은 **”필요한 포트만 열고 나머지는 모두 막는다”**는 원칙입니다. 기본 정책을 deny로 두고, SSH·HTTP·HTTPS처럼 꼭 필요한 포트만 선별해 여는 습관을 들이세요. 방화벽 설정만 제대로 해도 외부 공격 표면이 크게 줄어듭니다.