iptables如何制作簡(jiǎn)單防火墻
iptables如何制作簡(jiǎn)單防火墻
想用iptables制作簡(jiǎn)單防火墻來(lái)玩玩,有什么方法呢?下面由學(xué)習(xí)啦小編給你做出詳細(xì)的iptables制作簡(jiǎn)單防火墻方法介紹!希望對(duì)你有幫助!
iptables制作簡(jiǎn)單防火墻方法一:
在Ubuntu 14.04中配置IPTables的規(guī)則。
IPTables基本命令
在向大家介紹復(fù)雜防火墻規(guī)則之前,還是先上一些簡(jiǎn)單的料,讓大家對(duì)IPTables最為基本的命令有一些簡(jiǎn)單了解。
首先要說(shuō)明的是IPTables命令必需以root權(quán)限運(yùn)行,這意味著需要使用root身份登錄或者能夠有權(quán)限使用su或sudo -i取得root Shell。下面的內(nèi)容中都使用sudo,這也是Ubuntu系統(tǒng)上的首選方法。
最好的起點(diǎn)就是先通過(guò)“-L”參數(shù)來(lái)查看下當(dāng)前系統(tǒng)的所有IPTables規(guī)則:
sudo iptables -L
可以看到Linux中都有的3個(gè)常用默認(rèn)鏈(INPUT、OUTPUT和FORWARD),同時(shí)也可以看到每個(gè)鏈的缺省策略(每個(gè)鏈對(duì)默認(rèn)策略都是接受),在此可以看到Ubuntu中并沒(méi)有添加任何默認(rèn)規(guī)則集。
如果希望通過(guò)命令來(lái)查看每個(gè)鏈的默認(rèn)規(guī)則,可以使用“-S”參數(shù):
sudo iptables -S
如果看到IPTables里面已經(jīng)有規(guī)則了,并希望取消這些規(guī)則后重新更配置話,可以使用“-F”參數(shù)來(lái)清空已有的規(guī)則集:
sudo iptables -F
雖然“-F”參數(shù)可以清空并刷新鏈中所有的現(xiàn)有規(guī)則集,但并不會(huì)對(duì)鏈的默認(rèn)策略進(jìn)行更改。因此,如果是在更改遠(yuǎn)程VPS防火墻策略的話需要在“-F”清空所有規(guī)則時(shí)先將INPUT和OUTPUT鏈的默認(rèn)策略恢復(fù)到ACCEPT,以免規(guī)則清空后SSH連接被阻斷。要做到這一點(diǎn)可執(zhí)行如下命令:
sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
在配置好允許SSH連接后(下面介紹),再將INPUT和OUTPUT鏈的默認(rèn)規(guī)則更改為DROP即可。
創(chuàng)建自已的IPTables規(guī)則
現(xiàn)在就要開(kāi)始為的VPS創(chuàng)建自定義的防火墻規(guī)則啦,正如上篇文章中所說(shuō),由于INPUT鏈會(huì)處理所有連接到服務(wù)器的入站數(shù)據(jù)包,因此的所有操作都與INPUT鏈有關(guān)?,F(xiàn)在先來(lái)配置服務(wù)器允許SSH連接。
完整命令應(yīng)該是這樣的:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
說(shuō)明:
-A INPUT :表明要將此規(guī)則追加到某個(gè)鏈的最后,由于要操作INPUT鏈接,所以這么寫(xiě)。
-m conntrack :iptables除了自己的核心功能外還只有一些實(shí)用的擴(kuò)展和模塊,這個(gè)參數(shù)表明添加conntrack模塊提供的能力。(conntrack模塊可以根據(jù)先前的連接來(lái)確定數(shù)據(jù)包之間的關(guān)系)
–ctstate :該參數(shù)是conntrack模塊提供的,它可以確定如何用現(xiàn)在的數(shù)據(jù)包去匹配先前獲得的數(shù)據(jù)包。ESTABLISHED值將自動(dòng)允許現(xiàn)有連接的數(shù)據(jù)包,RELATED值將允許已建立連接的相關(guān)數(shù)據(jù)包。(這樣就與SSH會(huì)話特性相匹配上了)
-j ACCEPT :這個(gè)參數(shù)用于指定匹配的數(shù)據(jù)包的目標(biāo)。用在這里表示接受和允許符合上述標(biāo)準(zhǔn)的數(shù)據(jù)包通過(guò)。
配置好后來(lái)看一下:
sudo iptables -L
現(xiàn)在,應(yīng)該已經(jīng)知道IPTables的基本語(yǔ)法了,下面繼續(xù)添加規(guī)則打怪,以期盡快升級(jí)為高手。
接受其它必要連接
大家的VPS上一般SSH服務(wù)的22端口,Web服務(wù)器的80端口及Mysql的3306端口都是需要打開(kāi)的,不然怎么對(duì)外提供服務(wù)呢。因此也需要通過(guò)如下命令在IPTables中打開(kāi)這些端口:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
為了保證的VPS能夠正常運(yùn)行,還需要添加一條允許規(guī)則。通常,計(jì)算機(jī)上的服務(wù)都會(huì)發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包以保持彼此之間的通信。而這種通信會(huì)利用到一個(gè)名叫l(wèi)oopback的偽網(wǎng)卡將流量引導(dǎo)回自己。因此,還需要為loopback網(wǎng)卡添加一條允許規(guī)則。
sudo iptables -I INPUT 1 -i lo -j ACCEPT
-I INPUT 1 :與“-A”不同,它可以指定要將規(guī)則添加到該鏈的位置。
實(shí)施Drop規(guī)則
前面講的內(nèi)容其實(shí)都是基于一個(gè)前提假設(shè)的,但事先需要先把防火墻的2種常用模式說(shuō)明一下。一種是明確定義允許通過(guò)防火墻的規(guī)則,不匹配的都丟棄。另外一種是明確定義拒絕通過(guò)防火墻的規(guī)則,其余的都允許。的前提假設(shè)采用的就是第一種方式,這樣配置起來(lái)相對(duì)簡(jiǎn)單,規(guī)則也較少,也更加安全。
前面已經(jīng)為INPUT鏈接定義了一些允許規(guī)則,但默認(rèn)INPUT鏈?zhǔn)窃试S所有包,所以現(xiàn)在需要將INPUT鏈的默認(rèn)規(guī)則更改為“Drop”即丟棄。通過(guò)如下命令完成更改:
sudo iptables -P INPUT DROP
查看和保存配置
IPTables的配置是立即生效的,前面已經(jīng)介紹過(guò),在配置好之后可以直接用“-L”參數(shù)進(jìn)行查看,這里再另外增加一個(gè)“–line-numbers”參數(shù),它主要用于顯示行數(shù),對(duì)于規(guī)則較多時(shí)的查看非常方便。
sudo iptables -L --line-numbers
雖然IPTables的命令執(zhí)行后會(huì)立即生效,但這個(gè)生效過(guò)程其實(shí)是臨時(shí)的,系統(tǒng)在重啟之后便會(huì)丟失。因此,還需要將這些配置添加到配置文件當(dāng)中,以保證系統(tǒng)在下次重啟后會(huì)自動(dòng)載入的IPTables防火墻規(guī)則。
sudo apt-get update
sudo apt-get install iptables-persistent
該命令腳本下載執(zhí)行后會(huì)詢問(wèn)是否對(duì)IPTables配置進(jìn)行保存,如果確定的話選擇“是”即可。保存后下次重啟系統(tǒng)也不會(huì)造成配置丟失了。
iptables制作簡(jiǎn)單防火墻方法二:
簡(jiǎn)單規(guī)則: iptables -p INPUT DROP iptables -p OUTPUT ACCEPT iptables -p FORWARD DROP
1、防止外網(wǎng)用內(nèi)網(wǎng)IP欺騙 iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 查看nat規(guī)則 iptables -t nat -L
2、如果想取消上面所加的規(guī)則: iptables -F -t nat iptables -X -t nat iptables -Z -t nat 3、阻止一個(gè)IP連接本機(jī) iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
4、查看本機(jī)的IPTABLES的所填規(guī)則 iptables -L -n
5、清除filter中所有的規(guī)則連接 iptables -F 清除filter中使用者自定義連接中的規(guī)則 iptables -X
6、保存所修改的iptables /etc/init.d/iptables save 或者 /etc/rc.d/init.d/iptables save 視linux版本而定 重新啟動(dòng)iptables服務(wù) service iptables restart 或者 /etc/init.d/iptables restart 視linux版本而定
7、關(guān)閉不安全的端口連接本機(jī) iptables -A OUTPUT -p tcp --sport 31337 -j DROP iptables -A OUTPUT -p tcp --dport 31337 -j DROP 8、開(kāi)啟所需要的端口 22 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 80 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT 9、禁止一個(gè)IP或者一個(gè)IP段訪問(wèn)服務(wù)器端口服務(wù) 80端口 iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp --dport http -j DROPFTP端口 iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp --dport ftp -j DROP
看了“iptables如何制作簡(jiǎn)單防火墻 ”文章的還看了: