1. 程式人生 > >linux系統iptables的使用

linux系統iptables的使用

防火墻 iptables firewalld

一,iptables和firewalld比較

在CentOS 7系統中,firewalld防火墻取代了iptables防火墻。其實,iptables與firewalld都不是真正的防火墻,它們都只是用來定義防火墻策略的防火墻管理工具或者服務。
iptables服務會把配置好的防火墻策略交由內核層面的netfilter網絡過濾器來處理,而firewalld服務則是把配置好的防火墻策略交由內核層面的nftables包過濾框架來處理。換句話說,當前在Linux系統中其實存在多個防火墻管理工具,旨在方便運維人員管理Linux系統中的防火墻策略,我們只需要配置妥當其中的一個就足夠了。雖然這些工具各有優劣,但它們在防火墻策略的配置思路上是保持一致的。

二,iptables語法

語法:

iptables (選項) (參數)

iptables命令選項輸入順序:

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 觸發動作(目標值)

註:
-t(table) 表 四表:filter,nat,mangle,raw (默認表是filter)
-A(append) 追加添加 -I(insert)插入 行號 -D(delete)刪除 行號 -R(replace)替換

-i(in-interface)流入接口 -o(out-interface)流出接口
-p(protocol) 協議 tcp, udp, udplite, icmp等
-s(source) 源地址 --sport(source port)源端口
-d(destination)目標地址 --dport(destination port) 目標端口
-j(jump) 執行 ACCPET/DROP/REJECT/DNAT/SNAT/MASQUERADE/REDIRECT/LOG(必須大寫)

三,iptables工作流程

技術分享圖片
iptables過濾的規則順序是:

由上至下,匹配即停止。
iptables有四表和五鏈:(鏈名必須大寫)
四表:
filter(過濾規則表):(默認)INPUT,OUPUT,FORWARD
nat(地址轉發規則表):PREROUTING,OUTPUT,POSTROUTING
mangle(修改數據位規則表):PREROUTING,INPUT,OUPUT,FORWARD,POSTROUTING
raw(跟蹤數據表規則表):PRERONTING,OUTOUT

五鏈:PREROUTING(路由前過濾),INPUT(入站過濾),OUTPUT(出站過濾),FORWARD(轉發過濾),POSTROUTING(路由後過濾)

四,iptables命令

以下配置的系統環境:redhat6.7

[root@host61 ~]# cat /etc/redhat-release    
Red Hat Enterprise Linux Server release 6.7 (Santiago)

首先是防火墻服務的啟動停止:

service iptables save | stop | start | restart | status | save  //CentOS6保存,停止,啟動,重啟,查看狀態,保存
chkconfig iptables on| off  //開機自起或關閉
systemctl stop | start | restart | status   firewalld  //CentOS7停止,啟動,重啟,查看狀態
systemctl enable | disable firewalld   //開機自起或關閉

1.主機型防火墻
技術分享圖片
每次配置完後需要保存配置:
/etc/init.d/iptables save 或者 serveice iptables save

1.1 在61主機上開啟iptables服務。只允許192.168.4.254的主機訪問自己的ssh服務。

[root@host61 ~]# iptables -F
[root@host61 ~]# iptables  -t  filter  -A  INPUT  -s  192.168.4.254 -p tcp  --dport 22  -j ACCEPT
[root@host61 ~]# iptables  -t  filter   -P  INPUT  DROP
[root@host61 ~]# serveice iptables save
[root@host61 ~]# iptables  -t  filter  -nL  INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.4.254        0.0.0.0/0           tcp dpt:22 

1.2 在61主機上添加1條新的規則,允許網絡中的所有主機訪問本機的網站服務。

[root@host61 ~]# iptables  -t  filter  -A  INPUT    -p tcp  --dport  80  -j   ACCEPT
[root@host61 ~]# serveice iptables save
[root@host61 ~]# iptables  -t  filter  -nL  INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.4.254        0.0.0.0/0           tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

1.3 在61主機上添加1條新的規則,不允許192.168.4.62主機訪問本機的網站服務。

[root@host61 ~]# iptables  -t  filter  -I  INPUT  2  -s  192.168.4.62  -p tcp  --dport  80  -j  ACCEPT
[root@host61 ~]# serveice iptables save
[root@host61 ~]# iptables  -t  filter  -nL  INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.4.254        0.0.0.0/0           tcp dpt:22 
ACCEPT     tcp  --  192.168.4.62         0.0.0.0/0           tcp dpt:80 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 

1.4 在61主機上添加新的規則,61可以ping網絡中的其他主機 ,但其他主機不可以ping61主機。

[root@host61 ~]# iptables  -t  filter  -A  INPUT  -p  icmp   --icmp-type  echo-reply  -j  ACCEPT
[root@host61 ~]# serveice iptables save
[root@host61 ~]# iptables  -t  filter  -nL  INPUT
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  192.168.4.254        0.0.0.0/0           tcp dpt:22 
ACCEPT     tcp  --  192.168.4.62         0.0.0.0/0           tcp dpt:80 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 0

2.網絡型型防火墻
技術分享圖片
註:主機65和67的網關是192.168.4.68
2.1 讓局域網內所有的主機共享一個公網ip地址上網。

[root@host68 ~]# iptables -F
[root@host68 ~]# iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j SNAT --to-source 192.168.2.68
[root@host68 ~]# iptables -t nat -nL POSTROUTING 
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.4.0/24       0.0.0.0/0           to:192.168.2.68

2.2 發布局域網內的網站服務。

[root@host68 ~]# iptables -t nat -A PREROUTING -i eth1 -d 192.168.2.68 -p tcp --dport 80 -j DNAT --to-destination 192.168.4.67
[root@host68 ~]# iptables -t nat -nL PREROUTING 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            192.168.2.68        tcp dpt:80 to:192.168.4.67

共勉:I hear and I forget , I see and I remember, I do and I understand!

參考資料:
http://man.linuxde.net/iptables
https://www.cnblogs.com/alimac/p/5848372.html
https://www.cnblogs.com/can-H/p/6726743.html
http://www.benet.wang/%E6%8A%80%E6%9C%AF%E9%9D%A2%E8%AF%95/174.html
https://www.cnblogs.com/wajika/p/6382853.html
http://www.jb51.net/article/112698.htm

linux系統iptables的使用