家里有事,再加上昨天一个服务器硬件出问题,搞的我今天很没精神,无法集中精力看盘,干脆找点事干了。
用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段》