主機防火牆的設置與優化

一、設置主機防火牆。

開放: 服務器的:web服務、vsftpd 文件服務、ssh遠程連接服務、ping 請求。

1、開放sshd服務

開放流入本地主機,22端口的數據報文。

[root@stu13 ~]# iptables -A INPUT --destination 192.168.60.99 -p tcp --dport 22 -j ACCEPT

開放從本地主機22端口流出的數據報文

[root@stu13 ~]# iptables -A OUTPUT --source 192.168.60.99 -p tcp --sport 22 -j ACCEPT

修改默認策略爲:DROP。 目的禁止所有報文通過本機的TCP/IP協議棧,再開放指定端口的服務。

[root@stu13 ~]# iptables -P INPUT DROP
[root@stu13 ~]# iptables -P OUTPUT DROP

如:

[root@stu13 ~]# iptables -L -n -v
Chain INPUT (policy DROP 554 packets, 53329 bytes) ----> 已經阻止到數據包了
 pkts bytes target prot opt in  out   source          destination
 1162 60532 ACCEPT tcp  --  *   *     0.0.0.0/0       192.168.60.99       tcp dpt:22
   匹配到數據包
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target prot opt in  out   source        destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target prot opt in  out   source           destination
  681 96248 ACCEPT tcp  --  *      *  192.168.60.99    0.0.0.0/0           tcp spt:22


2、開放本機提供的web服務:

開放訪問本機的80,443服務。

開放流入本地主機,80端口的數據報文

[root@stu13 ~]# iptables -A INPUT --dst 192.168.60.99 -p tcp --dport 80 -j ACCEP

開放從本地主機80端口流出的數據報文

[root@stu13 ~]# iptables -A OUTPUT --src 192.168.60.99 -p tcp --sport 80 -j ACCEPT

開放流入本地主機,443端口的數據報文

[root@stu13 ~]# iptables -A INPUT --dst 192.168.60.99 -p tcp --dport 443 -j ACCEPT

開放從本地主機443端口流出的數據報文

[root@stu13 ~]# iptables -A OUTPUT --src 192.168.60.99 -p tcp --sport 443 -j ACCEPT

3、本機可以接受ping

開放應用層協議爲icmp數據報文流入本機

[root@stu13 ~]# iptables -A INPUT -p icmp -j ACCEPT

開放應用層協議爲icmp數據報文流出本機

[root@stu13 ~]# iptables -A OUTPUT -p icmp -j ACCEPT

4、開放被動模式FTP服務

開放命令連接的21端口

裝載模塊:這是連接追蹤ftp服務器的數據連接的模塊。

[root@stu13 httpd-2.4.9]# modprobe nf_conntrack_ftp

查看是否裝載成功

[root@stu13 ~]# lsmod  | grep "nf_conntrack_ftp"
nf_conntrack_ftp       10475  0
nf_conntrack           65428  3 nf_conntrack_ftp,nf_conntrack_ipv4,xt_

開放應用層協議爲tcp,目標端口爲21的數據報文流入本機

[root@stu13 ~]# iptables -A INPUT --dst 192.168.60.99 -p tcp --dport 21 -m state --state NEW -j ACCEPT

使用iptables的狀態追蹤功能,追蹤ftp服務器的數據傳輸端口,意思是說:只要是找開的數據傳輸連接傳輸的數據報文與某個已經建立連接有關連,就允許開數據包通過。

[root@stu13 ~]# iptables -A INPUT --dst 192.168.60.99 -m state --state ESTABLISHED,RELATED -j ACCEPT

數據流出

[root@stu13 ~]# iptables -A OUTPUT --src 192.168.60.99 -m state --state RELATED,ESTABLISHED -j ACCEPT

二、測試:主機防火牆開放的服務是否成功:

1、PING 測試:本機PING其它主機 

[root@stu13 ~]# ping -c 1 192.168.60.1
PING 192.168.60.1 (192.168.60.1) 56(84) bytes of data.
64 bytes from 192.168.60.1: icmp_seq=1 ttl=64 time=1.81 ms

--- 192.168.60.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 1.812/1.812/1.812/0.000 ms

在windows下ping 192.168.60.99主機

D:\>ping 192.168.60.99

正在 Ping 192.168.60.99 具有 32 字節的數據:
來自 192.168.60.99 的回覆: 字節=32 時間=2ms TTL=64
來自 192.168.60.99 的回覆: 字節=32 時間<1ms TTL=64

