【转】Centos5.5 X86_64下安装PortSentry1.2防止恶意扫描 (2011-12-15 11:41)_weixin_33727510的博客-程序员秘密

技术标签: 网络  系统安全  操作系统  

 

标签class 原创 normal  分类: Linux防火墙|系统安全

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。

我在检查一台Centos5.5服务器的安全环境时,发现很多IP在恶意扫描此服务器的端口,本来想部署snort防入侵环境的,后来发现snort环境部署非常复杂,而以上的恶意扫描完全可以用PortSentry来实现。PortSentry是入侵检测工具中配置最简单、效果最直接的工具之一。PortSentry是Abacus工程的一个组成部分。Abacus工程的目标是建立一个基于主机的网络入侵检测系统,可以从http://www.psonic.com的到关于Abacus工程更为详细的信息。虽然PortSentry被cisco收购后不再开发,但丝毫不影响此软件的强大功能。PortSentry可以实时检测几乎所有类型的网络扫描,并对扫描行为做出反应。一旦发现可疑的行为,PortSentry可以采取如下一些特定措施来加强防范:

给出虚假的路由信息,把所有的信息流都重定向到一个不存在的主机;

自动将对服务器进行端口扫描的主机加到TCP-Wrappers的/etc/hosts.deny文件中去,我个人比较喜欢这种方式,因为线上许多环境并非都能打开iptables,这个选项也是PortSentry默认的功能;

利用Netfilter机制,用包过滤程序,比如iptables和ipchain等,把所有非法数据包(来自对服务器进行端口扫描的主机)都过滤掉;

通过syslog()函数给出一个目志消息,甚至可以返回给扫描者一段警告信息。

一、PortSentry的安装

下面详细介绍PortSentry工具的安装和配置方法。

1.从http://sourceforge.net/projects/sentrytools/下载软件的最新版portsentry-1.2.tar.gz,用root用户执行如下命令进行安装:

#tar zxvf portsentry-1.2.tar.gz

#cd portsentry-1.2_beta

#make

#make install

进行到这步时发现报错,系统生成不了protsentry执行文件,我们查看Makefile文件时发现,make后面根据操作系统的不同有许多选项。

所以我们重新执行此步操作,将目录删除重新解压缩

然后我们执行make linux,发现系统仍然报错,如下:

SYSTYPE=linux

Making

cc -O -Wall -DLINUX -DSUPPORT_STEALTH -o ./portsentry ./portsentry.c \

./portsentry_io.c ./portsentry_util.c

./portsentry.c: In function ?.ortSentryModeTCP?.

./portsentry.c:1187: warning: pointer targets in passing argument 3 of ?.ccept?.differ in signedness

./portsentry.c: In function ?.ortSentryModeUDP?.

./portsentry.c:1384: warning: pointer targets in passing argument 6 of ?.ecvfrom?.differ in signedness

./portsentry.c: In function ?.sage?.

./portsentry.c:1584: error: missing terminating " character

./portsentry.c:1585: error: ?.ourceforget?.undeclared (first use in this function)

./portsentry.c:1585: error: (Each undeclared identifier is reported only once

./portsentry.c:1585: error: for each function it appears in.)

./portsentry.c:1585: error: expected ?.?.before ?.ot?

./portsentry.c:1585: error: stray ?.?.in program

./portsentry.c:1585: error: missing terminating " character

./portsentry.c:1595: error: expected ?.?.before ?.?.token

make: *** [linux] Error 1

解决方法:

我们打开portsentry.c文件,在1590行左右,我们将带有Copyright 1997-2003字样的那行调整为一行即可,如下图所示

12924167_1323920623818s.jpg

图1-1 文字有白线标记的那行代码应调整为一行

调整后我们再执行make linux&& make install后,PortSentry顺利安装成功,其安装路径为/usr/local/psionic/portsentry,如下所示表示成功安装此软件:

Edit /usr/local/psionic/portsentry/portsentry.conf and change

your settings if you haven't already. (route, etc)

WARNING: This version and above now use a new

directory structure for storing the program

and config files (/usr/local/psionic/portsentry).

Please make sure you delete the old files when

the testing of this install is complete.

二、PortSentry的配置

1.修改配置文件portsentry.conf

通过PortSentry进行入侵检测,首先需要为它定制一份需要监视的端口清单,以及相应的阻止对策。然后启动后台进程对这些端口进行检测,一旦发现有人扫描这些端口,就启动相应的对策进行阻拦。

