为什么 centos测试网速 大量测试

为什么要做自动化测试_小组_ThinkSAAS
为什么要做自动化测试
为什么要做自动化测试
不少介绍微软测试过程的文章都强调大量运用自动化测试,给人一个只要有了自动化测试,整个测试过程就得到保证的印象。不可否认自动化测试的作用,但是对于下面两个问题:
“自动化测试总是任何时间内、任何条件下、任何项目阶段中的最佳选择吗?”
“进行/不进行自动化测试的决策是怎样做出来的?”
答案会是什么?
为了回答这两个问题,我想分享一个真实的微软测试项目的经验。
在这个项目中需要关注两件事情:设置向导和客户体验改进计划。
设置向导,或者安装向导,相信安装过软件的朋友都知道,就是引导用户完成一系列操作的一种界面,具有连续出现的窗口,每个呈现不同的内容,使用户每次只关注特定的项目从而容易完成复杂的全部操作。
客户体验改进计划(Customer Experience Improvement Program,简称CEIP)就不是那么为大众所了解。实际上Windows系统中有这么一个缺省关闭的选项,如果用户打开了,关于用户如何使用微软软件的信息,例如常点击的菜单项有哪些、缺省选项被改动为哪些值等等,会被Windows系统自动记录下来并定期发送到微软的服务器。专业分析师会解读这些数据,从中发现微软软件设计上的潜在缺陷:它们会导致用户迷惑、误解,以致无法正确使用某些功能。
这里要测试的功能,就是为某处设置向导添加CEIP的记录动作。第一次接触这个新事物,不少测试工程师的通常反应是,模拟用户在设置向导中的操作,然后观察CEIP的记录数据对不对,完事。
自动化测试更是小菜一碟:驱动用户界面操作本不是难事,何况测试设置向导本身功能的工程师已经做好了一切,借花献佛就好了;CEIP的记录数据也是拿已经做好的函数读一下记录,然后跟预期数据比较就好了。
表面看是如此,但如果这就是故事的全部,那就没有说的必要了。实际上,这只是冰山浮在水面上的部分。
先考虑一下两个问题:
这个功能没测试好的后果是什么?
CEIP是用于指导下个版本的可用性(Usability)设计的。如果里面的缺陷导致不准确的信息,那么CEIP分析师会被误导从而得出不反映真实情况的结论。例如,本来用户很常用的一个菜单项“打印”,被误记录为“属性”的话,结论会是“打印”没什么人去用,“属性”倒有不少用处。那么开发下个版本的软件时,根据这个“据说从真实的用户统计数据得来”的结论,很可能“属性”被放到显眼处,很常用的“打印”反而被藏起来了。不要争辩哦,这是被大量用户数据所证实的嘛。所以,CEIP是把双刃剑,不准确的数据比没有数据更糟糕。
这个功能没在测试中发现的缺陷,会被谁、什么时候发现?
很多测试中没发现的功能缺陷,发布出去之后用户迟早会发现。唯独这种CEIP的功能,用户除了打开或者关闭之外永远不会去接触:用户为什么要关心CEIP记录得对不对呢?事实上这些功能缺陷用户不知道,微软也不一定知道,只会根据CEIP数据调整设计。除非之后的若干个版本改得实在太过分以致怨声载道,或者跟用户调查的结论相差实在太大,才会惊觉可能是CEIP的问题。所以CEIP数据的缺陷,是一个不定延时引信地雷,埋下去就难以挖出来,而且要挖出来还极为麻烦:怎样回应用户“上几个版本都是这样的,我都习惯了为什么又要改”的质疑?“根据CEIP数据决定这样改,但后来我们发现CEIP数据错了”?(用户一脸茫然:什么是CEIP数据?跟我有什么关系?什么叫做记录我做过的事?你想说这是我自作自受的结果吗?)
综上所述,这个功能不是对着界面点击一通就能看出对不对的,测试人员还需要观察记录下的数据并与做过的操作相对照;测试用例需要持续的在多个版本中执行以防范回归缺陷(Regression Bug);测试这个功能,防止缺陷被埋进去具有更高的价值,因为事后很难挖出来。
表面上看,似乎自动化测试是板上钉钉的事:人工测试很难;还需要反复执行。但请考虑一下最初提到的一个问题:“自动化测试总是任何时间内、任何条件下、任何项目阶段中的最佳选择吗?”
回答这个问题之前,请先看看加入CEIP之后设置向导有什么变化:
设置向导在每一页收集用户的输入,直到“完成”按钮被按下,然后拿着设置的数据往指定的地方一一写入。加入CEIP之后,如果用户按“后退”按钮呢?
放在以前,如果“前进”按钮没有按下,用户输入不会生效,所以“后退”就是界面改为前一页,没什么大不了的。现在就不一样了,“后退”意味着某些状态发生了变化,如果那些状态要被CEIP记录,那就是一个值得关注的问题。
别忘了添加CEIP的初衷是暴露潜在的Usability缺陷。用户成功的走过各个页面并完成设置,这是需要记录的成功案例;用户感到迷惑不得不中途退出,这也是需要记录的失败案例;用户后退到之前的页面来重试,更是需要记录的失败案例。每个案例都需要记录些什么数据,视情况而定,但不外乎“当时状态”。
请注意,没有CEIP的时候,设置向导关注的是“最终状态”;有CEIP的时候,还需要关注“当时状态”。我要问一个问题,如果当初不考虑CEIP,一个设计设置向导的开发工程师,能一早想到要维护“当时状态”的可能性有多大?
显然,这是一个非常容易引入缺陷的地方、非常需要在把缺陷埋进去之前就采取行动的地方。那么,自动化测试在这里能帮到我们什么?
防范回归缺陷吗?前面说过,太晚了。况且在自动化测试程序写出来第一次运行的时候,缺陷就已经被发现了;等到发现回归缺陷的时候,像前面说的,情况更尴尬了。
进行人工无法执行的测试?跟前面说的一样,在自动化测试程序写出来第一次运行的时候,缺陷就已经被发现了。我们如何才能够在把缺陷埋进去之前就采取行动呢?
其实,这里更需要的是在设计层面或者是代码层面的审核和分析。你可以称之为白箱测试,但我侧重于设计测试用例的过程而不是执行它们的过程。
假设你是开发工程师,你会怎样设计这个功能?也许会维护一个数据结构,或者沿用已有的结构,在向导页面变化或者用户输入变化时更新它们,在恰当的时候调用CEIP的API把它们记录进去。
假设我是测试工程师,我会列出引用这些数据结构的地方,观察它们是怎样被修改和读取的,思考用怎样的输入,环境条件和执行顺序/时序打破设计或者代码中蕴含的假设,使得进行CEIP记录时它们不能代表真实情况。例如,倘若设计中没有维护“当时状态”的话,一个包含“后退”的动作序列就可以打破原有的假设了。
我还会找出跟相关状态变化有关的界面消息响应,观察所有这些响应最终能不能正确作用在相关状态上。这是容易被忽略的部分,前面基于引用的方法并不能覆盖这种连引用都没有的情况。
当你找到能打破假设的测试用例时,你并不需要执行它就已经可以知道有没有缺陷了,因为它来自于你对设计或者代码的攻击性思考。在真正执行之前,你已经在脑子里执行过一次了。
甚至,你并不需要覆盖所有的用户动作和输入,因为经过设计和代码审核,你已经知道哪些因素跟CEIP相关,有些测试用例是无关和浪费时间的。
可见,为了在把缺陷埋进去之前就采取行动,自动化测试用处并不大,多从用户的角度思考,多分析设计和代码,取得的效果更好。这里我所采取的决策是:
分配较少时间在自动化测试代码编写上
利用代码分析工具,结合设计说明,跟踪CEIP所记录的数据的来源,以及与用户场景(User Scenario)的关系
根据状态机设计的经验,检查当前设计能在多大程度上满足反映“当前状态”的需要
然而我们还是要坚定不移的把想到的测试用例在自动化测试中实现出来并定期执行,并不因为前面说的就把它丢在一旁。
第一,上述在设计层面或者是代码层面的审核和分析不可能,也不必要每天、每次修改代码的时候都做一次。如果有无需人力的验证方法,它就比需要人力的方法优胜。只有设计变动对CEIP功能有足够大的影响时,才会再次分析那些影响。
第二,修改代码,并不一定都是改动CEIP的功能,也就是说,别人、别的团队也可能去修改,同时你不一定还在测试这个功能。“铁打的营盘流水的兵”,这些自动化测试用例,就是铁打的营盘,保证软件质量不会因为流水的兵而崩溃。
上面说的就是决策做不做自动化测试的一个例子,以及期间所需要考虑的各种问题。在微软,自动化测试只是一个工具,做不做、什么情况/时间做,都是全盘分析的结果。就算绝大多数团队都在做,也只是一个结果,而不是原因。独立自主的思考,深入细致的调研,扎实的系统分析能力,代表用户说话,才是微软赞赏的卓越工程。
用户评论(0)
开发技术学习小组列表
PHP开发框架
缓存Memcache
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
手机客户端
ThinkSAAS接收任何功能的Iphone(IOS)和Android手机的客户端定制开发服务
让ThinkSAAS更好,把建议拿来。
iphone扫码下载客户端Linux有非常多的发行版本,从性质上划分,大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本。
商业版本以Redhat为代表,开源社区版本则以debian为代表。这些版本各有不同的特点,在不同的应用领域发挥着不同的作用,不能一概而论。而绝大多数VPS上只提供开源社区维护的发行版本。下面就这些不同的Linux发行版进行简单的分析。
Ubuntu近些年的粉丝越来越多,Ubuntu有着漂亮的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,Ubuntu还对大多数硬件有着良好的兼容性,包括最新的图形显卡等等。这一切让Ubuntu越来越向大众化方向发展。但别忘了:你所需要的只是一个简约、稳定、易用的服务器系统而已!
Ubuntu的图形界面固然漂亮,但这也决定了它最佳的应用领域是桌面操作系统而非服务器操作系统。如何你希望在学习Linux的过程中有个沉浸式的环境,那么Ubuntu的确不错:仅仅安装在自己的电脑中而非服务器中。从这一点来讲,Ubuntu并没有在VPS安装的操作系统选择之列,相信你也不会为了那数百M的驱动与宝贵的内存买单。
你会发现非常多的商业公司部署在生产环境上的服务器都是使用的CentOS系统,CentOS是从RHEL源代码编译的社区重新发布版。CentOS简约,命令行下的人性化做得比较好,稳定,有着强大的英文文档与开发社区的支持。与Redhat有着相同的渊源。虽然不单独提供商业支持,但往往可以从Redhat中找到一丝线索。相对debian来说,CentOS略显体积大一点。是一个非常成熟的Linux发行版。
一般来说Debian作为适合于服务器的操作系统,它比Ubuntu要稳定得多。可以说稳定得无与伦比了。debian整个系统,只要应用层面不出现逻辑缺陷,基本上固若金汤,是个常年不需要重启的系统(当然,这是夸张了点,但并没有夸大其稳定性)。debian整个系统基础核心非常小,不仅稳定,而且占用硬盘空间小,占用内存小。128M的VPS即可以流畅运行Debian,而CentOS则会略显吃力。但是由于Debian的发展路线,使它的帮助文档相对于CentOS略少,技术资料也少一些。
由于其优秀的表现与稳定性,Debian非常受VPS用户的欢迎。
此外还有Arch Linxu、Gentoo、Slackware等一系列的Linux和FreeBSD、Unix等系统,由于其涉及领域更加专业,很少在VPS中出现,因此不作介绍。
对于初学者,我们建议采用CentOS或Debian,这两种系统都能在配置较低的VPS上流畅运行。但是如果VPS配置太低(OPENVZ内存在128M以下,或者XEN架构内存在192M以下),建议采用Debian;否则建议采用CentOS,以获取更多的在线帮助与支持,让自己入门更轻松。
CentOS、Ubuntu、Debian三个linux都是非常优秀的系统,开源的系统,也分付费的商业版和free免费版本,下面简单比较这三种系统。
CentOS系统
很多网站站长一般都选择centOS系统,CentOS是从redhat源代码编译重新发布版。CentOS去除很多与服务器功能无关的应用,系统简单但非常稳定,命令行操作可以方便管理系统和应用,并且有帮助文档和社区的支持。
Ubuntu系统
Ubuntu有亮丽的用户界面,完善的包管理系统,强大的软件源支持,丰富的技术社区,并且Ubuntu对计算机硬件的支持好于centos和debian,兼容性强,Ubuntu应用非常多,但对于服务器系统来说,个人感觉并不需要太多的各种应用程序,需要的是稳定,操作方便,维护简单的系统。如果你需要在服务器端使用图形界面,ubuntu是一个不错的选择,你需要注意的是,图形界面占用的内存非常大,而内存越大的vps价格也越高。
Debian系统
Debian也非常适合做服务器操作系统,与Ubuntu比较,它没有太多的花哨,稳定压倒一切,对于服务器系统来说是一条不变的真理,debian这个linux系统,底层非常稳定,内核和内存的占用都非常小,在小内存的VPS就可以流畅运行Debian,比如128m的内存,但debian的帮助文档和技术资料比较少。对于小内存,首选debian,对于非常熟悉linux系统的vps高手,首选debian。
在系统的选择上,属于新手,首选CentOS,并不是centos比Debian和ubuntu好,而是centos是初学者安装vps的首选,它既稳定,占用资源又少,在网络上能方便搜索到安装配置的文档,自身的帮助文档也非常强大;如果你是linux高手,高手的境界一般都选择debian,因为高手能在低配的vps上稳定运行系统;而ubuntu,系统虽然免费,但它适合有钱人玩,它占用的资源是比前面两种系统更高,而vps基本就是卖内存,内存越高,价格越贵。
我们运行着一些全球最大的互联网的营运,因此我们对可靠性和稳定性非常重视,是我们的第一要务。为此,我们只使用Linux来支撑顾客的系统。但是,我们应该使用哪一个Linux的发行版?答案是,CentOS。 为什么呢?
作为一个庞大的系统运营商,在很长的一段时间里,我们需要在多种大型系统中找到一个可靠的,可预测的系统,我们需要从世界上最强大的软件供应商和开源项目中获得强有力的支持。对于那些最常用的系统,我们需要文档,工具和全球性资源。
正因如此,RedHat / CentOS系列发行版正是我们的选择。他们能够满足以上所有需求,而且问题相对较少、长期稳定,这使得我们能够为成千上万的运行了不同配置、服务和应用的系统提供世界级的维护。
RedHat Enterprise Linux (RHEL)是黄金标准的企业发行版。它每五年左右更新一次,在系统的稳定性,前瞻性和安全性上有着极大的优势。每当新的主版本发行后,比如 5.x亦或最近的6.x,所有版本和代码都将保留不变,只有安全问题或是主要的bug,例如后门,端口之类的问题,会通过发布新的子版本来修复。
CentOS是RHEL发行版对应的开源版本,通常在RedHat的发布后就会很快发行。我们使用CentOS的原因在于RHEL发行版的标准支持服务费用非常高,大约每台服务器800美元左右,对于我们很多拥有数十台甚至上百台服务器的用户来说,这是必须要控制的成本。
RHEL/CentOS系统有两个潜在的问题。
首先,一旦确定了主版本,,除了安全问题和严重故障会被修复以外,其他内容将不会做任何改变。这虽然对稳定性有好处,但是对许多服务不利。比如MySQL和PHP服务,它们在这五年的CentOS/RHEL主版本发布周期中会进行繁重的开发和大量的修改。例如,MySQL5.0 是当前RHEL/CentOS主版本所默认使用的版本,但是当前MySQL已经更新到5.1和5.5版本了。
幸运的是,这个问题被Yum软件包管理器轻易地解决了。如此以来,那些主要的软件,例如当前RHEL/CentOS中实际的组件,包括内核和所有工具等仍然来自发行版, 但是那些附加的软件,例如Nginx,Apache,PHP,Java和MySQL等等来自更新的软件源例如Fedora; 或者直接从开发商获取更新的版本例如MySQL。 在我们这里,我们有自己专用的安装镜像来全自动的处理所有这些事情。
其次,CentOS的发行会滞后于RedHat的发行,包括关键的补丁和修复。这在RHEL 6.x的发行周期中尤为显著。但是根据我们的经验,这没什么好担心的,对我们来说永远不会成为问题。
很多人询问我们为什么不用基于Debian的系统,例如Debian或者Ubuntu服务器。如果在别无选择的情况下,我们的确会支持这个建议,但是根据我们的经验来看,这些系统并不如RHEL/CentOS来的稳定和可靠。
我们认为,这在某种程度上是由于他们过快的发展和各个版本、组合之间较少的测试且不成熟所导致的。然而尽管他们非常流行,但是主要的服务商和项目都仍然首选RHEL/CentOS系统,因为这样他们就可以为企业顾客提供服务,(对Oracle和MySQL更是如此)。除此之外,基于Debian的系统有许多内核和稳定性问题,尤其是在我们的云计算服务中。
对我们而言,唯一使用Debian/Ubuntu的原因是:
“它们能够为一个系统提供必要的特殊服务时,尤其是当一些驱动程序或者一些IO 子系统需要一种新的内核的时候”。例如,ext4 文件系统或在最近的内核中日志的改变等;现在,所有这一切都包含在了RHEL/CentOS6.x中。
当然,多数Linux开发者都使用的是Ubuntu的桌面版,而且可以理解的是,他们更倾向在开发生产时使用相同的系统,并且还能使用很多有趣的工具。但总体上来说,我们依然认为RHEL/CentOS是一个更优越的部署平台,并且已经有十多个客户成功地转向使用CentOS 作为生产环境并且没有任何问题,但这仍然是艰巨的任务。
总的来说,你将更乐于看到一个良好管理的CentOS 系统。我们有成千上万台服务器使用CentOS平台,而每年平均只有一台服务器崩溃。我们也很难想象它竟如此罕见,所以,挑一个优秀、迅捷、可靠的平台吧!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:29211次
排名:千里之外
原创:18篇
转载:48篇
(7)(20)(3)(1)(2)(7)(5)(1)(2)(1)(1)(9)(3)(8)(2)(1)xutao3653 的BLOG
用户名:xutao3653
文章数:25
评论数:74
访问量:119256
注册日期:
阅读量:938
阅读量:5660
阅读量:621
51CTO推荐博文
CentOS下安装fail2ban防暴力破解工具:
前言:首先说说为什么笔者会想到写这篇博客,源于昨天下午,突然收到Nagios的报警邮件,说邮件服务器的进程数超过阀值。于是赶紧登录上去查看。
这里说下分析的过程:
1.既然说进程数超过阀值,肯定先查看进程:ps -ef;
2.如果不能即时看到问题,那就动态显示:top,看看究竟是哪个程序占用这么多进程;
3.最后确定了应该是courier-imap,但还不知道是什么原因导致;
4.查看ip连接,确认是否是其存在问题:netstat -ant,发现有大量的110连接;
5.既然是收信服务,那就赶紧追踪查看邮件日志:tail -f /var/log/maillog;
6.发现问题:日志里有大量的登录错误信息,发现是同一ip,并在用不同的用户名密码来暴力破解
7.稍等一会,确定目标IP后,将其ip的包丢弃:iptables -I INPUT -s 176.61.143.41 -j DROP& &#此ip为真实攻击ip,所以在此曝光
8.稍等一会,再次查看进程,进程数有明显下降,故障解决。
介于这种安全隐患的存在,我们以后可以利用fail2ban来实现防暴力破解,防止恶意攻击。
下面就来说说fail2ban具体是什么。
fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很强大的软件!
功能和特性:
  1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
  2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
  3、在logpath选项中支持通配符
  4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
  5、需要安装python,iptables,tcp-wrapper,shorewall,Gamin。如果想要发邮件,那必需安装postfix或sendmail
