UFW
복잡한 iptables 규칙을 간단한 명령어로 다룰 수 있게 만든 방화벽 관리 도구
복잡한 iptables 규칙을 간단한 명령어로 다룰 수 있게 만든 방화벽 관리 도구
사람이 쓰기 쉬운 명령어로 규칙을 등록하는 인터페이스
UFW가 내부적으로 호출하는 규칙 관리 프로그램
커널 내부에서 패킷을 실제로 허용·차단하는 엔진
검증된 커널 기능을 그대로 사용하므로 성능이 우수하고, 별도 방화벽 프로세스를 띄울 필요가 없다.
여러 옵션을 조합해야 하는 iptables와 달리, 한 줄 명령으로 규칙을 설정할 수 있다.
sudo ufw allow 22/tcp sudo ufw deny 80/tcp sudo ufw enable
UFW 자체는 패킷을 처리하지 않는다 — 실제 처리는 커널의 Netfilter가 담당한다.
sudo ufw allow 22/tcp # ↓ 내부적으로 iptables 규칙 생성 (Netfilter가 실제 처리) sudo iptables -L -n
별도 방화벽 프로세스 없이 검증된 커널 기능을 그대로 사용 → 성능 우수
모든 패킷에 대한 기본 동작을 설정 — 화이트리스트 방식이 대표적이다.
sudo ufw default deny incoming sudo ufw default allow outgoing # 이후 필요한 서비스만 개별 허용
화이트리스트 장점: 불필요한 서비스 노출 방지 · 관리 용이 · 높은 보안성
특정 포트를 TCP/UDP 단위로 허용·차단할 수 있다. 프로토콜을 생략하면 둘 다 허용된다.
sudo ufw allow 443/tcp sudo ufw deny 53/udp sudo ufw allow 53 # TCP + UDP 모두 허용
특정 IP만 허용/차단하고, 포트까지 함께 지정할 수 있다.
sudo ufw allow from 192.168.1.100 sudo ufw deny from 10.0.0.5 sudo ufw allow from 192.168.1.100 to any port 22
NIC별로 서로 다른 정책 적용 가능 — DMZ · 내부망 · 외부망 분리에 활용된다.
sudo ufw allow in on eth0 to any port 80 # eth0: HTTP만 허용 sudo ufw allow in on eth1 to any port 22 # eth1: SSH 허용
현재 적용된 규칙과 열려있는 포트를 한눈에 확인할 수 있다.
sudo ufw status sudo ufw status numbered sudo ufw status verbose
번호를 이용하거나 동일한 규칙을 그대로 입력해 삭제할 수 있다.
sudo ufw delete allow 22/tcp sudo ufw delete 1
설정 파일에서 IPv6 사용 여부를 지정하면, IPv4와 동일한 규칙이 IPv6에도 그대로 적용된다.
IPV6=yes # 활성화 시 IPv4 규칙이 IPv6에도 동일 적용
IPv6 환경을 위한 별도 방화벽 구성이 필요 없다.
차단된 패킷, 포트 스캔, 비정상 접속 시도를 로그로 분석할 수 있다.
sudo ufw logging on sudo ufw logging medium # off → low → medium → high → full
로그 파일: /var/log/ufw.log
포트 번호를 외우지 않아도 서비스 이름만으로 권장 규칙을 적용할 수 있다.
sudo ufw app list # 등록된 프로파일 확인 sudo ufw allow OpenSSH sudo ufw allow "Nginx Full" # HTTP(80) + HTTPS(443) 동시 허용
| 장점 | 단점 |
|---|---|
| 명령어가 매우 직관적 | 세밀한 설정에는 한계 |
| Debian 계열 기본 제공 | 복잡한 NAT·패킷 마킹·고급 체인은 iptables/nftables 필요 |
| 설정 오류 가능성이 적음 | 대규모 환경은 firewalld가 더 적합 |
| 기본적인 방화벽 기능은 충분 |