本篇內(nèi)容主要講解“Ubuntu中怎么使用iptables防火墻”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Ubuntu中怎么使用iptables防火墻”吧!
10年積累的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有東坡免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
iptables是整合在Linux操作系統(tǒng)中的防火墻軟件,絕大部分Ubuntu發(fā)行版都預(yù)裝了iptables。在一些非默認(rèn)安裝的Ubuntu系統(tǒng)或者容器環(huán)境中,可能沒(méi)有預(yù)裝iptables,我們可以通過(guò)下面的命令來(lái)安裝。
sudo apt-get install iptables iptables-persistent
安裝iptables之后,系統(tǒng)會(huì)提示我們是否保存當(dāng)前防火墻規(guī)則。如果我們要設(shè)置自己的防火墻規(guī)則,這時(shí)可以不用保存。
我們可以使用以下工具來(lái)檢測(cè)端口是否開(kāi)啟或關(guān)閉,用來(lái)測(cè)試iptables是否生效。
客戶端測(cè)試工具(Windows環(huán)境):
telnet [服務(wù)器IP] [端口號(hào)]
服務(wù)端測(cè)試工具(Linux系統(tǒng)):
sudo netstat -tulpn
sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
-A INPUT:添加一個(gè)INPUT類型的規(guī)則。最常見(jiàn)的規(guī)則類型有三種,分別是INPUT、OUTPUT和PREROUTING。
-p tcp:設(shè)置這條規(guī)則的協(xié)議為TCP協(xié)議。其他支持的協(xié)議還有udp、icmp和all。
-m tcp:使用tcp模塊。iptables通過(guò)模塊來(lái)擴(kuò)展功能特性,有些常用模塊是iptables預(yù)裝的,比如geoip模塊。
--dport 22:雙橫線--表示為前面使用的模塊的更多選項(xiàng)。在這個(gè)示例里,我們?cè)O(shè)置tcp模塊只應(yīng)用于22端口。
-m geoip:使用geoip模塊。這個(gè)模塊可以控制來(lái)自某個(gè)國(guó)家的網(wǎng)絡(luò)請(qǐng)求。
--src-cc PE:這個(gè)選項(xiàng)是讓geoip模塊限制從秘魯?shù)木W(wǎng)絡(luò)請(qǐng)求。PE是秘魯?shù)膰?guó)家編碼,這里可以替換成其他國(guó)家編碼。
-j ACCEPT:告訴iptables對(duì)滿足上述條件的請(qǐng)求如何處理。ACCEPT(接受)、ERJECT(拒絕)和DROP(丟棄)是三種常用的處理方式。
查看當(dāng)前規(guī)則:
sudo iptables -L
刪除某條規(guī)則(-D表示刪除):
sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT
清空當(dāng)前規(guī)則
sudo iptables -F
只清空OUTPUT類型的規(guī)則:
sudo iptables -F OUTPUT
在eth0接口允許SSH連接:
sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
注:如果要應(yīng)用于所有網(wǎng)絡(luò)接口,請(qǐng)刪除-i eth0指令。
允許特定IP進(jìn)行SSH連接(以10.0.3.1為例):
sudo iptables -A INPUT -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
設(shè)置默認(rèn)規(guī)則:
sudo iptables -P INPUT DROP sudo iptables -P FORWARD DROP sudo iptables -P OUTPUT ACCEPT
說(shuō)明:
-P INPUT DROP:表示丟棄所有流入請(qǐng)求,即無(wú)法訪問(wèn)云服務(wù)器上的任何服務(wù),如Apache、SQL等。
-P FORWARD DROP:表示丟棄所有轉(zhuǎn)發(fā)請(qǐng)求。
-P OUTPUT ACCEPT:表示接受所有流出請(qǐng)求。
接受所有的回環(huán)流量(推薦設(shè)置):
sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A OUTPUT -o lo -j ACCEPT
使用以下命令保存并加載iptables規(guī)則:
sudo netfilter-persistent save sudo netfilter-persistent reload
在容器環(huán)境中,上面的netfilter-persistent很可能無(wú)法生效,需要重新設(shè)置一下iptables。請(qǐng)執(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模塊接受相關(guān)的和已建立的請(qǐng)求:
sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
接受端口請(qǐng)求(如80端口):
sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
其他常見(jiàn)服務(wù)和端口:
服務(wù) | 協(xié)議 | 端口 |
---|---|---|
FTP | TCP | 20 & 21 |
HTTPS | TCP | 443 |
DHCP | TCP | 67 |
NTP | TCP | 123 |
允許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
端口轉(zhuǎn)發(fā)(把來(lái)自2200端口的請(qǐng)求轉(zhuǎn)發(fā)給10.0.3.21:22 ,多用于容器場(chǎng)景):
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22
創(chuàng)建SSH永久連接,阻止未經(jīng)允許的SSH登錄請(qǐng)求:
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
到此,相信大家對(duì)“Ubuntu中怎么使用iptables防火墻”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!