192.168.60.99 的 Ping 統計信息:
    數據包: 已發送 = 2,已接收 = 2,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒爲單位):
    最短 = 0ms,最長 = 2ms,平均 = 1ms

2、測試80服務

[root@nfs ~]# curl -eI http://192.168.60.99/index.html
<h1>This Server is OK...</h1>

3、在Windows 下測試:文件服務器。

D:\>ftp 192.168.60.99
連接到 192.168.60.99。
220 (vsFTPd 2.2.2)
用戶(192.168.60.99:(none)): ftp
331 Please specify the password.
密碼:
230 Login successful.
ftp> get pub/inittab
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for pub/inittab (884 bytes).
226 Transfer complete.
ftp: 收到 884 字節,用時 0.00秒 884000.00千字節/秒。
ftp>

4、測試連接到ssh服務

[root@nfs ~]# ssh 192.168.60.99
Last login: Mon Aug 18 17:51:20 2014

三、分析優化防火牆

設置開放特定服務後的filter表的規則如下:

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 1911 packets, 223K bytes)
num   pkts bytes target   prot opt in   out  source        destination
1     7470  441K ACCEPT   cp   --  *    *    0.0.0.0/0     192.168.60.99 tcp dpt:22
2       51  4545 ACCEPT   tcp  --  *    *    0.0.0.0/0     192.168.60.99 tcp dpt:80
3        1    60 ACCEPT   cp   --  *    *    0.0.0.0/0     192.168.60.99 tcp dpt:443
4        4   288 ACCEPT   icmp --  *    *    0.0.0.0/0     0.0.0.0/0
5       12   624 ACCEPT   tcp  --  *    *    0.0.0.0/0     192.168.60.99 tcp dpt:21 state NEW
6      174  8122 ACCEPT   all  --  *    *    0.0.0.0/0     192.168.60.99 state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 8 packets, 480 bytes)
num   pkts bytes target   prot opt in  out  source           destination
1     5761  701K ACCEPT   tcp  --  *   *    192.168.60.99    0.0.0.0/0     tcp spt:22
2       40  4522 ACCEPT   tcp  --  *   *    192.168.60.99    0.0.0.0/0     tcp spt:80
3        1    40 ACCEPT   tcp  --  *   *    192.168.60.99    0.0.0.0/0     tcp spt:443
4        4   288 ACCEPT   icmp --  *   *    0.0.0.0/0        0.0.0.0/0
5      328 22614 ACCEPT   all  --  *   *    192.168.60.99    0.0.0.0/0    state RELATED,ESTABLISHED

1、優化策略:將多條規則合併成一條。

(1)、使用umltiport擴展模塊合併端口模塊:

[root@stu13 httpd-2.4.9]# ll /lib/xtables-1.4.7/ | grep "multiport"
-rwxr-xr-x. 1 root root 10772 Feb 22  2013 libxt_multiport.so
[root@stu13 httpd-2.4.9]# iptables -I INPUT --dst 192.168.60.99 -p tcp -m multiport --dports 80,443,22 -j ACCEPT
[root@stu13 httpd-2.4.9]# iptables -D INPUT 2
[root@stu13 httpd-2.4.9]# iptables -D INPUT 2
[root@stu13 httpd-2.4.9]# iptables -D INPUT 2
[root@stu13 httpd-2.4.9]# iptables -I OUTPUT --src 192.168.60.99 -p tcp -m multiport --sports 80,443,22 -j ACCEPT
[root@stu13 httpd-2.4.9]# iptables -D OUTPUT 2
[root@stu13 httpd-2.4.9]# iptables -D OUTPUT 2
[root@stu13 httpd-2.4.9]# iptables -D OUTPUT 2

(2)、查看合併端口後filter過濾表

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 20 packets, 2060 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      813 49587 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       multiport dports 80,443,22
2        4   288 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       13   676 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:21 state NEW
4      196  9102 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.60.99       state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      165 21277 ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           multiport sports 80,443,22
2        4   288 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3      355 24153 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED,ESTABLISHED

2、使用iptables/netfiltes提供的狀態追蹤功能優化防火牆

