iptables的基礎知識和應用

一.什麼是防火牆?

防火牆是不同網絡之間信息的唯一出入口,能根據我們制定的策略來控制(允許、拒絕)進出的數量流,並且本身具有抗***能力,能有效保證我們內部 網絡的安全。

二.防火牆 的作用?

防火牆 的作用是防止不希望 的,未經授權 的信息進出被保護的網絡,迫使一個組織強化 自己的網絡安全策略,被認爲是一個可信的內部網絡和不那麼安全可信的外部網絡之間提供的一個封鎖工具。

三.默認的四張表

1filter:用於防火牆,默認有INPUT/OUTPUT/FORWARD三條鏈

2nat:網絡地址轉換,PREROUTING/POSTROUTING/OUTPUT三條鏈

3mangle:流量整形,五條鏈

4raw:用於狀態跟蹤

四.默認的五條規則鏈

1INPUT: 如果一個數據包的目的地址是LINUX本身,則進入INPUT

2OUTPUT: 源地址是LINUX本身

3FORWARD: 數據包從一塊網卡接收,從另一塊網卡發出,經過LINUX的包,進入這條鏈

4PREROUTING: 路由前

5POSTROUTING: 路由後

五.編寫規則

添加規則     -A     在鏈的末尾追加一條規則  

                   -I      在鏈的開頭(或指定序號)插入一條規則

查看規則     -L      列出所有的規則條目

                   -n     以數字形式顯示地址、端口等信息

                   --line-numbers    查看規則時,顯示規則的序號

刪除規則      -D    刪除鏈內指定 序號(或內容)的一條規則

                   -F     清空所有的規則

默認規則      -P     爲指定的鏈設置默認規則

六.規則的基本匹配條件

通用匹配      協議匹配        -p   協議名

                    地址匹配        -s    源地址      -d   目的地址

                    接口匹配        -i    收數據的網卡  -o   發數據的網卡

隱含匹配      ICMP類型匹配    --icmp-type  ICMP類型

                    TCP標記匹配       --tcp-flags   檢查哪些位  哪些位被設置

七.IPtables的應用,配置主機型防火牆

1.清空防火牆的規則

wKioL1YsvjKBmLfcAAFnmbIBch4842.jpg

2.允許SSH

wKiom1Ysvq3z_CtwAAEoFQ5Ng7o438.jpg

3.設置默認規則

wKiom1YsvxCx8IhpAAD_4EaxDNM430.jpg

4.設置允許http

wKiom1Ysv2-zO5XgAAFN_3Od518288.jpg

5.拒絕 ping防火牆本身,客戶端訪問可以ping通

wKiom1YswHDgQRThAAHhCSF2yOY572.jpg

在服務器上設置策略,客戶端ping服務器的包丟棄

wKioL1YswNWDK7anAAEKW0BKNp0155.jpg

在客戶端進行測試,客戶端沒有任何信息

wKiom1YswL-CVc9tAACh872hkos668.jpg

在服務器上設置策略,客戶端ping服務器的包拒絕

wKiom1YswQiD2fhtAAFY7LW_fnc884.jpg

在客戶端進行測試,顯示路由不可達

wKioL1YswWDiGWsQAAG4-AiGuTE558.jpg

允許指定IP(192.168.1.40)地址的主機PING防火牆

wKioL1Ysw42SriEeAAGcv4WFbaE623.jpg

在192.168.1.40上測試,是否可以ping通

wKiom1Ysw5rzHV-0AAKtFDYK5EY010.jpg

在192.168.1.20上測試,是否可以ping通

wKioL1YsxA_StP6nAAJlel_My10905.jpg

6.查看防火牆規則,每個規則註明序號

wKioL1YsxNCjQBr_AAIhCSSPfg4036.jpg

7.刪除防火牆的INPUT鏈中第二條規則查看防火牆規則,每個規則註明序號

wKiom1YsxNeDrc29AAHq3elS_iA376.jpg

