Uncomplicated Firewall
lastmod 2024-05-20created 2016-06-044 edits
Uncomplicated Firewall (UFW) is Ubuntu's default firewall. It makes iptables easier to configure; it works fine for simple firewall setups, but advanced firewall setups require using iptables rules directly.
Basic UFW usage
## UFW는 기본 비활성화 상태이기에 이를 활성화 한다.
$ sudo ufw enable
## UFW 비활성화
$ sudo ufw disable
## UFW 상태 확인
$ sudo ufw status
## UFW 상태 자세히 확인
$ sudo ufw status verbose
## 기본 룰 확인
$ sudo ufw show raw
## 기본 정책 차단
$ sudo ufw default deny
## 기본 정책 허용
$ sudo ufw default allow
## SSH 포트 22번 허용(tcp/udp 22번 포트를 모두 허용)
$ sudo ufw allow 22
## tcp 22번 포트만을 허용 - SSH는 tcp 22번 포트만 허용하는게 정답
$ sudo ufw allow 22/tcp
## udp 22번 포트만을 허용
$ sudo ufw allow 22/udp
## ssh 포트 22번 거부(tcp/udp 22번 포트를 모두 거부)
$ sudo ufw deny 22
## tcp 22번 포트만을 거부
$ sudo ufw deny 22/tcp
## udp 22번 포트만을 거부
$ sudo ufw deny 22/udp
## UFW 룰의 삭제
$ sudo ufw delete deny 22/tcp
## 192.168.0.100 주소 허용
$ sudo ufw allow from 192.168.0.100
## 네트워크 단위로 지정하여 같은 네트워크 상에 있는 컴퓨터들은 접속가능해진다.
$ sudo ufw allow from 192.168.0.0/24
## 192.168.0.100 주소와 포트, 프로토콜 허용
$ sudo ufw allow from 192.168.0.100 to any port 22
## 192.168.0.100 주소와 tcp 프로토콜 22번 포트 허용
$ sudo ufw allow from 192.168.0.100 to any port 22 proto tcp
Allowing/denying ping (icmp)
UFW's default setting allows ping requests.
sudo vi /etc/ufw/before.rules
# 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
Changing all the ACCEPT parts of the code above to DROP, or deleting them, makes it deny ping requests.
ufw numbered rules
UFW rules can be viewed with numbers attached. You can use these to modify, delete, or add rules.
## ufw number 보기
$ sudo ufw status numbered
## ufw numbered 수정
$ sudo ufw delete 1
$ sudo ufw insert 1 allow from 192.168.0.100
Example
How to use port 22 (ssh) and port 443 (HTTPS):
## Default incoming policy changed to 'deny'
$ sudo ufw default deny
$ sudo ufw status verbose
$ sudo ufw allow 22/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw status