1. 程式人生 > 其它 >教你如何配置一套強大的防火牆——iptabels配置詳解(一)

教你如何配置一套強大的防火牆——iptabels配置詳解(一)

今天我來帶領大家給自己的伺服器搭建一套強大的防火牆!廢話不多說,我們開始吧~

啥是iptables?

ipbtales是整合再Linux核心中的一套防火牆軟體。它能夠對外界發過來的在進入我們的系統之前,進行一系列的篩選,我們可以自己定義篩選規則,決定哪些資料包可以進入我們的電腦,哪些資料包不允許進入。從而能夠使我們的伺服器更加安全地執行在公網的環境中。 下面大家一起跟我動手,在實踐中掌握知識。

動手前的準備工作

首先你需要找兩臺主機,一臺當作客戶機,一臺當作伺服器。讓這兩臺主機處於同一個區域網中。 然後咱們在伺服器上裝一個httpd伺服器,在httpd伺服器中咱們放一個index.html作為我們的一個網頁。 PS:httpd伺服器的搭建請移步至

http://jingyan.baidu.com/article/64d05a025cdf69de55f73be5.html

ok,伺服器和客戶機搭建完成了,我的伺服器的IP是192.168.100.1,客戶機的IP是192.168.100.2。 準備工作到此就完成啦!接下來我們先一起做一個簡單的ipbtales配置。

做一個iptables的HelloWorld

首先,我們在客戶機上用一個Linux壓力測試的命令對伺服器傳送大量的請求:

//對伺服器併發3000個請求,並每次增加3000個請求
[root@Svr107 bin]# ab -n 3000 -c 3000 http://192.168.100.1/index.html
//返回結果如下:
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.twioo.com (be patient)
Completed 300 requests
Completed 600 requests
Completed 900 requests
Completed 1200 requests
Completed 1500 requests
Completed 1800 requests
Completed 2100 requests
Completed 2400 requests
Completed 2700 requests
Completed 3000 requests
Finished 3000 requests

PS:ab命令的詳細介紹請移步至http://blog.chinaunix.net/uid-20382003-id-3032167.html

接下來我們進入伺服器,看看當前伺服器的負載情況 通過netstat命令可以檢視到當前所有請求我們伺服器的ip:

//檢視當前伺服器的負載情況
[root@iZ28st035lsZ init.d]# netstat
//返回結果
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 115.28.217.42:http          218.2.216.4:54823           SYN_RECV    
tcp        0      0 115.28.217.42:http          218.2.216.4:54818           SYN_RECV    
tcp        0      0 115.28.217.42:http          218.2.216.4:54817           SYN_RECV    
…………………………………………………………
//其實下面還有好多ip,這裡就省略了

通過netstat命令,我們看到,伺服器被一個客戶機大量的請求。 當然,對於一臺伺服器來說,這種被一臺主機大量的請求的情況是非常危險的,伺服器的記憶體、頻寬很快會被一臺主機佔據,從而導致其他主機無法再請求這臺伺服器,這也是黑客攻擊的一般手段。那麼,我們該如何預防呢?

辦法如下:當我們發現有一個ip請求伺服器的次數異常大時,我們可以限制這個ip的請求數,加入最大請求數設定為10,那麼當這個ip同時傳送10個請求的時候,防火牆就會把它拒絕。

//這條命令的意思是:在iptables中增加一條規則,限制攻擊者ip的最大訪問次數,如果超過這個次數,就會被拒絕訪問
//-I表示這條規則插在iptables所有規則的最前面,因此它有最高的優先順序;
//-p tcp表示資料包訪問伺服器時所使用的應用層協議是tcp
//--dport 80表示對訪問伺服器80埠的資料包進行拒絕
iptables -I INPUT -p tcp --dport 80 -s xxx.XX.XX.XX(攻擊者ip) -m connlimit-above 10 -j REJECT

好了,當我們設定好iptabled規則之後,再次讓客戶機向伺服器同時併發1000000個請求,此時看到Connection refused,請求被伺服器拒絕了。

如果再將客戶機的併發請求改成5,此時能夠請求伺服器,不報錯了

[root@Svr107 bin]# ab -n 3000 -c 5

好了,一個HelloWorld就完成了,接下來我們一起系統性的學習一下ipbtales的配置。