Ubuntu UFW 사용하여 iptables 방화벽 정책 변경

UFW와 iptables의 관계

iptables : 리눅스 커널 수준의 방화벽 시스템. 모든 네트워크 트래픽 제어의 핵심.
ufw : iptables를 쉽게 사용할 수 있도록 만든 프론트엔드 도구. 사용자 친화적 인터페이스 제공.
즉, UFW는 iptables를 내부적으로 사용해서 방화벽 규칙을 설정합니다. 사용자가 ufw allow 22 같은 명령을 입력하면, 실제로는 iptables에 해당하는 규칙이 생성되는 것이죠.

default 값

# iptables -L | grep -e INPUT
Chain INPUT (policy ACCEPT)
# iptables -L | grep -e FORWARD
Chain FORWARD (policy ACCEPT)
# iptables -L | grep -e OUTPUT
Chain OUTPUT (policy ACCEPT)

UFW는 최소설치시 default 로 disable 되어 있음.
방화병 정책도 전체 ACCEPT로 되어 있음.
확인 후 enable 필요.

# ufw status
# systemctl status ufw.service
# systemctl enable ufw.service
# systemctl start ufw.service
# systemctl status ufw.service
# ufw enable
 Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
 Firewall is active and enabled on system startup

상태확인 정책추가

# ufw status numbered
# ufw allow from 172.30.0.205/20 to any port 22 proto tcp
# ufw allow from 10.10.10.0/24 to any port 22 proto tcp
# ufw allow from 192.168.240.48/21 to any port 22 proto tcp
# ufw allow from 172.30.0.205/20 to any port 5000 proto tcp
# ufw allow from 172.30.0.205/20 to any port 10150:10250 proto tcp
;; 외부에서 서버로 들어오는 input 정책의 경우 외부 소스 IP 또는 대역을 지정하고 목적지는 any로 두는 경우가 많음.
  여러개의 IP에 대해 별도로 정책을 세울려면 이 부분도 any 대신 IP/대역을 지정.
  proto tcp로 프로토콜 tcp를 지정하지 않으면 tcp/udp 동시에 적용됨.

# ufw status numbered
# ufw default deny incoming
;; 기본 INPUT 정첵 DROP로 설정.
# ufw show raw or # iptables -L

** 정책추가시 기본적으로 INPUT 정책은 DROP로 변경되는 것으로 보임.

# iptables -L | grep -e INPUT
Chain INPUT (policy DROP)
# iptables -L | grep -e FORWARD
Chain FORWARD (policy DROP)
# iptables -L | grep -e OUTPUT
Chain OUTPUT (policy ACCEPT)

정책수정 명령어는 지원하지 않음. 새로운 정책을 추가하고 기존 정책을 삭제

# ufw status numbered
Status: active
     To                         Action      From
     —                         ——      —-
[ 1] 22                         ALLOW IN    172.30.0.0/20
[ 2] 22                         ALLOW IN    10.10.10.0/24
[ 3] 22                         ALLOW IN    192.168.240.0/21
[ 4] 5000                       ALLOW IN    172.30.0.0/20
[ 5] 5000/tcp                   ALLOW IN    172.30.0.0/20
[ 6] 22/tcp                     ALLOW IN    172.30.0.0/20
[ 7] 22/tcp                     ALLOW IN    10.10.10.0/24
[ 8] 22/tcp                     ALLOW IN    192.168.240.0/21

# ufw delete 1
:Deleting
 allow from 172.30.0.0/20 to any port 22
Proceed with operation (y|n)? y
Rule deleted
# ufw status numbered
Status: active
Status: active
     To                         Action      From
     —                         ——      —-
[ 1] 22                         ALLOW IN    10.10.10.0/24
[ 2] 22                         ALLOW IN    192.168.240.0/21
[ 3] 5000                       ALLOW IN    172.30.0.0/20
[ 4] 5000/tcp                   ALLOW IN    172.30.0.0/20
[ 5] 22/tcp                     ALLOW IN    172.30.0.0/20
[ 6] 22/tcp                     ALLOW IN    10.10.10.0/24
[ 7] 22/tcp                     ALLOW IN    192.168.240.0/21

**상단 정책이 지워지면 자동으로 NO가 한자리씩 올려짐.
  삭제시마다 NO 확인 필요.
**순서변경 명령어 지원하지 않음.
  필요시 /etc/ufw/user.rules 를 직접수정 후, reload 필요.(ufw reload)