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