學(xué)習(xí)啦 > 學(xué)習(xí)電腦 > 電腦安全 > 防火墻知識(shí) > iptables如何制作簡單防火墻

iptables如何制作簡單防火墻

時(shí)間: 林輝766 分享

iptables如何制作簡單防火墻

  想用iptables制作簡單防火墻來玩玩,有什么方法呢?下面由學(xué)習(xí)啦小編給你做出詳細(xì)的iptables制作簡單防火墻方法介紹!希望對(duì)你有幫助!

  iptables制作簡單防火墻方法一:

  在Ubuntu 14.04中配置IPTables的規(guī)則。

  IPTables基本命令

  在向大家介紹復(fù)雜防火墻規(guī)則之前,還是先上一些簡單的料,讓大家對(duì)IPTables最為基本的命令有一些簡單了解。

  首先要說明的是IPTables命令必需以root權(quán)限運(yùn)行,這意味著需要使用root身份登錄或者能夠有權(quán)限使用su或sudo -i取得root Shell。下面的內(nèi)容中都使用sudo,這也是Ubuntu系統(tǒng)上的首選方法。

  最好的起點(diǎn)就是先通過“-L”參數(shù)來查看下當(dāng)前系統(tǒng)的所有IPTables規(guī)則:

  sudo iptables -L

  可以看到Linux中都有的3個(gè)常用默認(rèn)鏈(INPUT、OUTPUT和FORWARD),同時(shí)也可以看到每個(gè)鏈的缺省策略(每個(gè)鏈對(duì)默認(rèn)策略都是接受),在此可以看到Ubuntu中并沒有添加任何默認(rèn)規(guī)則集。

  如果希望通過命令來查看每個(gè)鏈的默認(rèn)規(guī)則,可以使用“-S”參數(shù):

  sudo iptables -S

  如果看到IPTables里面已經(jīng)有規(guī)則了,并希望取消這些規(guī)則后重新更配置話,可以使用“-F”參數(shù)來清空已有的規(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)在就要開始為的VPS創(chuàng)建自定義的防火墻規(guī)則啦,正如上篇文章中所說,由于INPUT鏈會(huì)處理所有連接到服務(wù)器的入站數(shù)據(jù)包,因此的所有操作都與INPUT鏈有關(guān)?,F(xiàn)在先來配置服務(wù)器允許SSH連接。

  完整命令應(yīng)該是這樣的:

  sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  說明:

  -A INPUT :表明要將此規(guī)則追加到某個(gè)鏈的最后,由于要操作INPUT鏈接,所以這么寫。

  -m conntrack :iptables除了自己的核心功能外還只有一些實(shí)用的擴(kuò)展和模塊,這個(gè)參數(shù)表明添加conntrack模塊提供的能力。(conntrack模塊可以根據(jù)先前的連接來確定數(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ù)包通過。

  配置好后來看一下:

  sudo iptables -L

  現(xiàn)在,應(yīng)該已經(jīng)知道IPTables的基本語法了,下面繼續(xù)添加規(guī)則打怪,以期盡快升級(jí)為高手。

  接受其它必要連接

  大家的VPS上一般SSH服務(wù)的22端口,Web服務(wù)器的80端口及Mysql的3306端口都是需要打開的,不然怎么對(duì)外提供服務(wù)呢。因此也需要通過如下命令在IPTables中打開這些端口:

  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種常用模式說明一下。一種是明確定義允許通過防火墻的規(guī)則,不匹配的都丟棄。另外一種是明確定義拒絕通過防火墻的規(guī)則,其余的都允許。的前提假設(shè)采用的就是第一種方式,這樣配置起來相對(duì)簡單,規(guī)則也較少,也更加安全。

  前面已經(jīng)為INPUT鏈接定義了一些允許規(guī)則,但默認(rèn)INPUT鏈?zhǔn)窃试S所有包,所以現(xiàn)在需要將INPUT鏈的默認(rèn)規(guī)則更改為“Drop”即丟棄。通過如下命令完成更改:

  sudo iptables -P INPUT DROP

  查看和保存配置

  IPTables的配置是立即生效的,前面已經(jīng)介紹過,在配置好之后可以直接用“-L”參數(shù)進(jìn)行查看,這里再另外增加一個(gè)“–line-numbers”參數(shù),它主要用于顯示行數(shù),對(duì)于規(guī)則較多時(shí)的查看非常方便。

  sudo iptables -L --line-numbers

  雖然IPTables的命令執(zhí)行后會(huì)立即生效,但這個(gè)生效過程其實(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ì)詢問是否對(duì)IPTables配置進(jìn)行保存,如果確定的話選擇“是”即可。保存后下次重啟系統(tǒng)也不會(huì)造成配置丟失了。

  iptables制作簡單防火墻方法二:

  簡單規(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、開啟所需要的端口 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ù)器端口服務(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如何制作簡單防火墻 ”文章的還看了:

1.C++怎樣制作防火墻

2.怎么知道Linux系統(tǒng)中毒

3.CentOS6.5怎么樣設(shè)置

781354