天天看點

CentOS7 iptables

在CentOS7上預設安裝的是Firewalld防火牆,雖然在新的firewalld中對流量的文法和控制更加的簡單,也能讓管理者更加清晰的控制通路政策,但是對于大部分習慣使用iptables的使用者來說,使用原有的iptables 來控制更加順手。

在使用iptables 之前需要安裝iptables服務。

1

<code>yum </code><code>install</code> <code>iptables-services</code>

在沒有安裝iptables服務時,是沒有/etc/sysconfig/iptables檔案的,執行iptables-save也無法儲存。

管理iptables服務

在安裝了iptables服務後,可以檢視配置檔案資訊來确認通過哪種方式來添加規則:

2

3

4

<code>head</code> <code>-2 </code><code>/etc/sysconfig/iptables</code>

<code># sample configuration for iptables service</code>

<code># you can edit this manually or use system-config-firewall</code>

直接對檔案進行編輯,添加規則,添加完成之後,使用如下指令檢查配置文法是否正确:

<code>sh -c </code><code>'iptables-restore -t &lt; /etc/sysconfig/iptables'</code>

根據提示,可以對此檔案直接編輯,如果檔案說明是另一種情況:

<code># Firewall configuration written by system-config-firewall</code>

<code># Manual customization of this file is not recommended.</code>

那說明已經安裝了system-config-firewall管理工具,使用此工具可以直接對檔案進行管理,如果手動編輯,工具将會覆寫之前編輯的内容。

如果是這種情況,可以使用下面的指令對檔案進行編輯:

<code>system-config-firewall-tui</code>

<code>system-config-firewall</code>

當然,也可以使用iptables指令來逐條添加規則,使用如下指令來列印規則資訊和儲存規則到配置檔案中:

<code>iptables -S</code>

<code>iptables-save</code>

關閉Firewalld服務

在啟用iptables服務前,需要關閉并禁用firewalld的服務,以防發生沖突:

<code>systemctl stop firewalld</code>

<code>firewall-cmd --state</code>

關閉firewalld開機自啟動,并禁用手動啟動firewalld:

<code>systemctl disable firewalld</code>

<code>systemctl mask firewalld</code>

如果要恢複firewalld手動啟動:

<code>systemctl unmask firewalld</code>

生産環境iptables配置執行個體

對于通路量不高,安全要求比較高的web服務而暴露在公網的web伺服器(一般人不會這麼幹),可以使用如下規則:

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<code>iptables -I INPUT -p tcp -s 203.186.52.53 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT</code>

<code>     </code> 

<code>iptables -I OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT</code>

<code>       </code> 

<code>iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT</code>

<code>        </code> 

<code>iptables -I INPUT  -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT</code>

<code>iptables -I OUTPUT  -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT</code>

<code>         </code> 

<code>iptables -I INPUT -p icmp --icmp-</code><code>type</code> <code>echo</code><code>-request -j ACCEPT</code>

<code>iptables -I OUTPUT -p icmp --icmp-</code><code>type</code> <code>echo</code><code>-reply -j ACCEPT</code>

<code>iptables -I INPUT -i lo -j ACCEPT</code>

<code>iptables -I OUTPUT -o lo -j ACCEPT</code>

<code>iptables -I OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT</code>

<code>iptables -I INPUT -p udp -i eth0 --sport 53 -j ACCEPT</code>

<code>iptables -P INPUT DROP</code>

<code>iptables -P OUTPUT DROP</code>

檢視具體的配置資訊:

<code># iptables -S</code>

<code>-P INPUT DROP</code>

<code>-P FORWARD ACCEPT</code>

<code>-P OUTPUT DROP</code>

<code>-A INPUT -i eth0 -p udp -m udp --sport 53 -j ACCEPT</code>

<code>-A INPUT -i lo -j ACCEPT</code>

<code>-A INPUT -p icmp -m icmp --icmp-</code><code>type</code> <code>8 -j ACCEPT</code>

<code>-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT</code>

<code>-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT</code>

<code>-A INPUT -s 203.186.52.53 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT</code>

<code>-A OUTPUT -o eth0 -p udp -m udp --dport 53 -j ACCEPT</code>

<code>-A OUTPUT -o lo -j ACCEPT</code>

<code>-A OUTPUT -p icmp -m icmp --icmp-</code><code>type</code> <code>0 -j ACCEPT</code>

<code>-A OUTPUT -p tcp -m tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT</code>

使用iptables-save儲存配置即可。

警告:如果是遠端配置iptables,需要使用 iptables -F 時一定要先確定預設的 INPUT和OUTPUT 規則為ACCEPT,否則執行清空指令後,預設規則依然是DROP,不會被清除,将永遠與遠端主機斷開連接配接。

可借助crontab,每15分鐘恢複到預設,直到iptables配置完成。

參考連結:

 本文轉自 酥心糖 51CTO部落格,原文連結:http://blog.51cto.com/tryingstuff/1944082

繼續閱讀