动态分析maillog日志,把恶意链接直接用防火墙禁止
近期用 postfix + dovecot 搭建了一个邮件server, 被人当做垃圾邮件转发器,经过配置postfix 的黑白名单, postfix 提示成功的 REJECT 了垃圾邮件, 只是还是有无数的IP地址, 连接过来要进行发送邮件, 尽管垃圾邮件被拒绝了,可是未知连接太多,造成 maillog 日志越变越大, 拖慢 postfix 的执行速度, 总得想个办法解决。要是能把这些没用的IP地址直接用防火墙拒绝就好了。 思路有了,我们就着手处理吧。
这些垃圾IP地址所有是
- 本站主数据:台湾省 中华电信股份有限公司
- 參考数据一:台湾
tail -f /var/log/maillog 查看日志例如以下所看到的:
这日志还是非常有规律的, 是不是 ?
Aug 20 12:11:40 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <ykrt@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<ykrt@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:41 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <yanghabi@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<yanghabi@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:41 www postfix/smtpd[18026]: NOQUEUE: reject: RCPT from 36-224-135-60.dynamic-ip.hinet.net[36.224.135.60]: 554 5.7.1 <dygui@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vqjpdghrcnaf@163.com> to=<dygui@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:42 www postfix/smtpd[18023]: NOQUEUE: reject: RCPT from 114-45-29-112.dynamic.hinet.net[114.45.29.112]: 554 5.1.8 <ekiczlqpkuezc@yahoo.com.jp>: Sender address rejected: Domain not found; from=<ekiczlqpkuezc@yahoo.com.jp> to=<fet77111@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:43 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <zen19762001@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<zen19762001@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:43 www postfix/smtpd[18026]: NOQUEUE: reject: RCPT from 36-224-135-60.dynamic-ip.hinet.net[36.224.135.60]: 554 5.7.1 <to1477889900@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vqjpdghrcnaf@163.com> to=<to1477889900@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:44 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <x19781024@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<x19781024@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:44 www postfix/smtpd[18023]: NOQUEUE: reject: RCPT from 114-45-29-112.dynamic.hinet.net[114.45.29.112]: 554 5.1.8 <ekiczlqpkuezc@yahoo.com.jp>: Sender address rejected: Domain not found; from=<ekiczlqpkuezc@yahoo.com.jp> to=<jay791028@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:45 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <juliessy@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<juliessy@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:45 www postfix/smtpd[18026]: too many errors after RCPT from 36-224-135-60.dynamic-ip.hinet.net[36.224.135.60]
Aug 20 12:11:45 www postfix/smtpd[18026]: disconnect from 36-224-135-60.dynamic-ip.hinet.net[36.224.135.60]
Aug 20 12:11:46 www postfix/smtpd[18023]: too many errors after RCPT from 114-45-29-112.dynamic.hinet.net[114.45.29.112]
Aug 20 12:11:46 www postfix/smtpd[18023]: disconnect from 114-45-29-112.dynamic.hinet.net[114.45.29.112]
Aug 20 12:11:47 www postfix/smtpd[18033]: NOQUEUE: reject: RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]: 554 5.7.1 <xsip@yahoo.com.tw>: Recipient address rejected: Access denied; from=<vpjcmwqinpnpg@anet.net.tw> to=<xsip@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:11:49 www postfix/smtpd[18033]: too many errors after RCPT from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]
Aug 20 12:11:49 www postfix/smtpd[18033]: disconnect from 36-224-133-61.dynamic-ip.hinet.net[36.224.133.61]
Aug 20 12:14:10 www postfix/smtpd[18097]: connect from 36-224-136-82.dynamic-ip.hinet.net[36.224.136.82]
Aug 20 12:14:11 www postfix/smtpd[18097]: NOQUEUE: reject: RCPT from 36-224-136-82.dynamic-ip.hinet.net[36.224.136.82]: 554 5.7.1 <rzxijhkiefau@yahoo.com.tw>: Sender address rejected: Access denied; from=<rzxijhkiefau@yahoo.com.tw> to=<ina12350@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
Aug 20 12:14:11 www postfix/smtpd[18097]: NOQUEUE: reject: RCPT from 36-224-136-82.dynamic-ip.hinet.net[36.224.136.82]: 554 5.7.1 <rzxijhkiefau@yahoo.com.tw>: Sender address rejected: Access denied; from=<rzxijhkiefau@yahoo.com.tw> to=<ilovemyself414@yahoo.com.tw> proto=SMTP helo=<115.28.81.191>
我们能够动态分析日志, 把
too many errors after RCPT from
后面的IP地址获取, 动态添�到防火墙进行拒绝即可。
思路有了, 我就写个小程序来分析日志吧,我写的是C的, 只是用perl 或者 shell 脚本可能更简单。
反正用自己最熟悉的语言即可。
dyn.c 源码文件的内容例如以下 :
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define BUF_LEN 4096
#define DATA_LEN 4096*10 int main (int argc, char** argv)
{
//too many errors after RCPT from 36-224-128-99.dynamic-ip.hinet.net[36.224.128.99]
//too many errors after RCPT from 118-169-22-28.dynamic.hinet.net[118.169.22.28]
//too many errors after AUTH from unknown[79.125.161.236] char buf[BUF_LEN] = {0};
const char* sep = "too many errors after";
while (1)
{
memset (buf, 0, sizeof(buf));
char* tp = fgets (buf, sizeof(buf)-1, stdin);
if (tp != NULL)
{
int buflen = strlen(tp);
char* p = strstr(buf, sep);
if (p != NULL)
{
char* p1 = p + strlen(sep) + 1;
char* ps = NULL;
char* pe = NULL;
while (*p1 != '\0' && *p1 != '\n')
{
if (*p1 == '[')
ps = p1+1;
if (*p1 == ']')
pe = p1;
p1++;
}
if (ps != NULL && pe != NULL)
{
char ipbuf[64]={0};
memcpy (ipbuf, ps, pe-ps);
char ebuf[512] = {0};
snprintf(ebuf, sizeof(ebuf)-1, "iptables -I INPUT -s %s -j DROP", ipbuf);
system (ebuf);
printf ("%s\n", ebuf);
} }
} }
return 0;
}
用 gcc -g -o dyn dyn.c , 编译后生成了可运行文件 dyn
我的dyn可运行文件在 /root 文件夹, 所以用 命令:
nohup tail -f /var/log/maillog | /root/dyn &
让它自己跑吧。
过一段时间后, 我们再看maillog日志, 已经基本没有 不认识的IP地址再连接过来打算发邮件了。
动态分析maillog日志,把恶意链接直接用防火墙禁止的更多相关文章
- linux下 tomcat 日志乱码/中文链接404
1 日志乱码: JDK引用的设置 Java引用参数添加”-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8” 将上面参数添加到Catalina.sh中JAVA ...
- 开启aix SFTP日志 是否和链接SFTP有关呢
1.修改SSH配置 vi /etc/ssh/sshd_config 在sftp配置处添加-l INFO -f AUTH Subsystem sftp /usr/lib64/ssh/sftp-serve ...
- oracle用plsql登陆出错,提示ORA-12170:TNS:链接超时 --------关闭防火墙试试
oracle用plsql登陆出错,提示ORA-12170:TNS:链接超时 但是使用sqlplus可以连接 ping 本机127.0.0.1 显示一般故障 后关闭防火墙,问题解决. ps:登录时使用@ ...
- redhat 防火墙禁止允许的IP链接指定的端口
编辑:iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 192.168.4.3 --dport 80 -j A ...
- 发送垃圾邮件的僵尸网络——药物(多)、赌博、股票债券等广告+钓鱼邮件、恶意下载链接、勒索软件+推广加密货币、垃圾股票、色情网站(带宏的office文件、pdf等附件)
卡巴斯基实验室<2017年Q2垃圾邮件与网络钓鱼分析报告> 米雪儿 2017-09-07 from:http://www.freebuf.com/articles/network/1465 ...
- Linux下重要日志文件及查看方式
http://os.51cto.com/art/201108/282184_all.htm 1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...
- Kworkerd恶意挖矿分析
转自:https://www.360zhijia.com/anquan/417114.html 0x01 快速特征排查 TOP显示CPU占用高,但是没有高占用的进程 存在与未知服务器13531端口建立 ...
- Linux下重要日志及查看方式
1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息,如图1所示: 图1 /var/log/boot. ...
- linux下的系统服务管理及日志管理
1.ntsysv服务配置工具 用来配置哪些服务开启或关闭,图形界面,使用键盘来操作. 安装ntsysv服务的命令:yum install -y ntsysv 直接运行命令ntsysv 弹出配置界面: ...
随机推荐
- mysql死锁问题分析(转)
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”. Oh, My God! 是死锁问题.尽管报错不多,对性能目前看来 ...
- 获取DOM元素位置和尺寸大小
JavaScript获取DOM元素位置和尺寸大小 在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽 ...
- Java内部类——局部内部类
局部内部类,即放在“{块中}”,局部内部类,不能被成员修饰符static修饰,且内部类的成员也不能是static. 内部类中访问局部变量“{块中}”,需要将局部变量声明为final. 可以直接访问外部 ...
- delphi程序设计之底层原理(有些深度)
虽然用delphi也有7,8年了,但大部分时间还是用在系统的架构上,对delphi底层还是一知半解,今天在网上看到一篇文章写得很好,虽然是07年的,但仍有借鉴的价值. 现摘录如下: Delphi程序设 ...
- Windows Service的安装卸载 和 Service控制
原文 Windows Service的安装卸载 和 Service控制 本文内容包括如何通过C#代码安装Windows Service(exe文件,并非打包后的安装文件).判断Service是否存在. ...
- windows 2003 域控制器(AD)的常规命令行操作以及修复
查询服务器的角色 Netdom query fsmo 强制升级操作主机角色(如果两台DC都无损,可以直接用图形模式传送,这里指的是一台DC出问题,另一台强制升级占用角色的情况) Ntdsutil Ro ...
- C#开发中遇到问题常问题
1.C# decimal 赋值null decimal?是可空类型就是可以将值设置为Null,decimal 不能设置为null 2.var 定义变量 VAR 是3.5新出的一个定义变量的类型其实也就 ...
- checkbox之checked的方法(attr和prop)区别
1. $('#checkbox').click(function(){ if($('#checkbox').is(':checked')) { $(".sendmailhui"). ...
- Swift - 使用socket进行通信(附聊天室样例)
在Swift开发中,如果我们需要保持客服端和服务器的长连接进行双向的数据通信,使用socket是一种很好的解决方案. 下面通过一个聊天室的样例来演示socket通信,这里我们使用了一个封装好的sock ...
- 第13章、布局Layouts之RelativeLayout相对布局(从零開始学Android)
RelativeLayout相对布局 RelativeLayout是一种相对布局,控件的位置是依照相对位置来计算的,后一个控件在什么位置依赖于前一个控件的基本位置,是布局最经常使用,也是最灵活的一种布 ...