Ubuntu에서 UFW 방화벽 설정하기
리눅스에서 보안을 강화하기 위해 방화벽 설정은 필수적입니다. Ubuntu에서는 iptables
를 보다 쉽게 다룰 수 있도록 UFW(Uncomplicated Firewall) 라는 도구를 제공합니다.
UFW는 Python으로 작성되었으며 GPL 라이선스로 배포되고, Ubuntu 18.04 LTS 이후 버전에서 기본적으로 사용할 수 있습니다.
이번 글에서는 Ubuntu 환경에서 UFW를 설치하고 활용하는 방법을 단계별로 정리했습니다.
준비사항 (Prerequisites)
- Ubuntu 서버 및 관리자 권한(sudo)
- 테스트는 VMware Workstation 15 Pro 위에 설치된 Ubuntu 18.04.3 LTS Server(64-bit) 환경에서 진행되었습니다.
주요 설정 항목 (Summary)
- UFW 활성화 / 비활성화
- 방화벽 상태 확인
- 기본 정책(Default Rules) 조회 및 변경
- 특정 포트/프로토콜 허용·차단
- 룰(rule) 삭제
- 서비스명 기반 허용·차단
- IP/서브넷 기반 제어
- Ping(ICMP) 허용·차단
- (선택) UFW 제거 방법
1. UFW 활성화 및 비활성화
- UFW는 설치 직후 비활성화 상태입니다.
# 활성화
$ sudo ufw enable
# 비활성화
$ sudo ufw disable
2. 현재 상태 확인
$ sudo ufw status verbose
Status: inactive
3. 기본 규칙(Default Rules) 확인
$ sudo ufw show raw
- 규칙은
/etc/ufw/user.rules
파일에 저장되며,ufw-user-input
,ufw-before-logging-input
등의 체인으로 관리됩니다.
$ sudo cat /etc/ufw/user.rules
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES
### END RULES
### LOGGING
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING
### RATE LIMITING
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING
COMMIT

4. 기본 정책 변경
# 모든 연결 허용
$ sudo ufw default allow
# 모든 연결 차단
$ sudo ufw default deny
5. 포트 단위 규칙 추가/차단
# TCP 8080 허용
$ sudo ufw allow 8080/tcp
# TCP 8080 차단
$ sudo ufw deny 8080/tcp
# UDP 22 허용
$ sudo ufw allow 22/udp
# TCP/UDP 53 허용 (DNS)
$ sudo ufw allow 53
6. 규칙 삭제
$ sudo ufw delete deny 8080/tcp
$ sudo ufw delete deny 22/udp
$ sudo ufw delete deny 53
7. 서비스명으로 제어
- 서비스 이름은
/etc/services
파일에서 확인할 수 있습니다.
# 서비스 목록 조회
$ cat /etc/services
# SSH 허용
$ sudo ufw allow ssh
# SSH 차단
$ sudo ufw deny ssh
8. IP 기반 규칙
# 특정 IP 허용
$ sudo ufw allow from 192.168.10.20
# 특정 IP 차단
$ sudo ufw deny from 192.168.10.20
# 서브넷 허용
$ sudo ufw allow from 192.168.10.0/24
# 특정 IP, 포트 22만 허용
$ sudo ufw allow from 192.168.10.20 to any port 22 proto tcp

9. Ping(ICMP) 허용·차단
- 기본적으로 UFW는 ping 요청을 허용합니다.
- 제한하려면
/etc/ufw/before.rules
파일을 수정해야 합니다.
- 제한하려면
$ sudo vi /etc/ufw/before.rules
# Ping(ICMP) 허용
...
### ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT
…
# Ping(ICMP) 차단
…
### ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
-A ufw-before-input -p icmp --icmp-type source-quench -j DROP
-A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
-A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
…
10. (선택) UFW 제거
# 설정 파일 유지한 채 삭제
$ sudo apt remove ufw
$ sudo apt remove --auto-remove ufw
# 설정 파일까지 삭제 (단, 사용자 홈 디렉터리의 설정 파일은 유지)
$ sudo apt purge ufw
$ sudo apt purge --auto-remove ufw
마무리
Ubuntu에서 UFW 방화벽 설정하기
이로써 Ubuntu 환경에서 UFW 방화벽 설정을 완료했습니다.
다음 글에서는 보다 세밀한 제어가 가능한 iptables 설정 방법을 다룰 예정입니다.
참고 자료
취업, 이직, 퇴사, 커리어 고민으로 힘든가요?
Notices를 확인하고 상담 서비스를 받으세요.
1분만 투자하세요.
1분으로 1년을 아끼고, 10년의 커리어가 달라져요.