iptables/netfiter提供有一個狀態追蹤功能,只要第一次連接都是NEW狀態。下一次連接只要在狀態追蹤表的計數器的時間沒到之前,該客戶端重新建立的連接,iptables/netfilter 也認爲該連接是ESTABLISHED狀態的。


     通常情況下,處於ESTABLISHED狀態的連接要比處於NEW狀態的連接要多得多,那麼意味着:ESTABLISHED狀態的連接傳輸的數據報文通常要比NEW狀態的連接傳輸的數據報文要多得多。數據報文經過某鏈時,數據報文與鏈中的定義的規則一一做匹配,順序是從上到下依次做匹配操作。如果數據報文的某些特徵,如:源IP地址、目標IP地址、源端口、目標端口、連接的狀態、TCP的標誌位等,與鏈中定義的規則匹配到了,就執行【-j】後面的 action(如:DROP|ACCEPT等)。如果數據報文與它經過的鏈中的規則從上到下一一做匹配,都沒有匹配到的話,就執行iptables中定義的默認規policy。因爲,定義防火牆規則的時候,首先拒絕所有(默認策略都爲:DROP),開放某些服務的數據報文通過.處於ESTABLISHED狀態的連接傳輸的數據報文通常是安全的,應該允許它通過,而數據報文通過的鏈的要做規則檢查的規則又有很多,而處於ESTABLISHED狀態的連接,要傳輸的數據報文很多,那麼怎麼樣要它快速通過iptables/netfilter的防火牆的規則檢查呢?

(1)、根據防火牆做數據報文的匹配規則,應該讓處於ESTABLISHED狀態的連接傳輸的數據報文快速      通過變卦的規則檢查,意思是說:防火牆根據連接追蹤功能一發現該數據報文是ESTABLISHED      狀態的連接發送的,立馬發行。做法:把允許處於ESTABLISHED連接的數據報文通過的策略放       在鏈的所有規則的最前面。
(2)、狀態檢測,是連接追蹤模塊實現的。連接追蹤模塊在內核內存中維護一張追蹤表,記錄每個連     接的狀態,以及連接處於ESTABLISHED的狀態的超時時間和可以追蹤多少個連接以及目前正追      蹤的連接數等等。注意:要根據實際應用開啓或關閉連接追蹤功能。

 連接追蹤模塊可以追蹤的連接數量

[root@stu13 httpd-2.4.9]# cat /proc/sys/net/nf_conntrack_max
 31928

 連接處於ESTABLISHED狀態的超時時長

[root@stu13 /]# cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
 432000  約等於5天。

 當前追蹤的所有連接:

 [root@stu13 httpd-2.4.9]# cat /proc/sys/net/netfilter/nf_conntrack_count
  3

注意:

    如果,我們啓用了iptables/netfilterr 的連接追蹤功能的話,當前追蹤的所有連接數已經達到連接追蹤模塊可以追蹤的連接數量的上限了,且連接追蹤到的連接處於ESTABLISHED狀態的連接,還沒到失效時間。後續新的連接只能等待,iptables/netfilter的連接追蹤表有連接的超時時間到。纔可以通過我們的防火牆。而防火牆定義的ESTABLISHED狀態的走超時時長爲5天,而我們的TCP連接在TCP的各種狀態的超時時長,都是很短的。所以。會導致大量的後續新的連接被拒絕。也就是出現連接服務器超時的情況發生。所以,根據實際應用調整這些參數很關鍵。或比較繁忙的服務器就不應該開啓iptables/netflter的連接追蹤功能。


iptables/netfilter的連接追蹤功能是通過下述擴展模塊實現的。

[root@stu13 httpd-2.4.9]# ll /lib/xtables-1.4.7/ | grep "state"
-rwxr-xr-x. 1 root root  5860 Feb 22  2013 libxt_state.so

提供,允許發往特定端口處於ESTABLISHED狀態連接的數據報文通過TCP/IP協議棧,且把該規則放在鏈的所有規則的最前面。

INPUT表

[root@stu13 httpd-2.4.9]# iptables -I INPUT 1 --dst 192.168.60.99 -p tcp -m multiport --dports 80,443,22 -m state --state  ESTABLISHED,NEW -j ACCEPT
[root@stu13 httpd-2.4.9]# iptables -D INPUT 2

OUTPUT表:允許處於ESTABLISHED狀態連接的數據報文從本機出去。且把該規則放在鏈的所有規則的最前面。

[root@stu13 httpd-2.4.9]# iptables -I OUTPUT 1 --src 192.168.60.99 -p tcp -m multiport --sports 80,443,22 -m state --state ESTABLISHE -j ACCEPT
[root@stu13 ~]# iptables -D OUTPUT 2

使用狀態檢測功能優化後的:

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 138 packets, 12760 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      760 49519 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       multiport dports 80,443,22 state NEW,ESTABLISHED
2       14  1128 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       18   936 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:21 state NEW
4      299 13853 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.60.99       state RELATED,ESTABLISHED

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     1194  153K ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           multiport sports 80,443,22 state ESTABLISHED
2       14  1128 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3      465 30940 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED,ESTABLISHED

