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

相关文章

来自专栏SDNLAB

OpenDaylight与Mininet应用实战之三层转发机制四

本文属于该专题中的进阶篇,主要讲解ODL应用不同网段的三层数据转发机制,在OpenDaylight与Mininet应用实战之流表操作(三)中会涉及到相同网段的二...

4676
来自专栏Android机动车

使用CountDownTimer实现倒计时

相信大家在项目里面不少会用到倒计时操作吧,倒计时功能在我们业务开发中使用概率非常高,例如用户操作姿势错误,我们给一个提示,提示是带有倒计时的对话框,当然你会问为...

1682
来自专栏恒思考

一个人的app后端-parse的安装与使用

mkdir -p ~/mongo ~/mongo/db cd ./mongo/ docker run -p 27017:27017 -v ~/mongo/db:...

1993
来自专栏向前进

vue-cli脚手架npm相关文件解读(4)utils.js

系列文章传送门: 1、build/webpack.base.conf.js 2、build/webpack.prod.conf.js 3、build/webp...

3126
来自专栏Janti

基础巩固——长连接 、短连接、心跳机制与断线重连

本文将从长连接和短连接的概念切入,再到长连接与短连接的区别,以及应用场景,引出心跳机制和断线重连,给出代码实现。

2241
来自专栏攻城狮的动态

iOS面试题梳理(三)

3527
来自专栏CRPER折腾记

React 折腾记 - (5) 记录用React开发项目过程遇到的问题(Webpack4/React16/antd等)

技术栈: react@16.6.0/ react-router-dom@v4 / webpack^4.23.1(babel7+)

1552
来自专栏Golang语言社区

package http

要管理代理、TLS配置、keep-alive、压缩和其他设置,创建一个Transport:

1824
来自专栏程序员八阿哥

Python从入门到摔门(6):Python Web服务器Tornado使用小结

举例来说,假设某个银行网站有这样的 URL: http://bank.example.com/withdraw?amount=1000000&for=Eve ...

1502
来自专栏大内老A

ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]

个人觉得异常处理对于程序员来说是最为熟悉的同时也是最难掌握的。说它熟悉,因为仅仅就是try/catch/finally而已。说它难以掌握,则是因为很多开发人员却...

20110

扫码关注云+社区