(本文章只是用于个人用时查看,有问题请勿喷!觉得行可供参考。)
首先我来说下配置这个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 这儿我就不写出来了
相关推荐
前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消...
Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析脚本.sh shell....
### Shell脚本实现自动修改IP地址 #### 概述 在Linux系统中,为了提高运维效率,管理员常常需要编写Shell脚本来完成重复性任务。其中一个常见的需求是批量修改服务器的IP地址。通过编写一个简单的Shell脚本来自动...
Shell脚本会自动检测到攻击IP,并将其加入到防火墙规则中,以阻止攻击。 2. Linux系统发送告警脚本 这个脚本可以在Linux系统中发送告警邮件,通知管理员系统中的异常情况。我们使用mailx命令来发送邮件,并使用...
"通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器" 本文将介绍如何使用Shell脚本将Gitlab备份文件自动定时复制到远程服务器上,并对远程服务器上的Gitlab备份文件进行定时清理。 知识点一:SSH密钥配对 ...
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
本书《shell脚本编程100例》为读者提供了100个实战性的shell脚本编程实例,涵盖了检测网段主机状态、猜数字游戏、打印乘法口诀、使用rsync备份数据、切割Nginx日志、监控服务端口、使用mtime删除历史文件或日志文件...
该脚本用于自动屏蔽攻击 IP,保护服务器安全。该脚本使用 `tail` 命令读取日志文件,使用 `grep` 命令提取攻击 IP,使用 `iptables` 命令屏蔽攻击 IP。 知识点: * `tail` 命令:用于读取日志文件的最后几行内容。...
1. Dos攻击防范:通过监控Nginx的日志文件,检测到异常频繁的IP访问后,脚本会自动使用iptables命令将这些IP添加到防火墙规则中,阻止其进一步的访问,并记录到日志文件中。这展示了Shell脚本在安全领域的应用,结合...
Shell脚本,作为Linux/Unix系统中的编程工具,是一种强大的自动化任务执行手段。它基于Bourne shell或者其扩展版本,如bash(Bourne-Again SHell),提供了一种编写简单或复杂程序的方式,使得用户能够通过命令行...
mysql自动化部署shell脚本
主要介绍了Shell脚本实现自动修改IP、主机名等功能分享,本文直接给出实现代码,需要的朋友可以参考下
本程序是自动化安装 mysql5.6 shell脚本,要在/data目录
Linux系统自动不停重启并计数的shell脚本
Android 系统或 Android 应用执行 shell 脚本的方法 Android 系统或 Android 应用执行 shell 脚本是 Android 开发中的一项重要技术,通过执行 shell 脚本,可以实现一些复杂的操作,例如设置网络参数、启动服务等...
mac 下 apk自动签名 shell脚本
Shell脚本是Linux/Unix操作系统中的强大工具,它允许用户编写一系列命令,形成自动化任务,以提高工作效率。本文档汇总了109个实用的Shell脚本实例,涵盖了多个应用场景,包括系统管理、网络监控、数据库备份等。...
Shell脚本定时监控tomcat,服务挂掉自动重启
禁止国外IP地址防火墙。(centos6/7使用) 包含2个文件。一个是国内(中国)地址集,一个是自动加载脚本。把国内地址和当前机器上连接的地址加入白名单。每次重启机器会自动加载白名单。vos软交换、asterisk、...
IDEA中编写并运行shell脚本的实现 IDEA中编写并运行shell脚本的实现是指在Integrated Development Environment(IDE)中编写、配置和运行shell脚本的过程。该过程需要安装bashsupport插件,配置插件,安装git软件,...