分析:

   因爲,只要是ESTABLISHED狀態的連接的數據報文,是不會有問題的。不需要檢測端口了。這樣提高了iptable/netfiler檢測數據報文的速度。只要是ESTABLISHED狀態的連接的數據報文都允許通過。

所以,對上述的INPUT表的第一條規則進行拆分,如下

[root@stu13 httpd-2.4.9]# iptables -I INPUT 1 --dst 192.168.60.99 -p tcp -m state --state ESTABLISHED -j ACCEPT

並把發往指定端口的數據報文,進行NEW狀態的數據報文檢測組成一條規則

[root@stu13 httpd-2.4.9]# iptables -I INPUT 2 --dst 192.168.60.99 -p tcp -m multiport --dports 80,443,21,22 -m state --state NEW -j ACCEPT

修改第三條規則

[root@stu13 httpd-2.4.9]# iptables -R INPUT 3 --dst 192.168.60.99 -m state --state RELATED -j ACCEPT

刪除

[root@stu13 httpd-2.4.9]# iptables -D INPUT 3
[root@stu13 httpd-2.4.9]# iptables -D INPUT 4

修改後INPUT表變成

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 129 packets, 11581 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     4793  374K ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       state ESTABLISHED
2       35  1820 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       multiport dports 80,443,21,22 state NEW
3        7   364 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.60.99       state RELATED
4        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
。。。。。。

分析OUTPU表

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     3466  482K ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           multiport sports 80,443,22 state ESTABLISHED
2       22  1608 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3      547 36931 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED,ESTABLISHED

分析:跟上述一樣,允許處於ESTABLISHED狀態的連接的數據報文通過TCP/IP協議棧。修改OUTPUT表的第1條與第3條規則

修改第一條規則

[root@stu13 httpd-2.4.9]# iptables -R OUTPUT 1 --src 192.168.60.99 -p tcp -m state --state ESTABLISHED -j ACCEPT
修改第三條規則
[root@stu13 httpd-2.4.9]# iptables -R OUTPUT 3 --src 192.168.60.99 -m state --state RELATED -j ACCEPT

修改後的OOUPUT表的規則如下:

[root@stu13 ~]# iptables --line-numbers -L -n -v
。。。。。
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      794  148K ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           state ESTABLISHED
2       22  1608 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED

經過使用端口合併和iptables/netfilter的狀態追蹤功能優化規則表之後:

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 540 packets, 53525 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      225 10816 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       state ESTABLISHED
2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       multiport dports 80,443,21,22 state NEW
3        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.60.99       state RELATED
4        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      194 27924 ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           state ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED

3、使用自定義鏈分成分成等級iptables規則:

如果,防火牆規則很多的話,這樣寫就顯示得很亂,不明瞭。造成後續添加規則就在很多不便。因爲,每種服務的訪問量都不一樣。簡單的合併多個端口的做法並是不很理想。

最好爲開放的每個服務都使用一條自定義鏈。這樣,以後我們要爲某服務添加或刪除規則只要找到該服務對應的自定義鏈,就可以操作了,很方便。如下:

(1)、爲http 80服務自定義一條鏈

[root@stu13 ~]# iptables -t filter -N http_in
[root@stu13 ~]# iptables -A http_in -d 192.168.60.99 -p tcp --dport 80  -m state --state NEW -j ACCEPT

INPUT鏈調用該鏈

[root@stu13 ~]# iptables -I INPUT 2 -d 192.168.60.99 -p tcp --dport 80 -j http_in

如果,使用自定義規則檢測數據報文沒有匹配到則返回主鏈INPUT

[root@stu13 httpd-2.4.9]# iptables -A http_in -j RETURN

(2)、爲https 443 服務自定義一條鏈

[root@stu13 ~]# iptables -t filter -N https_in
[root@stu13 ~]# iptables -A https_in -d 192.168.60.99 -p tcp --dport 443 -m state --state NEW -j ACCEPT

調用自定義鏈

[root@stu13 httpd-2.4.9]# iptables -I INPUT 3 -d 192.168.60.99 -p tcp --dport 443 -j https_in

如果,使用自定義規則檢測數據報文沒有匹配到則返回主鏈INPUT

[root@stu13 httpd-2.4.9]# iptables -A https_in -j RETURN

(3)爲ssh服務自定義一條鏈

