教你如何配置一套强大的防火墙——iptabels配置详解(一)

时间:2022-05-03
本文章向大家介绍教你如何配置一套强大的防火墙——iptabels配置详解(一),主要内容包括啥是iptables?、动手前的准备工作、做一个iptables的HelloWorld、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

今天我来带领大家给自己的服务器搭建一套强大的防火墙!废话不多说,我们开始吧~

啥是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的配置。