`

shell脚本自动拉黑恶意试图攻击IP

 
阅读更多

(本文章只是用于个人用时查看,有问题请勿喷!觉得行可供参考。)

 

 

首先我来说下配置这个shell脚本的原理,为什么要配置这个脚本.

 

在Linux中,虽然系统自带有iptables防火墙,但是这只能说服务器相对安全,但不能说服务器非常安全。当服务器配置了防火墙,但是还是有人恶意对我们的端口进行扫描,进行攻击。 如果我们允许22端口对外网所有人访问,如果我们没有做VPN,比如我在上海,服务器在北京,如果我们要远程,但是现在IP已经变化了,而且我们的服务器22号端口已经打开,全国所有人都可以访问我们服务器,如果频繁的进行扫描,那迟早会把服务器攻破,盗取我们的密码。当然,我们可以把密码设置得非常复杂,大小写、特殊字符,数字32位,别人扫描没有3-5年是无法攻破的。但是设置复杂了,他还是每天不停的在扫描试图攻击。

 

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

 

这儿我直接用两个服务器来测试这个shell脚本,当然,在真实环境是同一道理

如下:

服务器A:192.168.33.10

服务器B:192.168.33.14

 

安装完成后,我们在服务器B上ssh服务器A
ssh -l root 192.168.33.10
回车后yes
会提示你输入密码  当然你肯定是故意输错  ,然后多试图登陆几次

然后我们在服务器A上去查看
tail -fn 100 /var/log/secure
我们就可以看到很多的Failed password for root from 什么的,
如下图:

 

 

很多东西是吧,我们可以直接取这些IP
tail -n 100 /var/log/secure |grep "Failed password"| awk '{print $11}'
如下图:

 

 

 

当然,如果IP很多的话我们可以直接用命令统计出某个IP试图登陆的次数
tail -n 100 /var/log/secure |grep "Failed password"| awk '{print $11}'|sort|uniq -c |sort -nr
如下图显示:

 

 

如果一个IP登陆错误7次,那这种人肯定是不知道密码的
我们知道这个IP后我们可以直接加到防火墙里
vim /etc/sysconfig/iptables
-A INPUT -s 192.168.33.14 -j DROP     :一定要注意规则的抒写
重启防火墙后我们在服务器B上在试图登陆ssh
ssh -l root 192.168.33.10   
现在连密码都不能输入了,因为我们把他封掉了还登陆个屁啊!
这只是简单的手动限制,如果有上百个这样的IP,那我们不可能每个手动去这样实现啊,接下来我们就会用到这个自动脚本了

 

#!/bin/bash
#auto drop ssh failed IP address
#by authors kanghui 2016-6-14
#定义变量
SEC_FILE=/var/log/secure
#下面是为了截获secure文件恶意攻击的IP远程登录22端口,大于等于4次后就写入到防火墙里,直接拉黑,禁止后再登录服务器的22端口,egrep -o "([0-9{1,3\.}]){3}[0-9]{1,3}"是配置IP的意>思,[0-9]表示任意一个数,{1,3}表示匹配1-3次
IP_ADDR=`tail -n 100 /var/log/secure |grep "Failed password"| egrep -o "([0-9{1,3\.}]){3}[0-9]{1,3}" | sort -nr | uniq -c | awk ' $1>=4 {print $2}'`
IPTABLE_CONF=/etc/sysconfig/iptables
for i in `echo $IP_ADDR`
do
#查看iptables配置文件是否含有提取的IP信息
        cat $IPTABLES_CONF |grep $i >/dev/null
if
        [ $? -ne 0 ];then
#判断iptables配置文件里是否存在已拒绝的ip,如果不存在,就不再添加相应条目,sed a参数的意思是配置之后加入的行,比如你的防火墙规则里有一条-A INPUT -i lo -j ACCEPT,他的意思就>说在这一条规则的后面添加。
        sed -i "lo/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
#最后重启
/etc/init.d/iptables restart

 或者如下图

 

 最后我们就可以把这个脚本加入到crontab   这儿我就不写出来了

  • 大小: 470.3 KB
  • 大小: 26.5 KB
  • 大小: 67 KB
  • 大小: 95.9 KB
2
0
分享到:
评论

相关推荐

    Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)

    前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消...

    常用shell 脚本,dos攻击防范,

    Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析脚本.sh shell....

    Shell脚本实现自动修改IP地址

    ### Shell脚本实现自动修改IP地址 #### 概述 在Linux系统中,为了提高运维效率,管理员常常需要编写Shell脚本来完成重复性任务。其中一个常见的需求是批量修改服务器的IP地址。通过编写一个简单的Shell脚本来自动...

    109个shell脚本合集.pdf

    Shell脚本会自动检测到攻击IP,并将其加入到防火墙规则中,以阻止攻击。 2. Linux系统发送告警脚本 这个脚本可以在Linux系统中发送告警邮件,通知管理员系统中的异常情况。我们使用mailx命令来发送邮件,并使用...

    通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器.doc

    "通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器" 本文将介绍如何使用Shell脚本将Gitlab备份文件自动定时复制到远程服务器上,并对远程服务器上的Gitlab备份文件进行定时清理。 知识点一:SSH密钥配对 ...

    LinuxShell脚本学习基础视频

    资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...

    shell脚本编程100例

    本书《shell脚本编程100例》为读者提供了100个实战性的shell脚本编程实例,涵盖了检测网段主机状态、猜数字游戏、打印乘法口诀、使用rsync备份数据、切割Nginx日志、监控服务端口、使用mtime删除历史文件或日志文件...

    9 个实用 Shell 脚本,直接部署,简单实用

    该脚本用于自动屏蔽攻击 IP,保护服务器安全。该脚本使用 `tail` 命令读取日志文件,使用 `grep` 命令提取攻击 IP,使用 `iptables` 命令屏蔽攻击 IP。 知识点: * `tail` 命令:用于读取日志文件的最后几行内容。...

    250个shell脚本

    1. Dos攻击防范:通过监控Nginx的日志文件,检测到异常频繁的IP访问后,脚本会自动使用iptables命令将这些IP添加到防火墙规则中,阻止其进一步的访问,并记录到日志文件中。这展示了Shell脚本在安全领域的应用,结合...

    Shell脚本学习教程PDF版

    Shell脚本,作为Linux/Unix系统中的编程工具,是一种强大的自动化任务执行手段。它基于Bourne shell或者其扩展版本,如bash(Bourne-Again SHell),提供了一种编写简单或复杂程序的方式,使得用户能够通过命令行...

    mysql自动化部署shell脚本

    mysql自动化部署shell脚本

    Shell脚本实现自动修改IP、主机名等功能分享

    主要介绍了Shell脚本实现自动修改IP、主机名等功能分享,本文直接给出实现代码,需要的朋友可以参考下

    自动化安装mysql shell脚本

    本程序是自动化安装 mysql5.6 shell脚本,要在/data目录

    Linux系统自动不停重启并计数的shell脚本

    Linux系统自动不停重启并计数的shell脚本

    如何让Android系统或Android应用执行shell脚本

    Android 系统或 Android 应用执行 shell 脚本的方法 Android 系统或 Android 应用执行 shell 脚本是 Android 开发中的一项重要技术,通过执行 shell 脚本,可以实现一些复杂的操作,例如设置网络参数、启动服务等...

    mac 下 apk自动签名 shell脚本

    mac 下 apk自动签名 shell脚本

    109个shell脚本合计

    Shell脚本是Linux/Unix操作系统中的强大工具,它允许用户编写一系列命令,形成自动化任务,以提高工作效率。本文档汇总了109个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、网络监控、数据库备份等。...

    Shell脚本定时监控tomcat,服务挂掉自动重启

    Shell脚本定时监控tomcat,服务挂掉自动重启

    禁止国外IP地址防火墙shell脚本

    禁止国外IP地址防火墙。(centos6/7使用) 包含2个文件。一个是国内(中国)地址集,一个是自动加载脚本。把国内地址和当前机器上连接的地址加入白名单。每次重启机器会自动加载白名单。vos软交换、asterisk、...

    IDEA中编写并运行shell脚本的实现

    IDEA中编写并运行shell脚本的实现 IDEA中编写并运行shell脚本的实现是指在Integrated Development Environment(IDE)中编写、配置和运行shell脚本的过程。该过程需要安装bashsupport插件,配置插件,安装git软件,...

Global site tag (gtag.js) - Google Analytics