iptables

Iptables原理
現在防火牆主要分以下三種類型:包過濾、應用代理、狀態檢測
包過濾防火牆:現在靜態包過濾防火牆市面上已經看不到了,取而代之的是動態包過濾技術的防火牆哈~
代理防火牆:因一些特殊的報文***可以輕鬆突破包過濾防火牆的保護,比如大家知道的SYN***、ICMP洪水***,所以以代理服務器作爲專門爲用戶保密或者突破訪問限制的數據轉發通道的應用代理防火牆出現了哈~其使用了一種應用協議分析的新技術。
狀態檢測防火牆:其基於動態包過濾技術發展而來,加入了一種狀態檢測的模塊,進一點發展了會話過濾功能,會話狀態的保留是有時間限制的,此防火牆還可以對包的內容進行分析,從而避免開放過多的端口。
netfilter/iptables IP數據包過濾系統實際上由netfilter和iptables兩個組件構成。netfilter是集成在內核中的一部分,其作用是定義、保存相應的規則,而iptables是一種工具,用來修改信息的過濾規則及其他配置,我們可以通過iptables來設置一些適合我們企業需求環境的規則哈~,而這些規則會保存在內核空間之中。
netfilter是Linux核心中的一個通用架構,其提供了一系列的表(tables),每個表由若干個鏈(chains)組成,而每條鏈可以由一條或若干條規則(rules)組成。實際上netfilter是表的容器,表是鏈的容器,而鏈又是規則的容器。

1、禁止ping(禁止ping出去,也禁止ping進來)

[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j DROP

[root@localhost ~]# ping 192.168.101.1

爲了讓本地(ping 127.0.0.1)能ping通,添加以下規則(規則有順序的,匹配了某條規則,就不會繼續往下匹配)

[root@localhost ~]# iptables –A INPUT -p icmp -i lo -j ACCEPT //追加一條規則到某個鏈,默認在最後一行插入規則(所以這樣做是行不通的)

[root@localhost ~]# iptables -I INPUT -p icmp -i lo -j ACCEPT //默認在規則表最前面插入新規則

或者

[root@localhost ~]# iptables –I 1 INPUT -p icmp -i lo -j ACCEPT //把規則放到第一行,原來的第一行變第二行

2、允許ping 127.0.0.1 允許 ping 192.168.101.0/24 ,其他服務都禁止

[root@localhost ~]# iptables -A INPUT -p icmp -i lo -j ACCEPT

[root@localhost ~]# iptables -A INPUT -p icmp -s 192.168.101.0/255.255.255.0 -j ACCEPT

[root@localhost ~]# iptables -A INPUT -j DROP

或者

[root@localhost ~]# iptables -P INPUT DROP //定義默認策略,當在規則表裏找不到匹配的規則就採取策略的動作

[root@localhost ~]# iptables -A INPUT -p icmp -i lo -j ACCEPT

[root@localhost ~]# iptables -A INPUT -p icmp -s 10.1.1.0/255.255.255.0 -j ACCEPT

3、只允許訪問本機的SSH服務(只允許遠程SSH登錄到本機)

[root@localhost ~]# iptables -P INPUT DROP

[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT //--dport定義端口的參數

定義源端口 --source-port --sport

定義目的端口 --destination-port –dpor

4、定義連續端口

[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:100 -j ACCEPT //允許訪問 20100的端口

5、定義多端口

[root@localhost ~]# iptables -A INPUT -m multiport -p tcp --dports 22,80,110 -j ACCEPT

-m 指定模塊 multiport 指定多端口的擴展模塊

6、允許和內網的客戶(192.168.101.0/24)進行傳輸數據(包括ping

[root@localhost ~]# iptables -P INPUT DROP

[root@localhost ~]# iptables -A INPUT -p ALL -i eth0 -s 192.168.101.0/24 -j ACCEPT

7、拒絕訪問192.168.101.100

[root@localhost ~]# iptables -A OUTPUT -d 192.168.101.100 -j DROP

clip_image002

8、通過硬件地址進行過濾

-m mac --mac-source [!] address

[root@localhost ~]# iptables -A INPUT -m mac --mac-source 00-50-56-C0-00-01 -p icmp -j REJECT //vmnet1物理地址

9、定義連續的ip地址

[root@localhost ~]# iptables -A INPUT -m iprange --src-range 192.168.101.1-192.168.101.99 -j DROP

10、允許內網主機登錄MSNQQ相關設置

QQ能夠使用TCP808000443UDP80004000登錄,而MSN通過TCP1863443驗證。因此只需要允許這些端口的FORWARD轉發即可以正常登錄。

iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT

iptables -A FORWARD -p tcp --dport 443 -j ACCEPT

iptables -A FORWARD -p tcp --dport 8000 -j ACCEPT

iptables -A FORWARD -p udp --dport 8000 -j ACCEPT

iptables -A FORWARD -p udp --dport 4000 -j ACCEPT

11、允許內網主機收發郵件

客戶端發送郵件時訪問郵件服務器的TCP25端口。接收郵件時訪問,可能使用的端口則較多,UDP協議以及TCP協議的端口:110143993995

smtp:
[root@localhost ~]#
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT

pop3:
[root@localhost ~]#
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
[root@localhost ~]#
iptables -A FORWARD -p udp --dport 110 -j ACCEPT

imap:
[root@localhost ~]#
iptables -A FORWARD -p tcp --dport 143 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p udp --dport 143 -j ACCEPT

imaps:
[root@localhost ~]#
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT
[root@localhost ~]#
iptables -A FORWARD -p udp --dport 993 -j ACCEPT

pop3s:
[root@localhost ~]# iptables -A FORWARD -p tcp --dport 995 -j ACCEPT
[root@localhost ~]# iptables -A FORWARD -p udp --dport 995 -j ACCEPT

12NAT端口映射設置

由於局域網的地址爲私網地址,在公網上不合法哈~所以必須將私網地址轉爲服務器的外部地址進行地址映射哈~連接外網接口爲ppp0

iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE

13、內網機器對外發布WEB網站

內網WEB服務器IP地址爲192.168.0.3,我們需要進行如下配置哈~,當公網客戶端訪問服務器時,防火牆將請求映射到內網的192.168.0.380端口

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80

14DNS相關設置

爲了客戶端能夠正常使用域名訪問互聯網,我們還需要允許內網計算機與外部DNS服務器的數據轉發。

開啓DNS使用UDPTCP53端口

iptables -A FORWARD -p tcp --dport 53 -j ACCEPT

iptables -A FORWARD -p udp --dport 53 -j ACCEPT

15、保存與恢復iptables配置

保存:iptables-save

iptables-save [-c] [-t 表名]

-c:保存包和字節計數器的值。可以使在重啓防火牆後不丟失對包和字節的統計

-t:用來保存哪張表的規則,如果不跟-t參數則保存所有的表

可以使用重定向命令來保存這些規則集

iptables-save > /etc/iptables-save

恢復:iptables-restore

iptables-restore [-c] [-n]

-c:如果加上-c參數則表示要求裝入包和字節計數器

-n:表示不覆蓋己有的表或表內的規則,默認情況下是清除所有己存在的規則

使用重定向來恢復由iptables-save保存的規則集

iptables-restore > /etc/iptables-save

如果要在服務或系統重啓後依然生效

service iptables save

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