8.允許特定IP地址訪問LINUXtelnet服務

wKioL1YsxZyC4VotAACtnbg6OiQ438.jpg

wKioL1YsxdGgaWIVAACrdkQ6PDE183.jpg

允許192.168.1.40訪問Telnet服務

wKiom1Ysx8PR389mAAJHVD15EfM768.jpg

在192.168.1.40上測試查看是否允許Telnet

wKiom1YsyA3iWecaAAGLVmFyvoE878.jpg

在192.168.1.20上測試查看是否允許Telnet

wKiom1YsyE-i92SgAAFm8Ep7Wp0551.jpg

INPUT鏈插入規則,作爲第一條。從eth1網卡收到的、訪問telnet服務的數據包,拒絕

wKiom1Ysyf7xs63mAAMAIKkBGEA440.jpg

在192.168.1.40上測試

wKioL1YsymDzb8ciAADI__BDvLE952.jpg

八.配置網絡型防火牆

實驗環境:有三臺主機

第一臺主機: IP地址爲:192.168.1.40  網關爲:192.168.1.254 主機名爲:fanxiaohui 

第二臺主機:IP地址爲:192.168.1.254   IP地址爲:1.1.1.254   主機名爲:waiwang

第三臺主機:IP地址 爲:1.1.1.1   網關爲:1.1.1.254   主機名爲fanlj

在第二臺主機上開啓路由轉發功能,使192.168.1.40可以ping通1.1.1.1

打開LINUX路由功能(轉發功能)

IS: 中間系統,路由器。

ES: 終端系統,主機系統。

1、臨時打開路由功能

[root@localhost ~]# echo  1  >/proc/sys/net/ipv4/ip_forward

[root@localhost ~]# cat  /proc/sys/net/ipv4/ip_forward

1

 2、永久打開轉發功能

[root@localhost ~]#  echo  ‘echo 1  > /proc/sys/net/ipv4/ip_forward’  >> /etc/rc.local

[root@localhost ~]#  vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

[root@localhost ~]# sysctl  -p

3.在第二臺服務器上關閉iptables後1.1.1.1可以Telnet到192.168.1.40

wKioL1Ys58ayhUT7AAFpWxRGhyo605.jpg

拒絕1.1.1.0/24網段訪問192.168.1.0/24網段的telnet服務

在第二臺服務器上配置iptables

