[Ubuntu] 우분투 방화벽 UFW 설정
우분투 설치 후 기본 방화벽은 UFW(Uncomplicated Firewall)입니다. iptables의 방화벽 설정보다 간소하게 개발된 ufw는 IPv4 또는 IPv6 호스트 기반 방화벽을 사용자 친화적으로 사용할 수 있는 것이 우분투 방화벽의 사용 목적입니다.
Ⅰ. 기본 구문
✅ UFW 활성화 / 비활성화 / 상태 확인
🔲 활성화
ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
🔲 상태 확인
활성화 후에 상태 값을 확인합니다.
ufw status verbose
verbose 옵션 사용 시 기본 출력 외에 Default 값과 New profiles 값이 추가 정보로 확인됩니다.
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Apache ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
# 이전에 활성화 한 규칙
🔲 비활성화
ufw disable
Firewall stopped and disabled on system startup
✅ 우분투 방화벽 UFW 기본 룰
UFW의 기본 룰은 들어오는 패킷은 전부 거부(deny)입니다. 나가는 패킷은 전부 허가(allow)입니다.
처음 활성화 후 들어오는 룰에 대해서는 전부 거부이기 때문에 처음 세팅한 서버에서 활성화를 진행했다면 기본으로 먼저 SSH 포트를 열어줘야 합니다. iptables 및 레드헷 계열의 FirewallD도 동일한 규칙을 따릅니다.
활성화 전에 먼저 들어오는 SSH 포트를 허용합니다.
sudo ufw allow ssh
# 또는 포트를 직접 명시할 경우
sudo ufw allow 22/tcp
이후에 활성화를 진행합니다.
ufw enable
✅ 허용 및 거부(특정 규칙)
🔲 허용
ufw allow <port>/<optional: protocol>
예 1) 포트 21 에서 들어오는 TCP와 UDP 패킷을 허용
ufw allow 53
예 2) 포트 53에서 들어오는 TCP 패킷을 허용
ufw allow 53/tcp
예 3) 포트 53에서 들어오는 UDP 패킷을 허용
ufw allow 53/udp
🔲 거부
deny <port>/<optional: protocol>
거부의 경우 allow 대신 deny를 입력해서 동일한 방법으로 진행합니다.
ufw deny 1
✅ 규칙 삭제
규칙의 삭제는 기존의 규칙 앞에 delete를 붙입니다. 거부 된 21번 포트를 삭제하는 겅우 아래와 같습니다.
ufw delete deny 21
✅ Services 명을 입력해서 설정
ufw allow <서비스 이름>
🔲 사용 예
SSH와 apache 추가. 443포트 함께 열때는 ‘Apache full’ 443포트만 추가 시 https
ufw allow ssh
ufw allow apache
ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Apache ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
✅ 우분투 방화벽 엑세스 허용
특정 IP를 허용하는 룰입니다.
ufw allow from <ip address>
🔲 예) 111.222.22.1 IP를 허용
ufw allow from 111.222.22.1
🔲 111.222.22.1 등록된 IP 삭제
ufw delete deny from 111.222.22.1
🔲 서브넷 허용
ufw allow from 192.168.1.0/24
Ⅱ. 우분투 방화벽 고급 구문
✅ 특정 포트 및 IP 주소로 허용
ufw sudo ufw allow from <IP 주소> to <목적지> port <포트 번호>
🔲 TCP/UDP 프로토콜에 대해 21번 포트를 192.168.0.4 IP에서 허용
ufw allow from 192.168.0.4 to any port 21
✅ 특정 포트, IP 주소 및 프로토콜 허용
ufw allow from <대상> to <목적지> port <포트 번호> proto <프로토콜 이름>
🔲 IP 주소 192.168.0.4를 21번 포트, TCP 액세스 허용
ufw allow from 192.168.0.4 to any port 21 proto tcp
✅ 엑세스 거부
새로운 엑세스 거부 및 기존 엑세스 거부는 allow를 deny로 변경해서 적용합니다.
ufw deny from 192.168.0.4 to any port 21 proto tcp
✅ 삭제
삭제는 적용된 규칙 그대로 입력하여 삭제를 진행합니다.
ufw status
Status: active
To Action From
-- ------ ----
Apache ALLOW Anywhere
22/tcp ALLOW Anywhere
21/tcp DENY 192.168.0.4
Apache (v6) ALLOW Anywhere (v6)
22/tcp (v6) ALLOW Anywhere (v6)
deny from 192.168.0.4 to any port 21 proto tcp
Rule deleted
🔲 번호로 삭제
명령어로 상태 값을 확인 후 delete 뒤에 해당하는 숫자를 입력합니다.
ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] Apache ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 873/tcp ALLOW IN Anywhere
[ 4] Apache (v6) ALLOW IN Anywhere (v6)
[ 5] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 873/tcp (v6) ALLOW IN Anywhere (v6)
ufw delete 6
Deleting:
allow 873/tcp
Proceed with operation (y|n)? y
Rule deleted (v6)
root@ip-172-26-1-204:~# ufw delete 3
Deleting:
allow 873/tcp
Proceed with operation (y|n)? y
Rule deleted
ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] Apache ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] Apache (v6) ALLOW IN Anywhere (v6)
[ 4] 22/tcp (v6) ALLOW IN Anywhere (v6)