(1)设置端口清单

下面给出portsentry.conf中关于端口的默认配置情况:

#Un-comment these if you are really anal;

#TCP_PORTS="1,7,9,11,15,70,79,80,109,110,111,119,138,139,143,512,513,514,515,540,636,1080,1424,2000,2001,[..]

#UDP_PORTS="1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,27444,34555,[..]

#Use these if you just want to be aware:

TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667,12345,12346,20034,27665,31337,32771,32772,[..]

UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,37444,34555,31335,32770,32771,32772,32773,32774,31337,54321"

#Use these for juse bare-bones

#TCP_PORTS="1,11,15,110,111,143,540,635,180,1524,2000,12345,12346,20034,32771,32772,32773,32774,49724,54320"

#UDP_PORTS="1,7,9,69,161,162,513,640,700,32770,32771,32772,32773,32774,31337,54321"

可以有选择地去掉前面的注释来启用默认配置,也可以根据自己的实际情况定制一份新的清单,格式和原来的一样即可。端口列表要根据具体情况而定,假如服务器为Web服务器,那么Web端口就不需要监视。反之,如果是FTP服务器,那么监视Web端口也是有必要的。

(2)portsentry.conf里的相关文件

在portsentry.conf中自动配置了许多文件,我们看下它们有哪些用途:

#此文件记录允许合法扫描服务器的主机地址

IGNORE_FILE="/usr/local/psionic/portsentry/portsentry.ignore"

#此文件中保留了以往所有入侵主机的IP历史记录

HISTROY_FILE="/usr/lcal/psionic/portsentry/portsentry.history"

#此文件中是已经被阻止连接的主机IP记录

BLOCKED_FILE="/usr/local/psionic/portsentry/portsentry.blocked"

(3)设置路由重定向

通过配置portsentry.conf文件,可以设置一条虚拟路由记录,把数据包重定向到一个未知的主机.使之无法获取信息。相应配置代码如下:

#Generic

#KILL_ROUTE="/sbin/route add $TARGET$ 333.444.555.666"

#Generic Linux

KILL_ROUTE="/sbin/route add -host $TARGET$ gw 333.444.555.666

针对不同的平台有不同的路由命令,在配置文件中选择适台自己平台的命令即可。我的服务器是Centos5.5 x86_64,以上语法适合Linux平台的机器;PortSentry非常人性化,下面都有系统对应的配置文件,我们只需要依样操作即可。

(4)我们还可以利用Linux中的iptables命令,可以切断攻击主机的连接:

KILL_ROUTE="/usr/local/sbin/iptables -I INPUT -s $TARGET$ -j DROP"

也可以直接把攻击者的IP记录到/etc/hosts.deny文件中,利用TCP_Wrappers保护机制来防止攻击:

KILL_HOSTS_DENY="ALL:$TARGET$ # Portsentry blocked"

系统默认是利用TCP_Wrappers来切断与主机之间的连接

(5)定制警告信息

我们也可以定制一条警告信息,警告攻击者。不过,手册上建议不要使用该选项,因为这样做可能会暴露主机的IDS系统。

PORT_BANNER="** UNAUTHORIZED ACCESS PROHIBITED *** YOUR CONNECTION ATTEMPT HAS BEEN LOGGED. GO AWAY."

修改完毕后,改变文件的权限.以保证其安全性:

chmod 600 /usr/local/psionic/portsentry/portsentry.conf

2.配置portsentry.ignore文件

/usr/psionic/portsentry/portsentry.ignore文件中设置了希望PortSentry忽略的主机IP,即允许合法扫描的主机地址下面是配置情况:

#Put hosts in here you never want blocked,This includes the IP addresses

#of all local interfaces on the protected host(i.e virtual host,mult-home)

#keep 127.0.0.1 and 0.0.0.0 to keep people from playing games.

127.0.0.1/32

0.0.0.0

#Exclude all local interfaces

192.168.1.103

192.168.1.102

127.0.0.1

记得带上本机地址,以防万一。

修改完成后同样需要改变文件默认的权限:

chmod 600 /usr/local/psionic/portsentry/portsentry.ignore

三、启动检测模式

最后介绍一下PortSentry的启动检测模式。对应TCP和UDF两种协议方式.分别有三种启动模式,即基本、秘密和高级秘密扫描检测模式。

