共計 2889 個字符,預計需要花費 8 分鐘才能閱讀完成。
本篇內容介紹了“ubuntu 怎么使用 iptables 防火墻”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
iptables 是整合在 Linux 操作系統(tǒng)中的防火墻軟件,絕大部分 Ubuntu 發(fā)行版都預裝了 iptables。在一些非默認安裝的 Ubuntu 系統(tǒng)或者容器環(huán)境中,可能沒有預裝 iptables,我們可以通過下面的命令來安裝。
sudo apt-get install iptables iptables-persistent
安裝 iptables 之后,系統(tǒng)會提示我們是否保存當前防火墻規(guī)則。如果我們要設置自己的防火墻規(guī)則,這時可以不用保存。
擴展:
1、端口測試工具
我們可以使用以下工具來檢測端口是否開啟或關閉,用來測試 iptables 是否生效。
客戶端測試工具(Windows 環(huán)境):
telnet [服務器 IP] [端口號]
服務端測試工具(Linux 系統(tǒng)):
sudo netstat -tulpn
2、iptables 的語法規(guī)則
sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
-A INPUT:添加一個 INPUT 類型的規(guī)則。最常見的規(guī)則類型有三種,分別是 INPUT、OUTPUT 和 PREROUTING。
-p tcp:設置這條規(guī)則的協(xié)議為 TCP 協(xié)議。其他支持的協(xié)議還有 udp、icmp 和 all。
-m tcp:使用 tcp 模塊。iptables 通過模塊來擴展功能特性,有些常用模塊是 iptables 預裝的,比如 geoip 模塊。
–dport 22:雙橫線 – 表示為前面使用的模塊的更多選項。在這個示例里,我們設置 tcp 模塊只應用于 22 端口。
-m geoip:使用 geoip 模塊。這個模塊可以控制來自某個國家的網絡請求。
–src-cc PE:這個選項是讓 geoip 模塊限制從秘魯?shù)木W絡請求。PE 是秘魯?shù)膰揖幋a,這里可以替換成其他國家編碼。
-j ACCEPT:告訴 iptables 對滿足上述條件的請求如何處理。ACCEPT(接受)、ERJECT(拒絕)和 DROP(丟棄)是三種常用的處理方式。
3、iptables 的基本命令
查看當前規(guī)則:
sudo iptables -L
刪除某條規(guī)則(- D 表示刪除):
sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT
清空當前規(guī)則
sudo iptables -F
只清空 OUTPUT 類型的規(guī)則:
sudo iptables -F OUTPUT
創(chuàng)建 iptables 規(guī)則
在 eth0 接口允許 SSH 連接:
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
注:如果要應用于所有網絡接口,請刪除 -i eth0 指令。
允許特定 IP 進行 SSH 連接(以 10.0.3.1 為例):
sudo iptables -A INPUT -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
設置默認規(guī)則:
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
說明:
-P INPUT DROP:表示丟棄所有流入請求,即無法訪問云服務器上的任何服務,如 Apache、SQL 等。
-P FORWARD DROP:表示丟棄所有轉發(fā)請求。
-P OUTPUT ACCEPT:表示接受所有流出請求。
接受所有的回環(huán)流量(推薦設置):
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
保存 iptables 規(guī)則
使用以下命令保存并加載 iptables 規(guī)則:
sudo netfilter-persistent save
sudo netfilter-persistent reload
在容器環(huán)境中,上面的 netfilter-persistent 很可能無法生效,需要重新設置一下 iptables。請執(zhí)行以下命令重新配置 iptables 安裝包:
sudo dpkg-reconfigure iptables-persistent
設置流出請求
允許 DNS 查詢:
sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
使用 state 模塊接受相關的和已建立的請求:
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
接受端口請求(如 80 端口):
sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
其他常見服務和端口:
服務協(xié)議端口 FTPTCP20 21HTTPSTCP443DHCPTCP67NTPTCP123
更多有用的規(guī)則
允許 Ping:
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
端口轉發(fā)(把來自 2200 端口的請求轉發(fā)給 10.0.3.21:22,多用于容器場景):
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22
創(chuàng)建 SSH 永久連接,阻止未經允許的 SSH 登錄請求:
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP
“ubuntu 怎么使用 iptables 防火墻”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!