[root@stu13 ~]# iptables -t filter -N ssh_in
[root@stu13 ~]# iptables -A ssh_in -d 192.168.60.99 -p tcp --dport 22 -m state --state NEW -j ACCEPT

調用該鏈

[root@stu13 httpd-2.4.9]# iptables -I INPUT 4 -d 192.168.60.99 -p tcp --dport 22 -j ssh_in

如果,使用自定義規則檢測數據報文沒有匹配到則返回主鏈INPUT

[root@stu13 httpd-2.4.9]# iptables -A ssh_in -j RETURN

(4)、爲vsftp文件服務自定義一條鏈

[root@stu13 ~]# iptables -t filter -N vsftp_in
[root@stu13 ~]# iptables -A vsftp_in -d 192.168.60.99 -p tcp --dport 21 -m state --state NEW -j ACCEPT

調用該鏈

[root@stu13 httpd-2.4.9]# iptables -I INPUT 5 -d 192.168.60.99 -p tcp --dport 21 -j vsftp_in

如果,使用自定義規則檢測數據報文沒有匹配到則返回主鏈INPUT

[root@stu13 httpd-2.4.9]# iptables -A vsftp_in -j RETURN

(5)刪除INPUT鏈的第6條規則(端口合併那條鏈)

[root@stu13 httpd-2.4.9]# iptables -D INPUT 6


使用自定義鏈後,規則表如下:

[root@stu13 ~]# iptables --line-numbers -L -n -v
Chain INPUT (policy DROP 928 packets, 83409 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     7351  435K ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       state ESTABLISHED
2        6   312 http_in    tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:80
3        0     0 https_in   tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:443
4        2   104 ssh_in     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:22
5        2   104 vsftp_in   tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:21
6        8   416 ACCEPT     all  --  *      *       0.0.0.0/0            192.168.60.99       state RELATED
7        8   672 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy DROP 2 packets, 120 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     5842  751K ACCEPT     tcp  --  *      *       192.168.60.99        0.0.0.0/0           state ESTABLISHED
2        0     0 ACCEPT     all  --  *      *       192.168.60.99        0.0.0.0/0           state RELATED
3        8   672 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0


Chain http_in (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        6   312 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:80 state NEW
2        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain https_in (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:443 state NEW
2        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain ssh_in (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        2   104 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:22 state NEW
2        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain vsftp_in (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1        2   104 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.60.99       tcp dpt:21 state NEW
2        0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

說明:

   在INPUT鏈,根據實際應用情況,服務的訪問繁忙程序調整,http_in、https_in、ssh_in、vsftp_in的先後順序,來優化iptables/netfilter

的效率。

有了自定義鏈後,數據報文的檢查流程如下圖:

wKiom1P0LNWBiKtPAASuyAzTig4758.jpg

四、測試優化後的防火牆策略是否成功:

1、測試 http 80 服務

[root@nfs ~]# curl http://192.168.60.99/index.html
<h1>This Server is OK...</h1>

2、測試 ssh 服務

[root@nfs ~]# ssh 192.168.60.99
Last login: Mon Aug 18 20:21:25 2014 from 192.168.60.88

3、測試vsftp 服務

D:\>ftp 192.168.60.99
連接到 192.168.60.99。
220 (vsFTPd 2.2.2)
用戶(192.168.60.99:(none)): ftp
331 Please specify the password.
密碼:
230 Login successful.
ftp> get pub/inittab
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for pub/inittab (884 bytes).
226 Transfer complete.
ftp: 收到 884 字節,用時 0.07秒 12.63千字節/秒。
ftp>

4、測試ping

(1)、ping本主機

D:\>ping 192.168.60.99
正在 Ping 192.168.60.99 具有 32 字節的數據:
來自 192.168.60.99 的回覆: 字節=32 時間=1ms TTL=64
來自 192.168.60.99 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.60.99 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.60.99 的回覆: 字節=32 時間<1ms TTL=64

192.168.60.99 的 Ping 統計信息:
    數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),
往返行程的估計時間(以毫秒爲單位):
    最短 = 0ms,最長 = 1ms,平均 = 0ms

(2)、本主機ping別的主機

[root@stu13 ~]# ping -c 1 192.168.60.88
PING 192.168.60.88 (192.168.60.88) 56(84) bytes of data.
64 bytes from 192.168.60.88: icmp_seq=1 ttl=64 time=0.590 ms

--- 192.168.60.88 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 0.590/0.590/0.590/0.000 ms
(3)、迴環地址
[root@stu13 ~]# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.375 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.375/0.375/0.375/0.000 ms


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