1. 程式人生 > >Linux安全調優1:CentOS防火墻的設置與優化

Linux安全調優1:CentOS防火墻的設置與優化

2.6 裝載 協議棧 先後 sys ip協議 ive 實現 被拒

CentOS防火墻的設置與優化

時間:2014-09-11 02:11來源:blog.csdn.net 作者:成長的小蟲 的BLOG 舉報 點擊:4908次

一、設置主機防火墻。

開放: 服務器的: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數據報文流入本機

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

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

1 [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

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

、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 2 (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表的第一條規則進行拆分,如下

1 [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

1 [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條規則(端口合並那條鏈)

1 [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

的效率。

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

技術分享圖片

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

1、測試 http 80 服務

1 2 [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別的主機

1 [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

Linux安全調優1:CentOS防火墻的設置與優化