◆ portsentry-tcp,TCP的基本端口绑定模式;

◆ portsentry-udp,UDP的基本端口绑定模式;

◆ portsentry-stcp,TCP的秘密扫描检测模式;

◆ portsentry-sudp,UDP的秘密扫描检测模式;

◆ portsentry-atcp,TCP的高级秘密扫描检测模式;

◆ portsentry-audp,UDP的高级秘密扫描检测模式。

一般情况下,建议使用秘密扫描检测模式或高级秘密扫描检测模式。

使用高级秘密扫描检测模式(Advanced Stealth Scan Detection Mode),PortSentry会自动检查服务器上正在运行的端口, 然后把这些端口从配置文件中移去, 只监控其它的端口。这样会加快对端口扫描的反应速度,并且只占用很少的CPU时间,这种模式非常智能,我比较喜欢用

启动PortSentry的命令如下:

#/usr/psionic/portsentry/portsentry -atcp

可以把启动命令加到“/etc/rc.d/rc.local”脚本文件中,果想让它和其它后台进程一样可以随时启动、停止并查看进程状态, 可以去这样当重新启动计算机的时候PortSentry就会自动运行。

四、测试

我们在192.168.1.102上启动PortSentry后,我们先暂时清掉portsentry.ignore里的文件,我们在另一台192.168.1.104的机器上启动扫描命令nmap -sS 192.168.1.102,稍等片刻我们就会发现/etc/hosts.deny里会出现ALL:192.168.1.104的字样,证明此软件配置都是生效的。

为了证明其有效性,我拿自己的线上的一台LVS机器布署了portsentry1.2,查看日志发现

[[email protected] portsentry_beta]# tail /var/log/messages

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: Host 65.9.251.89 has been blocked via wrappers with string: "ALL: 65.9.251.89"

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:07 localhost portsentry[2555]: attackalert: Host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 is already blocked Ignoring

Jun 6 13:11:08 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 to TCP port: 80

Jun 6 13:11:08 localhost portsentry[2555]: attackalert: Host: adsl-65-9-251-89.mia.bellsouth.net/65.9.251.89 is already blocked Ignoring

Jun 6 13:19:57 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: ns38534.ovh.net/91.121.14.153 to TCP port: 80

Jun 6 13:19:57 localhost portsentry[2555]: attackalert: Host 91.121.14.153 has been blocked via wrappers with string: "ALL: 91.121.14.153"

Jun 6 13:35:44 localhost portsentry[2555]: attackalert: TCP SYN/Normal scan from host: 61.156.31.43/61.156.31.43 to TCP port: 80

Jun 6 13:35:44 localhost portsentry[2555]: attackalert: Host 61.156.31.43 has been blocked via wrappers with string: "ALL: 61.156.31.43"

检查了下/etc/hosts.deny,发现如下恶意IP:

ALL: 113.57.224.3

ALL: 124.238.249.246

ALL: 65.9.251.89

ALL: 91.121.14.153

ALL: 61.156.31.43

感觉现在的无聊人士也是非常多的,一天到晚开着扫描器在公网上,难道欲捕肉鸡乎?

转载于:https://my.oschina.net/2xixi/blog/71291

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33727510/article/details/91517078

智能推荐

git提交设置忽略文件_goland 忽略提交_pastclouds的博客-程序员秘密

在使用eclipse或者Idea或者直接使用git命令提交文件到git上时,有些文件需要被忽略,不进行提交,比如本地生成的target或者.project等本地文件git提供了相应的忽略设置.gitignore具体配置:在版本管理的根目录下(与.git文件夹同级)创建一个 .gitignore,如果已有可以不用 创建,在里面配置相应的过滤条件,配置条件之后里面的所有子层级目录文件都会...

js html调用摄像头拍照_stream.gettracks();_Runing_snailLBNL的博客-程序员秘密

最近了一个windows10的项目,需要调用后置摄像头进行图片操作,然后在网上参考也是遇到了一些坑,总结一下。先看界面涉及的主要代码如下(我的业务逻辑就不写了,使用的时候结合你自己业务逻辑替换对应的就可以了)://获取设备window.navigator.getUserMedia = navigator.getUserMedia || navigator.webKitGetUs...

Flutter 控件CachedNetworkImage使用的坑_acxc的博客-程序员秘密

