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