十六、SELINUX、netfilter防火牆以及其iptables工具

SELINUX

關閉selinux有兩種方法:暫時關閉selinux防火牆,下次重啓後selinux還會開啓。#setenforce 0 #getenforce                    

#查看臨時關閉selinux的狀態命令永久關閉selinux       

#vi /etc/selinux/config       

#修改selinux的配置文件

更改“SELINUX=enforcing”爲 SELINUX=disabled  保存退出。

此處需要重啓。方能改成disabled.

[root@localhost ~]# /usr/sbin/sestatus -v   或者 #sestatus     

#查看selinux的狀態命令SELinux status:   disabled


2,netfliter 防火牆,以及其工具iptables

# iptables -nvL

nvL 就是查看規則,-n表示不針對IP反解析主機名;-L表示列出的意思;而-v表示列出的信息更加詳細。如果不加-t ,則打印filter表的相關信息。

#iptables -F 表示把所有規則全部刪除;

#iptables -Z表示把包以及流量計數器置零

-F 是把當前規則清除,但這個只是臨時的,重啓系統或者重啓 iptalbes 服務後還會加載已經保存的規則,所以需要使用 /etc/init.d/iptables save 保存一下規則,通過上邊的命令輸出我們也可以看到,防火牆規則保存在了/etc/sysconfig/iptables 你可以查看一下這個文件。

-A/-D :增加刪除一條規則;

-I :插入一條規則,其實跟-A的效果一樣;

-p :指定協議,可以是tcp,udp或者icmp;

--dport :跟-p一起使用,指定目標端口;

--sport :跟-p一起使用,指定源端口;

-s :指定源IP(可以是一個ip段);

-d :指定目的IP(可以是一個ip段);

-j :後跟動作,其中ACCEPT表示允許包,DROP表示丟掉包,REJECT表示拒絕包;

-i :指定網卡(不常用,但有時候能用到);

-P(大寫)後面跟鏈名,策略內容或者爲DROP或者爲ACCEPT,默認是ACCEPT。

注意:如果你在連接遠程服務器,千萬不要隨便敲這個命令,因爲一旦你敲完回車你就會斷掉。

這個策略一旦設定後,只能使用 iptables -P INPUT ACCEPT 才能恢復成原始狀態,而不能使用-F參數。


例子:

# iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP

這就是增加了一條規則,省略-t所以針對的是filter表。-A 表示增加一條規則,另外還有-I 表示插入一條規則,-D刪除一條規則;後面的INPUT即鏈名稱,還可以是OUTPUT或者FORWORD;-s 後跟源地址;-p 協議(tcp, udp, icmp); --sport/--dport 後跟源端口/目標端口;-d 後跟目的IP(主要針對內網或者外網);-j 後跟動作(DROP即把包丟掉,REJECT即包拒絕;ACCEPT即允許包)。


[root@localhost ~]# iptables -I INPUT -s 1.1.1.1 -j DROP

上例表示:插入一條規則,把來自1.1.1.1的所有數據包丟掉。

[root@localhost ~]# iptables -D INPUT -s 1.1.1.1 -j DROP

刪除剛剛插入的規則。注意要刪除一條規則時,必須和插入的規則一致,也就是說,兩條iptables命令,除了-I 和-D不一樣外,其他地方都一樣。

[root@localhost ~]# iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 -j DROP

上例表示把來自2.2.2.2 並且是tcp協議到本機的80端口的數據包丟掉。這裏要說的是,--dport/--sport 必須要和-p選項一起使用,否則會出錯。

[root@localhost ~]# iptables -p tc

這條規則表示,把發送到10.0.2.34的22端口的數據包丟掉。


iptables規則腳本設定

需求:只針對filter表,預設策略INPUT鏈DROP,其他兩個鏈ACCEPT,然後針對192.168.137.0/24開通22端口,對所有網段開放80端口,對所有網段開放21端口。這個需求不算複雜,但是因爲有多條規則,所以最好寫成腳本的形式。腳本內容如下:

# cat /usr/local/sbin/iptables.sh

#! /bin/bashipt="/sbin/iptables"

$ipt -F

$ipt -P INPUT DROP

$ipt -P OUTPUT ACCEPT

$ipt -P FORWARD ACCEPT

$ipt -A INPUT -s 192.168.137.0/24 -p tcp --dport 22 -j ACCEPT

$ipt -A INPUT -p tcp --dport 80 -j ACCEPT

$ipt -A INPUT -p tcp --dport 21 -j ACCEPT

完成腳本的編寫後,直接運行 

/bin/sh  /usr/local/sbin/iptables.sh 即可。如果想開機啓動時初始化防火牆規則,則需要在 /etc/rc.d/rc.local 中添加一行 

“/bin/sh /usr/local/sbin/iptables.sh”

保存以及備份iptalbes規則

設定的防火牆規則只是保存在內存中,並沒有保存到某一個文件中,也就說當系統重啓後以前設定的規則就沒有了,所以設定好規則後要先保存一下。

[root@localhost ~]# service iptables save

iptables:將防火牆規則保存到 /etc/sysconfig/iptables: [確定]

它會提示防火牆規則保存在了/etc/sysconfig/iptables文件內,這個文件就是iptables的配置文件了。所以日後,如果你遇到備份防火牆規則的任務,其實就是要拷貝一份這個文件的副本。

有時,我們會需要把防火牆所有規則都清除,使用 iptables -F 命令雖然可以,但是最好的辦法是把防火牆服務停止:

[root@localhost ~]# service iptables stop

iptables:清除防火牆規則:              [確定]

iptables:將鏈設置爲政策 ACCEPT:nat filter   [確定]

iptables:正在卸載模塊:               [確定]

這樣防火牆就失效了,但是一旦重新設定規則後(哪怕只有一條),防火牆服務會自動開啓。下面阿銘介紹給你一個用來備份防火牆規則的命令:

[root@localhost ~]# sh /usr/local/sbin/iptables.sh

[root@localhost ~]# iptables-save > myipt.rule

先執行一下剛纔我們寫的iptables腳本,使用 iptables-save 命令重定向到一個文件裏。要想恢復這些規則使用下面的命令即可:

[root@localhost ~]# iptables-restore < myipt.rule


http://blog.chinaunix.net/uid-X125X ... htmlX102X

參考資料


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章