Flutter 控件CachedNetworkImage使用的坑问题总结问题通过参考Flutter 中文网的文档,按照要求进行集成接入,基本步骤:在 YAML 中引用包:cached_network_image: ^0.6.2参考文档写法,在自己的代码中加入以下部分body: new Center( child: new CachedNetworkImage( placeholder: new CircularProgressIndicator(), imageUrl:'', ), ),首先,

java实现正态分布函数( commons-math-3.3 )_java正态分布函数[email protected]的博客-程序员秘密

1、 计算过程为:提取报表原始数据——>按上述公式计算财务比率值——>按上述分组规则对比率值进行分组——>对各组赋相应的值——>基于各变量分组赋值和权重,按公式计算定量模型得分S1(公式如下)  其中:  上述微积分公式是一个正态分布且为标准正态分布的积分公式,目前apache的commons-math-3.3.jar包已经实现了这个公式的计算方法,jar包请见附件!上

Django使用xadmin结合富文本编辑器uedtior_好好生活ying的博客-程序员秘密

django 有一个封装好的admin后台管理系统,如果不能满足需求,可以使用第三方插件xadmin,xadmin的安装和使用可以参考git https://github.com/sshwsfc/xadmin对后台进行编辑的时候,有时需要上传图片之类更丰富的文本操作,这样就需要富文本编辑器,本文介绍使用百度开源的富文本编辑器ueditor,由于该编辑器较早产生,目前不支持python3,只支持...

python读取txt文件每一行存为列表_python – 有没有办法读取.txt文件并将每一行存储到内存?..._weixin_39908462的博客-程序员秘密

我知道它已经回答了:)总结一下上面的内容:# It is a good idea to store the filename into a variable.# The variable can later become a function argument when the# code is converted to a function body.filename = 'data.txt'#...

随便推点

ideal Debug 远程_weixin_33805557的博客-程序员秘密

为什么80%的码农都做不了架构师?>>> ...

无法打开包括文件: “type_traits”问题_无法打开包括文件type_traits_秋月的私语的博客-程序员秘密

这几天折腾了一下QT的安装,因为本机自带“VS2015”,所以选择了msvcr2015x64平台,结果第一次安装就遇到了各种问题。比如cl.exe无法识别等,将vs2015的bin目录添加到环境变量解决问题。解决之后,程序勉强运行起来。由于一些原因,卸载qt重装,结果出现——无法打开包括文件: “type_traits”问题,并且无法解决,百度无果,但是我奇怪的是,明明第一次安装...

Windows系统配置代理池步骤_风中追风soc的博客-程序员秘密

首先,从github官网上下载redis项目https://github.com/microsoftarchive/redis/releases选择其中的msi文件,下载后进行安装安装之后进入安装目录,双击运行redis服务端文件redis-server.exe启动之后如下图接下来启动redis客户端,双击运行redis-cli.exe文件启动之后,设置密码,可根据这篇文章(如何在windows下面设置redis密码 - 三重罗生门 - 博客园)进行操作...

网卡:设备未托管_fedora12网卡设备未托管_manjusaka01的博客-程序员秘密

ifconfig能看到网卡,但上不了网。 更改配置文件:sudo gedit /etc/NetworkManager/nm-system-settings.conf  [ifupdown]managed=false 改为 [ifupdown]managed=true

宝塔设置php 404,宝塔部署项目404错误,隐藏入口文件_亿码数码的博客-程序员秘密

当我们在本地把php项目写完之后,哟啊发布到线上,本地我们一般使用的是apache,而服务器使用的却是nginx,当我们吧php项目上传到线上之后,访问会出现404错误,是因为本地的apache规则不适合线上的nginx,这时我们需要找到nginx的vhost配置文件,并打开编辑它,在server里加上如下代码:location / {if (!-e $request_filename) {rew...

【企业框架源码】 SpringMVC mybatis 多数据源 代码生成器 SSM java redis shiro ehcache_weixin_34318272的博客-程序员秘密

获取【下载地址】 QQ: 313596790官网 http://www.fhadmin.org/A代码编辑器,在线模版编辑,仿开发工具编辑器,pdf在线预览,文件转换编码B 集成代码生成器 [正反双向](单表、主表、明细表、树形表,快速开发利器)+快速表单构建器freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面、建表sql脚本,处理类,service等完整模块C...