教你如何配置一套强大的防火墙——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 条评论
登录 后参与评论

相关文章

来自专栏前端儿

Node.js基于Express框架搭建一个简单的注册登录Web功能

这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb

451
来自专栏前端布道

Angular开发实践(二):HRM运行机制

引言 在angular-start项目中启用了模块热替换(HMR - Hot Module Replacement)功能,关于如何在angular-cli启用H...

3517
来自专栏Laoqi's Linux运维专列

Apache访问日志切割+静态元素过期时间

Apache访问日志切割 : 日志一直记录总有一天会把整个磁盘占满。假如,有个系统每天都要往一个目录里面写日志,一次1G,100G的硬盘也就100天就没有了,所...

3397
来自专栏Java学习123

LoadRunner11-遇到问题及解决办法

3675
来自专栏雪胖纸的玩蛇日常

django 开发忘记密码通过邮箱找回功能

1735
来自专栏技术小黑屋

关于Android中App的停止状态

很多人遇到过广播收不到的问题,比如Google Play推广安装广播没有收到等,诸如这些问题,又都是什么原因呢,这篇文章将进行回答.

931
来自专栏从零开始学自动化测试

python接口自动化4-绕过验证码登录(cookie)

前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。 获取不到也没关系,可以通过添加cook...

3965
来自专栏全华班

分享一套别人开发的网站管理后台系统

该项目的架构搭建使用的是maven,后台是使用的是ssm框架,权限管理使用的是shiro框架,前端使用的框架是layui,流程使用的activiti框架,集成了...

592
来自专栏java思维导图

从输入URL到页面展示到底发生了什么

地址:http://www.cnblogs.com/xianyulaodi/ 作者:咸鱼老弟

963
来自专栏battcn

一起来学SpringBoot | 第十五篇:actuator与spring-boot-admin 可以说的秘密

一起来学SpringBoot | 第十四篇:强大的 actuator 服务监控与管理 中介绍了 actuator 的作用,细心的朋友可能会发现通过 http r...

832

扫描关注云+社区