CentOS防火墻的設置與優化

一、設置主機防火墻。

開放: 服務器的: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

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

、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

This?Server?is?OK...

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的防火墻的規則檢查呢?

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

This?Server?is?OK...

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

(3)、回環地址

1

[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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容