1. 程式人生 > >iptables 常用操作

iptables 常用操作

防火墻 iptables

一、iptables默認配置

Centos 6.5 中iptables的默認設置:

~~~~~~~~~~~~~~~~~~~~~

:INPUT ACCEPT [0:0]
# 該規則表示INPUT表默認策略是ACCEPT

:FORWARD ACCEPT [0:0]
# 該規則表示FORWARD表默認策略是ACCEPT

:OUTPUT ACCEPT [0:0]
# 該規則表示OUTPUT表默認策略是ACCEPT

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 意思是允許進入的數據包只能是剛剛我發出去的數據包的回應,ESTABLISHED:已建立的鏈接狀態。RELATED:該數據包與本機發出的數據包有關。



-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
# 這兩條的意思是在INPUT表和FORWARD表中拒絕所有其他不符合上述任何一條規則的數據包。並且發送一條host prohibited的消息給被拒絕的主機。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


二、開啟防火墻,使用白名單,只允許指定主機訪問特定端口

紅色為添加內容,表示只允許25和26機器訪問2289端口,其他端口允許所有機器訪問

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp -s 10.4.106.25 --dport 2289 -j ACCEPT

-A INPUT -p tcp -s 10.4.106.26 --dport 2289 -j ACCEPT

-A INPUT -p tcp --dport 2289 -j REJECT

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

註意:原來倒數第二行已刪除:-A INPUT -j REJECT --reject-with icmp-host-prohibited

三、iptables原理

當主機收到一個數據包後,數據包先在內核空間中處理,若發現目的地址是自身,則傳到用戶空間中交給對應的應用程序處理,若發現目的不是自身,則會將包丟棄或進行轉發。

iptables實現防火墻功能的原理是:在數據包經過內核的過程中有五處關鍵地方,

分別是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,稱為鉤子函數,iptables這款用戶空間的軟件可以在這5處地方寫規則,對經過的數據包進行處理,規則一般的定義為“如果數據包頭符合這樣的條件,就這樣處理數據包”。

iptables中定義有5條鏈,說白了就是上面說的5個鉤子函數,因為每個鉤子函數中可以定義多條規則,每當數據包到達一個鉤子函數時,iptables就會從鉤子函數中第一條規則開始檢查,看該數據包是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該數據包;否則iptables將繼續檢查下一條規則,如果該數據包不符合鉤子函數中任一條規則,iptables就會根據該函數預先定義的默認策略來處理數據包

iptables中定義有表,分別表示提供的功能,有filter表(實現包過濾)、nat表(實現網絡地址轉換)、mangle表(實現包修改)、raw表(實現數據跟蹤),這些表具有一定的優先級:raw-->mangle-->nat-->filter

四、規則示例

如果做了WEB服務器,開啟80端口.

[[email protected] ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
如果做了郵件服務器,開啟25,110端口.

[[email protected] ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
[[email protected] ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT
如果做了FTP服務器,開啟21端口

[[email protected] ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT

如果做了DNS服務器,開啟53端口

[[email protected] ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT

如:我們只允許192.168.0.3的機器進行SSH連接

[[email protected] ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT

如果要允許,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

24表示子網掩碼數.但要記得把 /etc/sysconfig/iptables 裏的這一行刪了.

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 因為它表示所有地址都可以登陸.

或采用命令方式:

[[email protected] ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT

然後保存,我再說一邊,反是采用命令的方式,只在當時生效,如果想要重起後也起作用,那就要保存.寫入到/etc/sysconfig/iptables文件裏.

[[email protected] ~]# /etc/rc.d/init.d/iptables save


本文出自 “十年一劍--勁風” 博客,請務必保留此出處http://jingfeng.blog.51cto.com/9152964/1969470

iptables 常用操作