[root@fanlj ~]# iptables -A FORWARD -s 1.1.1.0/24 -d 192.168.1.0/24 -p tcp --dport 23 -i eth0 -o eth1 -j REJECT
[root@fanlj ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     tcp  --  1.1.1.0/24           192.168.1.0/24      tcp dpt:23 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

在1.1.1.1上測試是否可以Telnet 192.168.1.40上

wKiom1Ys67rQYn_TAAByWHpoOB0425.jpg

怎麼測試是防火牆策略起作用呢?

在第二臺服務器上查看防火牆策略

[root@fanlj ~]# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    60 REJECT     tcp  --  eth1   eth0    192.168.1.0/24       1.1.1.0/24          tcp dpt:23 reject-with icmp-port-unreachable
4.從拒絕SSH協議通過防火牆

在192.168.1.40上ssh到1.1.1.1上

[root@fanxiaohui ~]# ssh 1.1.1.1
The authenticity of host '1.1.1.1 (1.1.1.1)' can't be established.
RSA key fingerprint is 77:0d:65:ee:8d:e6:98:0f:1e:32:3a:2a:a7:ea:43:8a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '1.1.1.1' (RSA) to the list of known hosts.
[email protected]'s password:
Last login: Sat Oct 24 22:30:28 2015
[root@waiwang ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:9D:CB:9C  
          inet addr:1.1.1.1  Bcast:1.1.1.255  Mask:255.255.255.0

在192.168.1.254上拒絕192.168.1.40ssh到1.1.1.1上

[root@fanlj ~]# iptables -I FORWARD -p tcp --dport 22 -j REJECT
[root@fanlj ~]# iptables -nvL FORWARD

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:23 reject-with icmp-port-unreachable
    1    60 REJECT     tcp  --  eth1   eth0    192.168.1.0/24       1.1.1.0/24          tcp dpt:23 reject-with icmp-port-unreachabl
e
在192.168.1.40上測試

[root@fanxiaohui ~]# ssh 1.1.1.1
ssh: connect to host 1.1.1.1 port 22: Connection refused

在1.1.1.1上測試,查看是不能可以ssh192.168.1.40

wKiom1YuxlvwHWG0AACc8O7K5ts457.jpg

不是192.168.1.0/24網段的主機可以訪問SSH服務

[root@fanlj ~]# iptables -I FORWARD ! -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
在1.1.1.1上測試,查看是可以ssh192.168.1.40

wKioL1YuyOjxt_QGAAFWE-XK_3M577.jpg

5.在1.1.1.1上搭建ftp服務,並且input和output全部拒絕,允許遠程主機可以訪問1.1.1.1上的ftp服務。

wKiom1Yu0TqiWZT5AAD6GHEB9L8629.jpg

在遠程主機192.168.1.40上訪問1.1.1.1上的ftp服務,可以訪問。

[root@fanxiaohui ~]# ftp 1.1.1.1
Connected to 1.1.1.1 (1.1.1.1).
220 (vsFTPd 2.2.2)
Name (1.1.1.1:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
在1.1.1.1上自己訪問ftp服務,遠程主機可以訪問1.1.1.1上ftp服務,但是自己不能訪問自己的ftp服務,怎麼設置可以自己訪問自己的ftp服務。

wKiom1Yu0zWQOTjDAABYBYZ0lhI006.jpg

自己發給自己的包目標端口也是自己,所有output鏈的dport也是20:21

wKiom1Yu3rXCk_B_AAFoGXRZQak033.jpg

6.防火牆拒絕icmp通過

[root@fanlj ~]# iptables -A FORWARD -p icmp -j REJECT
僅允許192.168.1.0/24能ping通1.1.1.0/24

[root@fanlj ~]# iptables -I FORWARD -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT
[root@fanlj ~]# iptables -I FORWARD -d 192.168.1.0/24 -p icmp --icmp-type echo-reply -j ACCEPT
九.擴展匹配

wKioL1YvDwOANH1fAAFaDITGyZU224.jpg

1、網絡連接的五種狀態

  • NEW,請求建立連接的包、完全陌生的包

  • ESTABLISHED,將要或已經建立連接的包

  • RELATED,與已知某個連接相關聯的包

  • INVALID,無對應連接,以及連接無效的包

  • UNTRACKED,未跟蹤狀態的包

2192.168.1.0/24作爲內網,1.1.1.0/24作爲外網。從內到外的訪問不受限制,從外到內的主動連接全部拒絕。

[root@fanlj ~]# iptables -P FORWARD DROP
[root@fanlj ~]# iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
[root@fanlj ~]# iptables -A FORWARD -d 192.168.1.0/24 -m state --state ESTABLISHED -j ACCEPT

3.允許ftp連接(主被動模式),192.168.1.0/24作爲內網,1.1.1.0/24作爲外網,從內到外可以主動連接,也可以被動連接,但是不允許外網主機連接內網。

[root@fanlj ~]# iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 20:21 -j ACCEPT
[root@fanlj ~]# iptables -A FORWARD -d 192.168.1.0/24 -p tcp --dport 20:21 -j ACCEPT
[root@fanlj ~]# iptables -A FORWARD -s 192.168.1.0/24 -m state --state NEW,ESTABLISH,RELATED -j ACCEPT
[root@fanlj ~]# iptables -A FORWARD -d 192.168.1.0/24 -m state --state ESTABLISH,RELATED -j ACCEPT

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