教你如何配置一套强大的防火墙——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的配置。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go语言轻量级线程Goroutine用法实例

本文实例讲述了Go语言轻量级线程Goroutine用法。分享给大家供大家参考。具体如下: goroutine 是由 Go 运行时环境管理的轻量级线程。 go f...

33711
来自专栏技术专栏

springboot static静态资源访问不到及NoHandlerFoundException没有出发的感悟

就可以让404抛出NoHandlerFoundException了,能抛出就能捕获,试了下的确很管用

1133
来自专栏CSDN技术头条

一种基于Rsync算法的数据库备份方案设计

针对当前远程容灾备份系统普遍造价高昂的缺点,技术人员提出了一种通过基于Linux系统下的Rsync(Remote Synchronize)远程同步框架进行改进,...

2167
来自专栏腾讯大讲堂的专栏

zookeeper 运营经验分享

Zookeeper作为TDBank系统的一个重要模块,我们运营它已经两年多。在使用过程中,我们也遇到了一些问题及走过很多弯路,本文主要对zookeeper运营经...

2147
来自专栏Rainbond开源「容器云平台」

关于K8s集群器日志收集的总结

1903
来自专栏大魏分享(微信公众号:david-share)

上酒桌,今儿咱保证把容器SDN的这事一把唠清楚!

容器的SDN 很多人都说2017将是容器年,大卫也这么认为。但在很长一点时间里,容器与虚拟化都是相互依存,相互补充的问题。 之前笔者发表过一篇文章,放开眼界,看...

2715
来自专栏owent

atsf4g完整游戏工程示例

近期仍然在搭建完整的游戏服务器架构。基于atsf4g(asynchronously-tree server framework fo game)的完整解决方案终...

451
来自专栏IMWeb前端团队

ke.qq.com接入登录态隔离总结

一、接入登录态隔离背景 目前腾讯的web业务都是共享skey作为登录态凭证,skey这个cookie打在*.qq.com一级域名下,被qzone.qq.com、...

2420
来自专栏王金龙的专栏

Web攻击技术

在Web应用中,从浏览器那接收到的Http的全部内容,都可以在客户端自由地变更、篡改,所以Web应用可能会接收到与预期数据不相同的内容。 在Http请求报文内加...

641
来自专栏技术翻译

使用Spring Boot,Spring Cloud,Docker和一些Netflix的开源工具建立微服务架构。

本文通过使用Spring Boot,Spring Cloud和Docker构建的概念验证应用程序的示例,为了解常见的微服务架构模式提供了一个起点。

970

扫码关注云+社区