核心原理:
其实fail2ban就是用来监控,具体是调用iptables来实现动作!
好了,那下面来说说具体怎么安装、部署吧。
一、首先是服务安装
首先配置yum源,这里采用的是yum直接装(也可源码安装)
&vim /etc/yum.repos.d/CentOS-Base.repo
在最后新增:
[atrpms]&name=Red&Hat&Enterprise&Linux&$releasever&-&$basearch&-&ATrpms&baseurl=http://dl.atrpms.net/el$releasever-$basearch/atrpms/stable&gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms&gpgcheck=1&enabled=1&
然后直接就yum装:yum -y install fail2ban
安装完成后,服务配置目录为:/etc/fail2ban
/etc/fail2ban/action.d & & & & & & & &#动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf & & & & & #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d & & & & & & & &#条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf & & & & & & & #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
/etc/rc.d/init.d/fail2ban & & & & & & #启动脚本文件
二、安装后配置
首先来看看日志文件的默认定义:
cat /etc/fail2ban/fail2ban.conf |grep -v ^#
[Definition]&loglevel&=&3&logtarget&=&SYSLOG&&&&&&&&&&&&&
#我们需要做的就是把这行改成/var/log/fail2ban.log,方便用来记录日志信息&socket&=&/var/run/fail2ban/fail2ban.sock&
再来看看主配置默认生效的配置:
cat /etc/fail2ban/jail.conf |grep -v ^# |less
[DEFAULT]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#全局设置&ignoreip&=&127.0.0.1&&&&&&&&&&&&&&&&&&&&&&#忽略的IP列表,不受设置限制(白名单)&bantime&&=&600&&&&&&&&&&&&&&&&&&&&&&&&&&&&#屏蔽时间,单位:秒&findtime&&=&600&&&&&&&&&&&&&&&&&&&&&&&&&&&#这个时间段内超过规定次数会被ban掉&maxretry&=&3&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#最大尝试次数&backend&=&auto&&&&&&&&&&&&&&&&&&&&&&&&&&&&#日志修改检测机制(gamin、polling和auto这三种)&&[ssh-iptables]&&&&&&&&&&&&&&&&&&&&&&&&&&&&#针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置&enabled&&=&true&&&&&&&&&&&&&&&&&&&&&&&&&&&#是否激活此项(true/false)&filter&&&=&sshd&&&&&&&&&&&&&&&&&&&&&&&&&&&#过滤规则filter的名字,对应filter.d目录下的sshd.conf&action&&&=&iptables[name=SSH,&port=ssh,&protocol=tcp]&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#动作的相关参数&&&&&&&&&&&&sendmail-whois[name=SSH,&dest=root,&sender=fail2ban@]&&&#触发报警的收件人&logpath&&=&/var/log/secure&&&&&&&&&&&&&&&&#检测的系统的登陆日志文件&maxretry&=&5&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&#最大尝试次数&
PS:logpath(Centos5和Rhel5中)要写成/var/log/secure,这个是系统登陆日志,不能随意设置
service fail2ban start & & & & & & & & & & #启动服务即可(就用默认的主配置文件里定义的)
service iptables start & & & & & & & & & & #fail2ban依赖预iptables & & & & & & & & & & & & & & & & & & & & & & & & & &#之前改过日志路径,不行的话就再重启fail2ban&
三、测试功能
测试机:192.168.30.251
fail2ban:192.168.29.253
在测试机上ssh 192.168.29.253,并且连续输入超过5次密码不对(经测试有延迟,多试几次),就会出现下图,连接不上
fail2ban上会产生日志记录:阻挡了此ip的续连
四、扩展说明
其实fail2ban的功能还是很丰富的,刚刚只是测试了它的防ssh暴力破解功能。
下面简单提下我用的一些功能:
本人是用在邮件服务器上,所以会监控pop、http等服务,具体配置见下(不做演示了)
[pop3]&enabled&=&true&filter&&&=&courierlogin&action&&&=&iptables[name=pop3,&port=110,&protocol=tcp]&logpath&=&/var/log/maillog&bantime&=&1800&findtime&=&300&maxretry&=&30&&[webmail]&enabled&=&true&filter&&&=&webmail&action&&&=&iptables[name=httpd,&port=http,&protocol=tcp]&logpath&=&/var/log/maillog&bantime&=&900&findtime&=&300&maxretry&=&5&
好了,就先到这里吧!
&本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)
11:21:29 13:02:02 17:29:52 12:33:27 23:05:48树莓派瑞士军刀扩展板(SAKS)
树莓派瑞士军刀扩展板是由一系列元件经过精心构建而成的多功能扩展板,适用于40Pin GPIO口的树莓派系列。您可以基于树莓派主机和本产品学习树莓派GPIO的使用,开发出各种的上层软件,软硬件结合,研发出功能丰富的功能和应用。
您对这儿的内容还有疑问?
是否想深入了解?
实践上是否需要支持?
欢迎加入我们的社区,这里有热心技术宅倾力支持!
格林 (Gray Girling) (平装 - Jun 1, 2014)
赞助与合作
“树莓派实验室”欢迎同类网站、社区与我们展开各类形式的合作,同时也在寻求有节操的硬件供应商的赞助。
请邮件联系 [
您对这儿的内容还有疑问?
是否想深入了解?
实践上是否需要支持?
欢迎加入我们的社区,这里有热心技术宅倾力支持!
实验室QQ群:微信公众号:centoscn
CentOS防火墙的设置与优化
一、设置主机防火墙。
开放: 服务器的:web服务、vsftpd 文件服务、ssh远程连接服务、ping 请求。
1、开放sshd服务
开放流入本地主机,22端口的数据报文。
[root@stu13&~]#&iptables&-A&INPUT&--destination&192.168.60.99&-p&tcp&--dport&22&-j&ACCEPT
开放从本地主机22端口流出的数据报文
[root@stu13&~]#&iptables&-A&OUTPUT&--source&192.168.60.99&-p&tcp&--sport&22&-j&ACCEPT
修改默认策略为:DROP。 目的禁止所有报文通过本机的TCP/IP协议栈,再开放指定端口的服务。
[root@stu13&~]#&iptables&-P&INPUT&DROP
[root@stu13&~]#&iptables&-P&OUTPUT&DROP
[root@stu13&~]#&iptables&-L&-n&-v
Chain&INPUT&(policy&DROP&554&packets,&53329&bytes)&----&&已经阻止到数据包了
&pkts&bytes&target&prot&opt&in&&out&&&source&&&&&&&&&&destination
&&ACCEPT&tcp&&--&&*&&&*&&&&&0.0.0.0/0&&&&&&&192.168.60.99&&&&&&&tcp&dpt:22
&&&匹配到数据包
Chain&FORWARD&(policy&ACCEPT&0&packets,&0&bytes)
&pkts&bytes&target&prot&opt&in&&out&&&source&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
&pkts&bytes&target&prot&opt&in&&out&&&source&&&&&&&&&&&destination
&&681&96248&ACCEPT&tcp&&--&&*&&&&&&*&&192.168.60.99&&&&0.0.0.0/0&&&&&&&&&&&tcp&spt:22
2、开放本机提供的web服务:
开放访问本机的80,443服务。
开放流入本地主机,80端口的数据报文
[root@stu13&~]#&iptables&-A&INPUT&--dst&192.168.60.99&-p&tcp&--dport&80&-j&ACCEP
开放从本地主机80端口流出的数据报文
[root@stu13&~]#&iptables&-A&OUTPUT&--src&192.168.60.99&-p&tcp&--sport&80&-j&ACCEPT
开放流入本地主机,443端口的数据报文
[root@stu13&~]#&iptables&-A&INPUT&--dst&192.168.60.99&-p&tcp&--dport&443&-j&ACCEPT
开放从本地主机443端口流出的数据报文
[root@stu13&~]#&iptables&-A&OUTPUT&--src&192.168.60.99&-p&tcp&--sport&443&-j&ACCEPT
3、本机可以接受ping
开放应用层协议为icmp数据报文流入本机
[root@stu13&~]#&iptables&-A&INPUT&-p&icmp&-j&ACCEPT
开放应用层协议为icmp数据报文流出本机
[root@stu13&~]#&iptables&-A&OUTPUT&-p&icmp&-j&ACCEPT
4、开放被动模式FTP服务
开放命令连接的21端口
装载模块:这是连接追踪ftp服务器的数据连接的模块。
[root@stu13&httpd-2.4.9]#&modprobe&nf_conntrack_ftp
查看是否装载成功
[root@stu13&~]#&lsmod&&|&grep&&nf_conntrack_ftp&
nf_conntrack_ftp&&&&&&&10475&&0
nf_conntrack&&&&&&&&&&&65428&&3&nf_conntrack_ftp,nf_conntrack_ipv4,xt_
开放应用层协议为tcp,目标端口为21的数据报文流入本机
[root@stu13&~]#&iptables&-A&INPUT&--dst&192.168.60.99&-p&tcp&--dport&21&-m&state&--state&NEW&-j&ACCEPT
使用iptables的状态追踪功能,追踪ftp服务器的数据传输端口,意思是说:只要是找开的数据传输连接传输的数据报文与某个已经建立连接有关连,就允许开数据包通过。
[root@stu13&~]#&iptables&-A&INPUT&--dst&192.168.60.99&-m&state&--state&ESTABLISHED,RELATED&-j&ACCEPT
[root@stu13&~]#&iptables&-A&OUTPUT&--src&192.168.60.99&-m&state&--state&RELATED,ESTABLISHED&-j&ACCEPT
二、测试:主机防火墙开放的服务是否成功:
、PING 测试:本机PING其它主机&
[root@stu13&~]#&ping&-c&1&192.168.60.1
PING&192.168.60.1&(192.168.60.1)&56(84)&bytes&of&data.
64&bytes&from&192.168.60.1:&icmp_seq=1&ttl=64&time=1.81&ms
---&192.168.60.1&ping&statistics&---
1&packets&transmitted,&1&received,&0%&packet&loss,&time&2ms
rtt&min/avg/max/mdev&=&1.812/1.812/1.812/0.000&ms
在windows下ping 192.168.60.99主机
D:\&ping&192.168.60.99
正在&Ping&192.168.60.99&具有&32&字节的数据:
来自&192.168.60.99&的回复:&字节=32&时间=2ms&TTL=64
来自&192.168.60.99&的回复:&字节=32&时间&1ms&TTL=64
192.168.60.99&的&Ping&统计信息:
&&&&数据包:&已发送&=&2,已接收&=&2,丢失&=&0&(0%&丢失),
往返行程的估计时间(以毫秒为单位):
&&&&最短&=&0ms,最长&=&2ms,平均&=&1ms
2、测试80服务
[root@nfs&~]#&curl&-eI&http://192.168.60.99/index.html
&h1&This&Server&is&OK...&/h1&
3、在Windows 下测试:文件服务器。
D:\&ftp&192.168.60.99
连接到&192.168.60.99。
220&(vsFTPd&2.2.2)
用户(192.168.60.99:(none)):&ftp
331&Please&specify&the&password.
230&Login&successful.
ftp&&get&pub/inittab
200&PORT&command&successful.&Consider&using&PASV.
150&Opening&BINARY&mode&data&connection&for&pub/inittab&(884&bytes).
226&Transfer&complete.
ftp:&收到&884&字节,用时&0.00秒&千字节/秒。
4、测试连接到ssh服务
[root@nfs&~]#&ssh&192.168.60.99
Last&login:&Mon&Aug&18&17:51:20&2014
三、分析优化防火墙
设置开放特定服务后的filter表的规则如下:
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&1911&packets,&223K&bytes)
num&&&pkts&bytes&target&&&prot&opt&in&&&out&&source&&&&&&&&destination
1&&&&&K&ACCEPT&&&cp&&&--&&*&&&&*&&&&0.0.0.0/0&&&&&192.168.60.99&tcp&dpt:22
2&&&&&&&51&&4545&ACCEPT&&&tcp&&--&&*&&&&*&&&&0.0.0.0/0&&&&&192.168.60.99&tcp&dpt:80
3&&&&&&&&1&&&&60&ACCEPT&&&cp&&&--&&*&&&&*&&&&0.0.0.0/0&&&&&192.168.60.99&tcp&dpt:443
4&&&&&&&&4&&&288&ACCEPT&&&icmp&--&&*&&&&*&&&&0.0.0.0/0&&&&&0.0.0.0/0
5&&&&&&&12&&&624&ACCEPT&&&tcp&&--&&*&&&&*&&&&0.0.0.0/0&&&&&192.168.60.99&tcp&dpt:21&state&NEW
6&&&&&&174&&8122&ACCEPT&&&all&&--&&*&&&&*&&&&0.0.0.0/0&&&&&192.168.60.99&state&RELATED,ESTABLISHED
Chain&FORWARD&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&8&packets,&480&bytes)
num&&&pkts&bytes&target&&&prot&opt&in&&out&&source&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&tcp&&--&&*&&&*&&&&192.168.60.99&&&&0.0.0.0/0&&&&&tcp&spt:22
2&&&&&&&40&&4522&ACCEPT&&&tcp&&--&&*&&&*&&&&192.168.60.99&&&&0.0.0.0/0&&&&&tcp&spt:80
3&&&&&&&&1&&&&40&ACCEPT&&&tcp&&--&&*&&&*&&&&192.168.60.99&&&&0.0.0.0/0&&&&&tcp&spt:443
4&&&&&&&&4&&&288&ACCEPT&&&icmp&--&&*&&&*&&&&0.0.0.0/0&&&&&&&&0.0.0.0/0
5&&&&&&328&22614&ACCEPT&&&all&&--&&*&&&*&&&&192.168.60.99&&&&0.0.0.0/0&&&&state&RELATED,ESTABLISHED
1、优化策略:将多条规则合并成一条。
(1)、使用umltiport扩展模块合并端口模块:
[root@stu13&httpd-2.4.9]#&ll&/lib/xtables-1.4.7/&|&grep&&multiport&
-rwxr-xr-x.&1&root&root&10772&Feb&22&&2013&libxt_multiport.so
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&--dst&192.168.60.99&-p&tcp&-m&multiport&--dports&80,443,22&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&2
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&2
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&2
[root@stu13&httpd-2.4.9]#&iptables&-I&OUTPUT&--src&192.168.60.99&-p&tcp&-m&multiport&--sports&80,443,22&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-D&OUTPUT&2
[root@stu13&httpd-2.4.9]#&iptables&-D&OUTPUT&2
[root@stu13&httpd-2.4.9]#&iptables&-D&OUTPUT&2
(2)、查看合并端口后filter过滤表
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&20&packets,&2060&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&813&49587&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&multiport&dports&80,443,22
2&&&&&&&&4&&&288&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&&13&&&676&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:21&state&NEW
4&&&&&&196&&9102&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&RELATED,ESTABLISHED
Chain&FORWARD&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&165&21277&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&multiport&sports&80,443,22
2&&&&&&&&4&&&288&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&355&24153&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED,ESTABLISHED
2、使用iptables/netfiltes提供的状态追踪功能优化防火墙;
iptables/netfiter提供有一个状态追踪功能,只要第一次连接都是NEW状态。下一次连接只要在状态追踪表的计数器的时间没到之前,该客户端重新建立的连接,iptables/netfilter 也认为该连接是ESTABLISHED状态的。
& & &通常情况下,处于ESTABLISHED状态的连接要比处于NEW状态的连接要多得多,那么意味着:ESTABLISHED状态的连接传输的数据报文通常要比NEW状态的连接传输的数据报文要多得多。数据报文经过某链时,数据报文与链中的定义的规则一一做匹配,顺序是从上到下依次做匹配操作。如果数据报文的某些特征,如:源IP地址、目标IP地址、源端口、目标端口、连接的状态、TCP的标志位等,与链中定义的规则匹配到了,就执行【-j】后面的 action(如:DROP|ACCEPT等)。如果数据报文与它经过的链中的规则从上到下一一做匹配,都没有匹配到的话,就执行iptables中定义的默认规policy。因为,定义防火墙规则的时候,首先拒绝所有(默认策略都为:DROP),开放某些服务的数据报文通过.处于ESTABLISHED状态的连接传输的数据报文通常是安全的,应该允许它通过,而数据报文通过的链的要做规则检查的规则又有很多,而处于ESTABLISHED状态的连接,要传输的数据报文很多,那么怎么样要它快速通过iptables/netfilter的防火墙的规则检查呢?
(1)、根据防火墙做数据报文的匹配规则,应该让处于ESTABLISHED状态的连接传输的数据报文快速&&&&&&通过变卦的规则检查,意思是说:防火墙根据连接追踪功能一发现该数据报文是ESTABLISHED&&&&&&状态的连接发送的,立马发行。做法:把允许处于ESTABLISHED连接的数据报文通过的策略放&&&&&&&在链的所有规则的最前面。
(2)、状态检测,是连接追踪模块实现的。连接追踪模块在内核内存中维护一张追踪表,记录每个连&&&&&接的状态,以及连接处于ESTABLISHED的状态的超时时间和可以追踪多少个连接以及目前正追&&&&&&踪的连接数等等。注意:要根据实际应用开启或关闭连接追踪功能。
&连接追踪模块可以追踪的连接数量
[root@stu13&httpd-2.4.9]#&cat&/proc/sys/net/nf_conntrack_max
&连接处于ESTABLISHED状态的超时时长
[root@stu13&/]#&cat&/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established
&432000&&约等于5天。
&当前追踪的所有连接:
&[root@stu13&httpd-2.4.9]#&cat&/proc/sys/net/netfilter/nf_conntrack_count
& & 如果,我们启用了iptables/netfilterr 的连接追踪功能的话,当前追踪的所有连接数已经达到连接追踪模块可以追踪的连接数量的上限了,且连接追踪到的连接处于ESTABLISHED状态的连接,还没到失效时间。后续新的连接只能等待,iptables/netfilter的连接追踪表有连接的超时时间到。才可以通过我们的防火墙。而防火墙定义的ESTABLISHED状态的走超时时长为5天,而我们的TCP连接在TCP的各种状态的超时时长,都是很短的。所以。会导致大量的后续新的连接被拒绝。也就是出现连接服务器超时的情况发生。所以,根据实际应用调整这些参数很关键。或比较繁忙的服务器就不应该开启iptables/netflter的连接追踪功能。
iptables/netfilter的连接追踪功能是通过下述扩展模块实现的。
[root@stu13&httpd-2.4.9]#&ll&/lib/xtables-1.4.7/&|&grep&&state&
-rwxr-xr-x.&1&root&root&&5860&Feb&22&&2013&libxt_state.so
提供,允许发往特定端口处于ESTABLISHED状态连接的数据报文通过TCP/IP协议栈,且把该规则放在链的所有规则的最前面。
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&1&--dst&192.168.60.99&-p&tcp&-m&multiport&--dports&80,443,22&-m&state&--state&&ESTABLISHED,NEW&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&2
OUTPUT表:允许处于ESTABLISHED状态连接的数据报文从本机出去。且把该规则放在链的所有规则的最前面。
[root@stu13&httpd-2.4.9]#&iptables&-I&OUTPUT&1&--src&192.168.60.99&-p&tcp&-m&multiport&--sports&80,443,22&-m&state&--state&ESTABLISHE&-j&ACCEPT
[root@stu13&~]#&iptables&-D&OUTPUT&2
使用状态检测功能优化后的:
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&138&packets,&12760&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&760&49519&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&multiport&dports&80,443,22&state&NEW,ESTABLISHED
2&&&&&&&14&&1128&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&&18&&&936&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:21&state&NEW
4&&&&&&299&13853&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&RELATED,ESTABLISHED
Chain&FORWARD&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&multiport&sports&80,443,22&state&ESTABLISHED
2&&&&&&&14&&1128&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&465&30940&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED,ESTABLISHED
& &因为,只要是ESTABLISHED状态的连接的数据报文,是不会有问题的。不需要检测端口了。这样提高了iptable/netfiler检测数据报文的速度。只要是ESTABLISHED状态的连接的数据报文都允许通过。
所以,对上述的INPUT表的第一条规则进行拆分,如下
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&1&--dst&192.168.60.99&-p&tcp&-m&state&--state&ESTABLISHED&-j&ACCEPT
并把发往指定端口的数据报文,进行NEW状态的数据报文检测组成一条规则
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&2&--dst&192.168.60.99&-p&tcp&-m&multiport&--dports&80,443,21,22&-m&state&--state&NEW&-j&ACCEPT
修改第三条规则
[root@stu13&httpd-2.4.9]#&iptables&-R&INPUT&3&--dst&192.168.60.99&-m&state&--state&RELATED&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&3
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&4
修改后INPUT表变成
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&129&packets,&11581&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&ESTABLISHED
2&&&&&&&35&&1820&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&multiport&dports&80,443,21,22&state&NEW
3&&&&&&&&7&&&364&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&RELATED
4&&&&&&&&0&&&&&0&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
。。。。。。
分析OUTPU表
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&multiport&sports&80,443,22&state&ESTABLISHED
2&&&&&&&22&&1608&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&547&36931&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED,ESTABLISHED
分析:跟上述一样,允许处于ESTABLISHED状态的连接的数据报文通过TCP/IP协议栈。修改OUTPUT表的第1条与第3条规则
修改第一条规则
[root@stu13&httpd-2.4.9]#&iptables&-R&OUTPUT&1&--src&192.168.60.99&-p&tcp&-m&state&--state&ESTABLISHED&-j&ACCEPT
修改第三条规则
[root@stu13&httpd-2.4.9]#&iptables&-R&OUTPUT&3&--src&192.168.60.99&-m&state&--state&RELATED&-j&ACCEPT
修改后的OOUPUT表的规则如下:
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
。。。。。
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&794&&148K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&ESTABLISHED
2&&&&&&&22&&1608&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&&&0&&&&&0&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED
经过使用端口合并和iptables/netfilter的状态追踪功能优化规则表之后:
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&540&packets,&53525&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&225&10816&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&ESTABLISHED
2&&&&&&&&0&&&&&0&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&multiport&dports&80,443,21,22&state&NEW
3&&&&&&&&0&&&&&0&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&RELATED
4&&&&&&&&0&&&&&0&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&FORWARD&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&194&27924&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&ESTABLISHED
2&&&&&&&&0&&&&&0&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
3&&&&&&&&0&&&&&0&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED
3、使用自定义链分成分成等级iptables规则:
如果,防火墙规则很多的话,这样写就显示得很乱,不明了。造成后续添加规则就在很多不便。因为,每种服务的访问量都不一样。简单的合并多个端口的做法并是不很理想。
最好为开放的每个服务都使用一条自定义链。这样,以后我们要为某服务添加或删除规则只要找到该服务对应的自定义链,就可以操作了,很方便。如下:
(1)、为http 80服务自定义一条链
[root@stu13&~]#&iptables&-t&filter&-N&http_in
[root@stu13&~]#&iptables&-A&http_in&-d&192.168.60.99&-p&tcp&--dport&80&&-m&state&--state&NEW&-j&ACCEPT
INPUT链调用该链
[root@stu13&~]#&iptables&-I&INPUT&2&-d&192.168.60.99&-p&tcp&--dport&80&-j&http_in
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
[root@stu13&httpd-2.4.9]#&iptables&-A&http_in&-j&RETURN
(2)、为https 443 服务自定义一条链
[root@stu13&~]#&iptables&-t&filter&-N&https_in
[root@stu13&~]#&iptables&-A&https_in&-d&192.168.60.99&-p&tcp&--dport&443&-m&state&--state&NEW&-j&ACCEPT
调用自定义链
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&3&-d&192.168.60.99&-p&tcp&--dport&443&-j&https_in
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
[root@stu13&httpd-2.4.9]#&iptables&-A&https_in&-j&RETURN
(3)、为ssh服务自定义一条链
[root@stu13&~]#&iptables&-t&filter&-N&ssh_in
[root@stu13&~]#&iptables&-A&ssh_in&-d&192.168.60.99&-p&tcp&--dport&22&-m&state&--state&NEW&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&4&-d&192.168.60.99&-p&tcp&--dport&22&-j&ssh_in
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
[root@stu13&httpd-2.4.9]#&iptables&-A&ssh_in&-j&RETURN
(4)、为vsftp文件服务自定义一条链
[root@stu13&~]#&iptables&-t&filter&-N&vsftp_in
[root@stu13&~]#&iptables&-A&vsftp_in&-d&192.168.60.99&-p&tcp&--dport&21&-m&state&--state&NEW&-j&ACCEPT
[root@stu13&httpd-2.4.9]#&iptables&-I&INPUT&5&-d&192.168.60.99&-p&tcp&--dport&21&-j&vsftp_in
如果,使用自定义规则检测数据报文没有匹配到则返回主链INPUT
[root@stu13&httpd-2.4.9]#&iptables&-A&vsftp_in&-j&RETURN
(5)、删除INPUT链的第6条规则(端口合并那条链)
[root@stu13&httpd-2.4.9]#&iptables&-D&INPUT&6
使用自定义链后,规则表如下:
[root@stu13&~]#&iptables&--line-numbers&-L&-n&-v
Chain&INPUT&(policy&DROP&928&packets,&83409&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&ESTABLISHED
2&&&&&&&&6&&&312&http_in&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:80
3&&&&&&&&0&&&&&0&https_in&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:443
4&&&&&&&&2&&&104&ssh_in&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:22
5&&&&&&&&2&&&104&vsftp_in&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:21
6&&&&&&&&8&&&416&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&state&RELATED
7&&&&&&&&8&&&672&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&FORWARD&(policy&DROP&0&packets,&0&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
Chain&OUTPUT&(policy&DROP&2&packets,&120&bytes)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&K&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&ESTABLISHED
2&&&&&&&&0&&&&&0&ACCEPT&&&&&all&&--&&*&&&&&&*&&&&&&&192.168.60.99&&&&&&&&0.0.0.0/0&&&&&&&&&&&state&RELATED
3&&&&&&&&8&&&672&ACCEPT&&&&&icmp&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&http_in&(1&references)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&&&6&&&312&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:80&state&NEW
2&&&&&&&&0&&&&&0&RETURN&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&https_in&(1&references)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&&&0&&&&&0&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:443&state&NEW
2&&&&&&&&0&&&&&0&RETURN&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&ssh_in&(1&references)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&&&2&&&104&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:22&state&NEW
2&&&&&&&&0&&&&&0&RETURN&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
Chain&vsftp_in&(1&references)
num&&&pkts&bytes&target&&&&&prot&opt&in&&&&&out&&&&&source&&&&&&&&&&&&&&&destination
1&&&&&&&&2&&&104&ACCEPT&&&&&tcp&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&192.168.60.99&&&&&&&tcp&dpt:21&state&NEW
2&&&&&&&&0&&&&&0&RETURN&&&&&all&&--&&*&&&&&&*&&&&&&&0.0.0.0/0&&&&&&&&&&&&0.0.0.0/0
& &在INPUT链,根据实际应用情况,服务的访问繁忙程序调整,http_in、https_in、ssh_in、vsftp_in的先后顺序,来优化iptables/netfilter
有了自定义链后,数据报文的检查流程如下图:
四、测试优化后的防火墙策略是否成功:
1、测试 http 80 服务
[root@nfs&~]#&curl&http://192.168.60.99/index.html
&h1&This&Server&is&OK...&/h1&
2、测试 ssh 服务
[root@nfs&~]#&ssh&192.168.60.99
Last&login:&Mon&Aug&18&20:21:25&2014&from&192.168.60.88
3、测试vsftp 服务
D:\&ftp&192.168.60.99
连接到&192.168.60.99。
220&(vsFTPd&2.2.2)
用户(192.168.60.99:(none)):&ftp
331&Please&specify&the&password.
230&Login&successful.
ftp&&get&pub/inittab
200&PORT&command&successful.&Consider&using&PASV.
150&Opening&BINARY&mode&data&connection&for&pub/inittab&(884&bytes).
226&Transfer&complete.
ftp:&收到&884&字节,用时&0.07秒&12.63千字节/秒。
4、测试ping
(1)、ping本主机
D:\&ping&192.168.60.99
正在&Ping&192.168.60.99&具有&32&字节的数据:
来自&192.168.60.99&的回复:&字节=32&时间=1ms&TTL=64
来自&192.168.60.99&的回复:&字节=32&时间&1ms&TTL=64
来自&192.168.60.99&的回复:&字节=32&时间&1ms&TTL=64
来自&192.168.60.99&的回复:&字节=32&时间&1ms&TTL=64
192.168.60.99&的&Ping&统计信息:
&&&&数据包:&已发送&=&4,已接收&=&4,丢失&=&0&(0%&丢失),
往返行程的估计时间(以毫秒为单位):
&&&&最短&=&0ms,最长&=&1ms,平均&=&0ms
(2)、本主机ping别的主机
[root@stu13&~]#&ping&-c&1&192.168.60.88
PING&192.168.60.88&(192.168.60.88)&56(84)&bytes&of&data.
64&bytes&from&192.168.60.88:&icmp_seq=1&ttl=64&time=0.590&ms
---&192.168.60.88&ping&statistics&---
1&packets&transmitted,&1&received,&0%&packet&loss,&time&5ms
rtt&min/avg/max/mdev&=&0.590/0.590/0.590/0.000&ms
(3)、回环地址
[root@stu13&~]#&ping&-c&1&127.0.0.1
PING&127.0.0.1&(127.0.0.1)&56(84)&bytes&of&data.
64&bytes&from&127.0.0.1:&icmp_seq=1&ttl=64&time=0.375&ms
---&127.0.0.1&ping&statistics&---
1&packets&transmitted,&1&received,&0%&packet&loss,&time&0ms
rtt&min/avg/max/mdev&=&0.375/0.375/0.375/0.000&ms
------分隔线----------------------------
ossec官方网站http://www.ossec.net/
ossec帮助文档http://ossec-docs.readthedocs.o...

我要回帖

更多关于 centos为什么这么大 的文章

 

随机推荐