Iptables對(duì)于剛?cè)腴Tlinux的新手都比較難理解和配置。但是如果你掌握了其中的訣竅,你就會(huì)發(fā)現(xiàn)其實(shí)沒有那么難學(xué)。Iptables是linux的靜態(tài)防火墻,用來創(chuàng)建規(guī)則來過濾數(shù)據(jù)包和NAT模塊。簡單地說,Iptables為linux網(wǎng)絡(luò)連接的防火墻。
檢查Iptables是否安裝
在配置Iptables之前,我們首先得確認(rèn)Iptalbes是否已經(jīng)安裝了:
# rpm -qa | grep iptables
執(zhí)行命令后應(yīng)該會(huì)打印出iptables-your.installed.version這樣的信息。如果沒有,則表示沒有安裝,你可以下載最新的rpm軟件包通過命令rpm -Uvh iptables-downloaded.version.rpm安裝,或是直接使用yum安裝:
#yum install iptables
Iptables相關(guān)的文件
/etc/init.d/iptables:這個(gè)是用來開始、停止Iptables或是保存規(guī)則的初始化腳本。
/etc/sysconfig/iptables:所有的規(guī)則都保存在這個(gè)文件。
/sbin/iptables:是Iptables的二進(jìn)制文件。
在真正開始配置規(guī)則時(shí),我們先來看看當(dāng)前的配置:
#iptables -L
默認(rèn)的,當(dāng)前只有三條規(guī)則鏈:INPUT、OUTPU、FORWARD。INPUT規(guī)則鏈包含進(jìn)站數(shù)據(jù)包的規(guī)則,OUTPUT規(guī)則鏈包含出站數(shù)據(jù)包規(guī)則,F(xiàn)ORWARD規(guī)則鏈包含轉(zhuǎn)發(fā)數(shù)據(jù)包到其它主機(jī)的規(guī)則。
Iptables大多數(shù)用來配置處理從網(wǎng)絡(luò)進(jìn)入linux服務(wù)器的數(shù)據(jù)包,所以INPUT規(guī)則鏈經(jīng)常會(huì)到用到。當(dāng)有數(shù)據(jù)包通過linux核心,下面幾個(gè)指令會(huì)決定數(shù)據(jù)包被匹配之后如何處理。
ACCEPT: 數(shù)據(jù)包允許通過其到達(dá)目的地。
REJECT: 數(shù)據(jù)包被拒絕并返回給發(fā)數(shù)據(jù)包的主機(jī)一個(gè)簡單的解釋。
DROP: 數(shù)據(jù)包被拒絕不返回任何信息。
配置Iptables規(guī)則
在開始配置規(guī)則之前,有必要提出三點(diǎn)建議:
1、規(guī)則的順序很重要。比如一開始你就添加了一個(gè)阻止任何的規(guī)則,那么你下面的允許規(guī)則都不會(huì)起作用了。
2、你要記住編寫的規(guī)則是存儲(chǔ)在內(nèi)存中,不會(huì)自動(dòng)存儲(chǔ)磁盤,因此你重啟之后,規(guī)則就不會(huì)了,所以你需要手動(dòng)執(zhí)行初始化腳本來保存規(guī)則。
3、如果你是在遠(yuǎn)程來管理服務(wù)器,比如SSH,那么配置規(guī)則之前首先得添加允許ssh的規(guī)則,要不Iptables會(huì)把你阻止在外。
# iptables -A INPUT -s 213.10.10.13 -d 192.168.1.1 -p TCP -dport 22 -j ACCEPT
說明:
-A:附加INPUT規(guī)則鏈;
-s: 來源IP,例子中就是你當(dāng)前登錄ssh所用的電腦IP;
-d:目的地址,例子中就是服務(wù)器IP
-p:通信協(xié)議
–dport:目的端口,例子中是ssh默認(rèn)端口22;
-j:代表“Jump”,所以之前的規(guī)則都匹配,則接受數(shù)據(jù)包。
下面讓我們來為一般的數(shù)據(jù)包設(shè)置基本的規(guī)則。Iptables的特性之一是能確定數(shù)據(jù)包的狀態(tài)。下面是在一個(gè)新的連接的數(shù)據(jù)包狀態(tài):
NEW:第一服務(wù)器發(fā)送給第二服務(wù)器一個(gè)SYN數(shù)據(jù)包來新建一個(gè)連接。
RELATED: 第二服務(wù)器接收SYN數(shù)據(jù)包并發(fā)送給第一服務(wù)器一個(gè)SYN-ACK數(shù)據(jù)包來確定連接正常。
ESTABLISHED: 第一服務(wù)器接收到SYN-ACK數(shù)據(jù)包并發(fā)送給第二服務(wù)器ACK服務(wù)器來做最后的確認(rèn),至此連接建立完成,兩臺(tái)服務(wù)器開始傳輸數(shù)據(jù)。
為了讓你的服務(wù)器能與其它服務(wù)器建立TCP連接,Iptables必須配置如下:
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT -m state --state RELATED,ESTABLISHED
自定義規(guī)則
阻止IP:
# iptables -A INPUT -s 213.10.10.13 -j DROP
這條規(guī)則表示阻止從IP213.10.10.13傳進(jìn)來的數(shù)據(jù)包。
# iptables -A INPUT -d 192.168.1.15 -j REJECT
這條規(guī)則表示阻止從局域網(wǎng)IP192.168.1.15來的數(shù)據(jù)包。
允許IP:
# iptables -A INPUT -s 213.10.10.13 -d 192.168.1.4 -p tcp --dport 21
這條規(guī)則表示接受來自IP 213.10.10.13到目標(biāo)地址FTP服務(wù)器192.168.1.4的數(shù)據(jù)包。
當(dāng)你配置來必要的規(guī)則之后,到時(shí)候在最后增加拒絕所有的規(guī)則了:
# iptables -A INPUT -j REJECT
# iptables -A FORWARD -j REJECT
這些規(guī)則必須在最后添加。
要?jiǎng)h除一個(gè)規(guī)則,只需把”-A”替換成”-D”即可。
保存規(guī)則
為了保存Iptables規(guī)則,只需執(zhí)行以下命令:
# /etc/init.d/iptables save
停止Iptables來刷新所有規(guī)則:
# /etc/init.d/iptables stop
重新啟動(dòng)Iptables從/etc/sysconfig/iptables加載最新規(guī)則:
# /etc/init.d/iptables start
這只是一個(gè)基礎(chǔ)的Iptables教程,適合配置比較簡單的規(guī)則,如果需要配置復(fù)雜的規(guī)則,還需要深入的學(xué)習(xí)。
新聞熱點(diǎn)
疑難解答