UFW也稱為非複雜防火牆,它是iptables的接口,特別適合基於主機的防火牆。UFW為不熟悉防火牆概念的初學者提供了易於使用的界面。它是源自Ubuntu的最受歡迎的防火牆工具,它同時支持IPv4和IPv6。在本教程中,我們將學習如何在Linux上安裝和使用UFW防火牆。
Installing UFWUbuntu默認情況下,UFW在大多數基於Ubuntu的發行版中可用。如果已刪除,則可以通過運行以下linux命令來安裝它。
Debian可以通過運行以下linux命令在Debian中安裝UFW。
CentOS默認情況下,UFW在CentOS存儲庫中不可用。因此,您需要將EPEL存儲庫安裝到系統中,可以通過運行以下linux命令來安裝。一旦安裝了EPEL存儲庫,就可以來安裝UFW。
# yum install epel-release -y# yum install --enablerepo="epel" ufw -y安裝UFW之後,通過運行以下linux命令來啟動UFW服務並使其在啟動時啟動,查看其狀態。
# ufw enable # ufw status Status: active通過運行以下linux命令來禁用UFW防火牆。
Set UFW Default Policy默認情況下,UFW默認策略設置為阻止所有傳入流量並允許所有傳出流量。可以使用以下linux命令設置自己的默認策略。
# ufw default allow outgoing # ufw default deny incomingAdd and Delete Firewall Rules可以使用埠號或服務名稱兩種方式添加用於允許傳入和傳出流量的規則。例如,如果要同時允許HTTP服務的傳入和傳出連接,然後使用服務名稱運行以下linux命令。
# ufw allow http (服務名稱方式)# ufw allow 80 (埠方式)如果要基於TCP或UDP過濾數據包,請運行以下命令。
# ufw allow 80/tcp # ufw allow 21/udp使用以下linux命令檢查已添加規則的狀態,會看到以下輸出。
root@limelinux-server:~# ufw status verbose Status: activeLogging: on (low)Default: deny (incoming), allow (outgoing), disabled (routed)New profiles: skip
To Action From-- - ----22/tcp ALLOW IN Anywhere 139 ALLOW IN Anywhere 445 ALLOW IN Anywhere 80/tcp ALLOW IN Anywhere 21/udp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6) 139 (v6) ALLOW IN Anywhere (v6) 445 (v6) ALLOW IN Anywhere (v6) 80/tcp (v6) ALLOW IN Anywhere (v6) 21/udp (v6) ALLOW IN Anywhere (v6) root@limelinux-server:~#使用以下命令拒絕服務傳入和傳出流量。
# ufw deny 80 # ufw deny 21如果要刪除HTTP允許的規則,只需在原始規則前加上delete即可。
#ufw delete allow http #ufw delete deny 21Advanced UFW rules還可以添加特定的IP位址以允許和拒絕訪問所有服務,運行以下命令以允許IP 192.168.0.200訪問伺服器上的所有服務:
# ufw allow from 192.168.0.200要拒絕IP 192.168.0.200訪問伺服器上的所有服務,請執行以下操作。
# ufw deny from 192.168.0.200可以在UFW中允許IP位址範圍,運行以下命令以允許從IP 192.168.1.1到192.168.1.254的所有連接。
# ufw allow from 192.168.1.0/24要允許IP位址192.168.1.200使用TCP訪問埠80,請運行以下linux命令。
# ufw allow from 192.168.1.200 to any port 80 proto tcp要允許訪問2000到3000之間的tcp和udp埠範圍,請運行以下linux命令。
# ufw allow 2000:3000/tcp # ufw allow 2000:3000/udp如果要阻止從IP 192.168.0.4和192.168.0.10訪問埠22,但允許所有其他IP訪問埠22,請運行以下命令。
# ufw deny from 192.168.0.4 to any port 22 # ufw deny from 192.168.0.10 to any port 22 # ufw allow from 192.168.0.0/24 to any port 22要允許網絡接口eth0上的HTTP通信,請運行以下linux命令。
# ufw allow in on eth0 to any port 80默認情況下,UFW允許ping請求,如果要拒絕ping請求,則需要編輯 /etc/ufw/before.rules 文件,刪除相關行,完成後並保存文件。
# nano /etc/ufw/before.rules #刪除以下行#-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如果需要重置UFW刪除所有規則,則可以通過以下linux命令來進行。
Configure NAT with UFW如果要對UFW從外部接口到內部的連接進行NAT,可以通過編輯/etc/default/ufw和/etc/ufw/before.rules文件來執行此操作。/etc/default/ufw 使用nano編輯器打開文件。
# nano /etc/default/ufwDEFAULT_FORWARD_POLICY="DROP" #更改為ACCEPT#DEFAULT_FORWARD_POLICY="ACCEPT" #還需要允許ipv4轉發,可以通過編輯 /etc/ufw/sysctl.conf 文件來做到這一點
#nano /etc/ufw/sysctl.confnet/ipv4/ip_forward=1 #默認沒有啟用將NAT添加到ufw的配置文件中,可以通過編輯 nano /etc/ufw/before.rules 文件,添加以下行。
# NAT table rules*nat:POSTROUTING ACCEPT [0:0]
# Forward traffic through eth0 - Change to match you out-interface-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't# be processedCOMMIT #這個在末尾一定不要刪除保存文件退出,需要重新啟動。
# ufw disable# ufw enableConfigure Port Forwarding with UFW如果想轉發來自公共IP的流量,例如 150.129.148.155 埠80和443連接到IP位址為192.168.1.120的另一臺內部伺服器,可以通過編輯文件 nano /etc/default/before.rules ,更改如下。
:PREROUTING ACCEPT [0:0] -A PREROUTING -i eth0 -d 150.129.148.155 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.120:80 -A PREROUTING -i eth0 -d 150.129.148.155 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.120:443 -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MASQUERADE重新啟動UFW。
# ufw disable# ufw enable接下來,還需要允許埠80和443通過防火牆。
# ufw allow proto tcp from any to 150.129.148.155 port 80# ufw allow proto tcp from any to 150.129.148.155 port 443翻譯自:
https://linuxconfig.org/how-to-install-and-use-ufw-firewall-on-linux
END