在本文中,我將向您展示如何在 Ubuntu 18.04 上設置 UFW 防火牆。 在 Ubuntu 中,默認防火牆是 UFW,縮寫為 簡單的防火牆. 它自 Ubuntu 18.04 發布以來一直存在,旨在簡化相當複雜的 iptables 配置。
在使用任何操作時,就係統安全而言,防火牆是必須考慮的最重要的功能之一。 防火牆是存在於您的 PC 和 Internet 之間的屏蔽或屏障,可阻止未經授權的流量(例如遠程訪問您的系統),並有助於防止惡意代碼不斷通過 Internet 傳播。 防火牆可以是硬件也可以是軟件。 硬件防火牆是一種獨立的防火牆系統,它放置在網絡中,通過控制進出網絡的流量以及阻止用戶訪問不需要的站點來添加保護層。 軟件防火牆內置於 Linux 和 Windows 等操作系統中,有助於保護您的系統免受外部攻擊。
另請閱讀:
- 如何在 Ubuntu UFW 防火牆上啟用、拒絕、允許、刪除規則
UFW的安裝
默認情況下,Ubuntu 18.04 安裝了 ufw。 但是,對於較早的系統,您必須運行以下命令
apt-get install ufw
要檢查 ufw 是否正在運行,請運行
systemctl status ufw
如果它正在運行,你應該得到下面的輸出
● ufw.service - Uncomplicated firewall
Loaded: loaded (/lib/systemd/system/ufw.service; enabled; vendor preset: enab
Active: active (exited) since Tue 2018-04-10 22:03:30 UTC; 4min 1s ago
Process: 376 ExecStart=/lib/ufw/ufw-init start quiet (code=exited, status=0/SU
Main PID: 376 (code=exited, status=0/SUCCESS)
Tasks: 0
Memory: 0B
CPU: 0
CGroup: /system.slice/ufw.service
Apr 10 22:03:30 ip-172-31-41-251 systemd[1]: Started Uncomplicated firewall.
Warning: Journal has been rotated since unit was started. Log output is incomple
檢查它是活動的還是非活動的運行
ufw status
如果它處於非活動狀態,您將獲得以下輸出
Status: inactive
使用運行的默認規則集打開 UFW
ufw enable
禁用防火牆運行
ufw disable
設置默認 ufw 規則
要設置允許所有傳出協議的默認規則,請以 root 身份登錄並運行
ufw default allow outgoing
輸出
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
要拒絕所有傳入連接,請運行
ufw default deny incoming
輸出
Default outgoing policy changed to 'deny'
(be sure to update your rules accordingly)
上述命令將允許所有傳出連接並拒絕或阻止所有傳入連接。
此時,您可能希望啟用防火牆,但在啟用之前,請先允許 ssh。 這可以防止與服務器斷開連接,因為我們之前指定了拒絕所有傳入連接。
要允許 ssh,請運行
ufw allow 22/tcp
外出
Skipping adding existing rule
Skipping adding existing rule (v6)
也可以通過服務名稱允許 ssh 訪問,
ufw allow ssh
如果要刪除規則運行
ufw delete allow 22/ssh
按名稱拒絕服務運行
ufw deny service-name
例如
ufw deny ssh
要查看系統中可以允許或拒絕的所有服務,請查看 /etc/services
文件。
cat /etc/services | less
樣本輸出
ftp-data 20/tcp
ftp 21/tcp
fsp 21/udp fspd
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rlp 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
tacacs 49/tcp # Login Host Protocol (TACACS)
tacacs 49/udp
re-mail-ck 50/tcp # Remote Mail Checking Protocol
re-mail-ck 50/udp
domain 53/tcp # Domain Name Server
domain 53/udp
啟動 ufw 防火牆
要以 root 身份激活防火牆登錄並運行以下命令:
ufw enable
您可能會收到以下警告提示
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
如果你選擇是,你會得到下面的輸出
Firewall is active and enabled on system startup
防火牆現在處於活動狀態,它將在每次啟動時啟動。 我們可以再看看防火牆規則:
ufw status
現在的輸出將顯示防火牆的狀態以及允許的服務/端口
輸出
ufw status active
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
允許 ufw 中的連接
您可以輕鬆地允許 ufw 中端口/範圍、應用程序名稱、IP 地址/子網的傳入連接。
查看下面的示例。
a) 按名稱或端口號/範圍允許應用程序
ufw allow service-name
或者
ufw allow port/tcp
為了 example
ufw allow ssh or ufw allow 22/tcp
ufw allow ftp or ufw allow 21/tcp
sudo ufw 允許 1500:2000/tcp
b) 允許 IP 地址/子網
下面的命令允許來自特定 IP 或子網的連接,我們也可以使用特定的端口號。
允許來自特定 IP 地址的連接
ufw allow from 10.200.20.45
指定允許連接到特定端口的 IP 運行
ufw allow from 10.200.20.45 to any port 22
以上只允許IP地址10.200.20.45通過ssh連接
要允許特定的 IP 子網連接到系統,請使用 CIDR 表示法指定網絡掩碼
ufw allow from 192.168.1.0/24
以上允許192.168.1到192.168.1.254的IP連接到系統
也可以指定子網的目的端口
ufw allow from 192.168.1.0/24 to any port 22
這意味著從 192.168.1 到 192.168.1.254 的 IP 可以通過 ssh 端口 22 連接到系統。
c) 通過接口名稱允許
如果我們需要允許通過接口名稱連接它可能
ufw allow in on eth0 to any port 80
如何拒絕ufw中的連接
默認情況下,ufw 配置為拒絕所有傳入連接。
a) IP 地址/子網
如果我們想阻止某些特定的 ip 地址訪問,我們可以通過以下命令來做到:
ufw deny from 192.168.1.15
這將阻止來自 IP 地址為 192.168.1.15 的主機的所有傳入連接
接下來讓我們阻止整個子網:
ufw deny from 150.165.125.0/24
這將阻止來自該子網的所有連接。
b) 拒絕端口和應用程序
拒絕端口或服務
ufw deny 80/tcp
或者
ufw deny http
sudo ufw deny 1500:2000/tcp *這將拒絕端口範圍*
刪除和跟踪規則
當您添加許多規則時,您可以通過查看它們的編號來更好地跟踪它們。 您可以通過以下命令獲取數字:
ufw status numbered
輸出
ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 22 ALLOW IN Anywhere
[ 3] 80/tcp ALLOW IN Anywhere
[ 4] 53/tcp ALLOW IN Anywhere
[ 5] 22/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 22 (v6) ALLOW IN Anywhere (v6)
[ 7] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 8] 53/tcp (v6) ALLOW IN Anywhere (v6)
假設我們要刪除規則編號 2。我們通過以下命令執行此操作:
ufw delete 2
筆記 :
刪除防火牆中的第二條規則後,規則 3 現在將成為新的規則 2。因此,如果要刪除當前規則 3,請使用編號 2 進行刪除。
ufw delete allow http
重置規則
如果您對當前規則不滿意,想要重新開始,可以通過運行
ufw reset
記錄和重新加載
要啟用日誌記錄,請使用以下命令:
ufw logging on
如果由於某種原因(不推薦)要禁用日誌記錄,可以使用以下命令:
sudo ufw 註銷
日誌默認在 /var/log/ufw.log
要實時查看它們,請像這樣使用 tail -f:
tail -f /var/log/ufw.log /pre>
You will see all actions of firewall in that file. If you need to reload firewall for some reason, because you changed some config files manually, use following command.
ufw reload
如果您想查看最近添加的規則
ufw show added
UFW 配置文件
對於大多數情況,您可以使用終端命令,但在某些情況下,您可能希望直接編輯配置文件。 ufw 有多個配置文件,即:
/etc/ufw/before.rules
/etc/ufw/before6.rules
這兩個文件包含在您通過 ufw 命令添加的所有規則之前評估的規則。 所以如果你想先應用一些規則,你就希望它在那裡。 第一個文件用於 ipv4,第二個文件用於 v6
/etc/ufw/after.rules
/etc/ufw/after6.rules
這些是在 ufw 命令規則之後評估的。 如果您想覆蓋某些規則並無論如何都應用它,那麼使用它們是很好的。 同樣,兩個文件,用於當前使用的兩個版本的 IP 協議。
/etc/default/ufw
這裡我們有 ufw 使用的內核模塊,以及其他常規設置。 您只能以 root 身份編輯任何此配置文件,並且您可以使用任何您喜歡的文本編輯器。
避免添加重複規則
接下來讓我們觀察針對重複規則的機制。 我們先打開101端口
sudo ufw allow 100
請注意,上面沒有協議的命令會同時打開 UDP 和 TCP 端口。 所以讓我們再次運行相同的命令看看會發生什麼
ufw allow 100
輸出
Skipping adding existing rule
Skipping adding existing rule (v6)
它不允許我們添加重複的規則。 這很好,但我們仍然有機會通過這一系列命令添加重複規則:
ufw allow 101/udp
ufw allow 101/tcp
在端口 101 上允許 TCP 和 UDP 後,我們仍然可以為所有協議添加開放端口 101,這是一個重複的規則,因為端口 101 被打開兩次,一次為每個協議,一次為所有協議。
ufw allow 101
這為錯誤留下了空間,通常這不是一個好習慣。 如果我們想將 101 端口恢復為默認值,我們需要使用 ufw delete 命令撤消所有三個命令。
要關閉某個端口,您可以運行相同的命令,只是允許,鍵入拒絕。
在本文中,我們介紹了 UFW 的使用,它是一種簡單的防火牆,用於允許或限制流量。 它是一個非常強大的防火牆,用於調節系統流量。 請隨意嘗試系統上的命令。