配置預設政策
sudo vim /etc/default/ufw
有如下預設規則:
IPV6=yes
這個開啟時,寫一條規則将自動變成兩條:IPv4的和IPv6的;如果用不上的話可以将其改為no。
配置進入規則
預設情況下開啟ufw,會禁止一切從外到内的連接配接,可以直接建立白名單規則。
也可以手動配置是否禁用一切進入:
sudo ufw default allow incoming
sudo ufw default deny incoming
單個端口
開放ssh:
等價于
sudo ufw allow 22
因為在/etc/services檔案中記錄了ssh對應的端口是22。
範圍端口
開放6000到6007之間的TCP、UDP端口:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
限定外部ip
sudo ufw allow from 203.0.113.4
這裡的IP也可以是一個網段:
sudo ufw allow from 203.0.113.0/24
限定外部ip+内部port
允許某個IP連接配接ssh:
sudo ufw allow from 203.0.113.4 to any port 22
限定網絡接口
若有多個網絡接口,可以通過
allow in on
限定允許接入的網絡接口,比如指定隻能從eth0網絡接口通路80端口:
sudo ufw allow in on eth0 to any port 80
配置外出規則
也可以限制從内向外的連接配接,這樣能防止連接配接到反彈木馬等不可預料的服務上。
預設情況下是允許一切外出連接配接的,這裡先禁止一切外出,再添加白名單:
sudo ufw default deny outgoing
限定連向某個端口
限定連向某個IP+端口
sudo ufw allow out to 11.22.33.44 port http # TCP 80
sudo ufw allow out to 11.22.33.44 port https # TCP 443
限定從某個網絡接口外出
sudo ufw allow out on ens33 to any port 53
檢視狀态和管理規則
檢視防火牆狀态:
sudo ufw status
sudo ufw status verbose
檢視帶編号的規則,删除第2條:
sudo ufw status numbered
sudo ufw delete 2
也可以删除指定的端口
sudo ufw delete allow http
或
sudo ufw delete allow 80
這個能同時删除 IPv4 和 IPv6 的規則。
重新開機 UFW 服務:
ufw reload
禁用ICMP
為了防止nmap等軟體掃描,可以禁用ICMP響應。
修改配置檔案/etc/ufw/before.rules
cp /etc/ufw/before.rules /etc/ufw/before.rules_backup_date
vim /etc/ufw/before.rules
初始内容如下:
# ok icmp codes for INPUT
-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
将上面的ACCEPT修改為DROP:
# ok icmp codes for INPUT
-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
重新開機 UFW 服務即可:
ufw reload