shell脚本自动加黑恶意攻击IP

shell脚本自动加黑恶意攻击IP

系统环境:Centos 6.5 X64

如果我们对所有用户开放了SSH 22端口,那么我们就可以在/var/log/secure文件里查看,这里面全是恶意攻击的IP ,那么我们又该如何拒绝这些IP在下次攻击时直接把他拉黑,封掉呢? 或者这个IP再试图登陆4次或7次我就把他拒绝了,把他这个IP永久的封掉呢?这个时候我们就可以用这下面这个脚本来实现。

[[email protected] ssh]# vi /etc/ssh/blocksship

#!/bin/bash

#auto drop ssh failed IP address

#by authors evanli 2017-6-13

SEC_FILE=/var/log/failed.txt

ip_regex="[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}"

grep -r "Failed password" /var/log/secure > /var/log/failed.txt

IP_ADDR=`tail -n 100 /var/log/failed.txt |grep "Failed password"| egrep -o  $ip_regex | sort -nr | uniq -c | awk ‘$1>=7 {print $2}‘`

IPTABLES_CONF=/etc/sysconfig/iptables

for i in `echo $IP_ADDR`

do

cat $IPTABLES_CONF |grep $i >/dev/null

if

[ $? -ne 0 ];then

sed -i "5 a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABLES_CONF

else

echo "This is $i is exist in iptables,please exit ....."

fi

done

脚本说明

一、先生成带有关键字“Failed password”的文件/var/log/failed.txt

二、再查找failed.txt文件中出现次数大于7的IP地址。

三、awk ‘$1>=7 表示匹配文件中出数 次数大于等7的IP,才加入黑名单。此数字7可按自己需要更改。

四、判断iptables配置文件里是否存在已拒绝的ip,如果不存在,就不再添加相应条目,如果存在就显示“This is IP is exist in iptables,please exit .....”

五、sed -i "5 a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABLES_CONF

表示在iptables文件的第5行之后,新加入一行DROP策略。请一定要根据自己iptables文件,来选择在第几行插入新的DROP策略。

给执行权限,并执行

[[email protected] ssh]# chmox +x /etc/ssh/blocksship

[[email protected] ssh]# /etc/ssh/blocksship

执行后,查看iptables文件是否正常。如没问题,重起服务。

[[email protected] ssh]# vi /etc/sysconfig/iptables

[[email protected] ssh]# service iptables restart 


添加到排程任务,每1小时执行一次

[[email protected] postfix]# vi /etc/crontab

0 */1 * * * root /etc/ssh/blocksship 


以下是单条命令分开执行后的效果

生成带有关键字“Failed password”的文件

[[email protected] ssh]# grep -r "Failed password" /var/log/secure > /var/log/failed.txt


显示failed.txt文件第11列信息,即IP地址

[[email protected] ssh]# tail -n 100 /var/log/failed.txt |grep "Failed password"| awk ‘{print $11}‘

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

219.132.35.82

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

62.145.211.15

直接用命令统计出某个IP试图登陆的次数

[[email protected] ssh]# tail -n 100 /var/log/failed.txt |grep "Failed password"| awk ‘{print $11}‘|sort|uniq -c |sort -nr

12 62.145.211.15

1 219.132.35.82

12表示该IP出现了12次

显示大于等7次的IP

[[email protected] ssh]# tail -n 100 /var/log/failed.txt |grep "Failed password"| awk ‘{print $11}‘|sort|uniq -c |sort -nr | awk ‘$1>=7 {print $2}‘

62.145.211.15


参考文章

http://kangh.iteye.com/blog/2304836

测试成功于2017.6.13日,evan.li

时间: 2024-10-12 14:50:46

shell脚本自动加黑恶意攻击IP的相关文章

shell脚本自动拉黑ssh登录失败3次以上的IP

#!/bin/bash #Created By T.Sweet iptables_file=/etc/sysconfig/iptables      #防火墙配置文件 IP_ADDR=`tail -n 500 /var/log/secure | grep "Failed password"  | awk '{print $11}' | uniq -c | awk '$1>= 3{print $2}'` #取出登录错误3次以上的IP cat $iptables_file | gre

Shell脚本自动部署(编译)LAMP平台

Shell脚本自动部署(编译)LAMP平台 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装LAMP有以下几个优点 根据生产环境灵活定制程序 优化编译参数,提高性能 解决不必要的软件依赖 友情提示:对编译安装有疑问的朋友, 查看我以前写的博客:教你使用rpm.yum.编译等方式安装软件 点击此处获得更好的阅读体验 为什么要用脚本进行部署? 在很多情况下部署LAMP平台并不止一

Shell脚本-----自动备份Mysql数据库

脚本的整体思路 1.定义需要的变量 2.利用for循环备份需要备份的库,并以库名-当天日期.sql命名,并记录相关日志 3.建立备份当天的日期的目录,向备份的Sql文件移动到该目录 4.压缩打包该目录,以节省空间,打包成功后删除该目录 5.备份目录只备份七天的数据库,第八天删除第一天的备份,目录只会存在连续七天的备份文件 6.查找备份目录下的.log日志文件,超过七天的删除 #!/bin/bash mysql_bin=/usr/local/tdoa/mysql/bin/mysqldump use

AIX 用SHELL脚本 自动FTP下载文件

用SHELL脚本 自动FTP下载文件:kaiboss1:/weblogic/bboss> uname -xAIX kaiboss1 3315381580 3 5 00C59CB54C00kaiboss1:/weblogic/bboss> more ./memberupload/memberupload.shcd /weblogic/bboss/memberupload/fileftp -inv 10.1.140.123 <<!>memberfile.loguser ftp31

shell脚本自动编译安装Apache

shell脚本自动安装Apache,适用于CentOS #!/bin/bash ##################################################### #Create date 2018.4.10 #Author: wansheng #Function: shell script install apache2.4 #Email: [email protected]  #System: Linux CentOS-7 ######################

Linux 集群使用 Shell 脚本自动完成免密登录

在部署 Linux 集群环境的时候,时钟同步 (NTP) 必定用到,而某些时候可能也需要用到主机免密登录,5 节点以下还可以手动配置,但如果节点规模较大,则需要考虑自动化了. 使用 Shell 脚本简单快速,上手容易. 代码如下,请自行按需要修改,比较容易理解. #!/bin/bash # by liuxg # 2019.05.15 # passwdless.sh # echo # -n 不要在最后自动换行 # -e 处理特殊字符 # expect是一个免费的编程工具语言,用来实现自动和交互式任

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b

用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门:https://github.com/heyuan110/BashShell?spm=5176.100239.blogcont5028.4.kFcLtR 还有关于fir指令的一

Linux中shell脚本自动输入密码

最近遇到蛋疼的事,就是在shell脚本中需要获取root权限,因此在shell脚本运行过程中需要输入密码. 懒惰的我当然想让shell在执行过程中就可以自动输入密码,这样就可以抽空看看妹子图.. 我通过查询资料了解到,可以通过“ 重定向操作符 ” 将标准输入内容作为内容自动输入.但是这样需要用 -i 参数结束交互式输入 例如: sudo -i nginx < pwd 然后另建一个文件:pwd.内容为密码:1234.

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上

如果移动端访问不佳,可以访问我的个人博客 用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门 还有关于fir指令的一些介绍可以去这里查看,传送门 第一步安装fir-cil fir-cli 使用 Ruby 构建, 无需编译, 只要