[Ubuntu] 우분투 방화벽 UFW 설정
ℹ️이 콘텐츠에는 광고가 포함되어,판매 발생 시 수익이 발생합니다.(네이버 쇼핑 커넥트, 아마존 어필리에이트, 애드센스 등)우분투 설치 후 기본 방화벽은 UFW(Uncomplicated Firewall)입니다. iptables의 방화벽 설정보다 간소하게 개발된 ufw는 IPv4 또는 IPv6 호스트 기반 방화벽을 사용자 친화적으로 사용할 수 있는 것이 우분투 방화벽의 사용 목적입니다.
Ⅰ. 기본 구문
✅ UFW 활성화 / 비활성화 / 상태 확인
🔲 활성화
ufw enableCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup🔲 상태 확인
활성화 후에 상태 값을 확인합니다.
ufw status verboseverbose 옵션 사용 시 기본 출력 외에 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 disableFirewall 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 apacheufw 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)