家里有事,再加上昨天一个服务器硬件出问题,搞的我今天很没精神,无法集中精力看盘,干脆找点事干了。

用nginx做了个简易蜜罐,不包括行为分析,仅仅是记录IP。

为啥用nginx?话说我也觉得这是个挺奇葩的事,大概只是因为他占内存少,而且有日志吧,再加上绑定多个端口不需要写很多配置段。

嗯,这理由我也觉得挺奇葩。。。

 

可以用默认的http模式,我是用了stream,这个模块需要手工加载:

load_module /usr/lib/nginx/modules/ngx_stream_module.so;

然后配置里面增加一段:

stream {
   server {
      listen 20;
      listen 21;
      listen 22;
      listen 25;
      listen 110;
      listen 143;
      listen 80;
      listen 443;
      listen 3128;
      listen 3389;
      listen 3306;
      listen 1433;
      proxy_connect_timeout 1s;
      proxy_pass 127.0.0.1:11011;
    }
}

日志放在默认位置:

error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

绑这么多端口,是因为这些都是常见的开放端口,而那些扫肉鸡暴破密码的一般也是从这入手。因为这个IP是闲置的,不对外提供任何服务,所以任何试图连接此IP这些端口的,都必然是不怀好意者,全都可以收集起来。

然后增加一个计划任务,几分钟收集一下IP就行了:

cat /var/log/nginx/error.log | grep "127.0.0.1:11011" |awk -F, '{print $2}' |awk -F: '{print $2}' |awk  '{print $1}' | sort | uniq -c | sort -nr -k1|awk '{print $2}'> badip.txt
mysql -u数据库用户名 -h数据库IP -p数据库密码 数据库名 --local-infile=1 -e "LOAD DATA LOCAL INFILE 'badip.txt' IGNORE into table badip(ip) "
rm badip.txt

数据表就一个字段:

DROP TABLE IF EXISTS `badip`;
CREATE TABLE `badip`  (
  `ip` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  PRIMARY KEY (`ip`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

设置成主键,可以自动规避重复IP,懒人必备技能……

 

我这10个小时左右,已经收集1000多IP了:

如果需要的话,可以用我以前做的api直接获取这些IP:《大部分用来扫描密码的IP段

 

 

作者 听涛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注