shell 编程 拒绝恶意IP 登录服务器脚本
1.为什么要使用shell 编写
- 前言
企业服务器暴露在外网,每天会有大量的人使用各种用户名和密码尝试登陆服务器,如果让其一直尝试,难免会猜出密码,通过开发Shell脚本,可以自动将尝试登陆服务器错误密码次数的IP列表加入到防火墙配置中。
这样一来,我们就不用手动拒绝了,从一定程度上减轻了运维人的压力,也提高了工作效率
2.编写脚本思路
- Shell脚本实现服务器拒绝恶意IP登陆,编写思路如下:
登陆服务器日志/var/log/secure;
检查日志中认证失败的行并打印其IP地址;
将IP地址写入至防火墙;
禁止该IP访问服务器SSH 22端口;
将脚本加入Crontab实现自动禁止恶意IP;
3.代码实现
- Shell脚本实现服务器拒绝恶意IP登陆:
#!/bin/bash #Auto drop ssh failed IP address #By author xx SEC_FILE=/var/log/secure IP_ADDR=`awk '{print $0}' /var/log/secure|grep -i "fail"| egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | sort -nr | uniq -c |awk '$1>=15 {print $2}'` IPTABLE_CONF=/etc/sysconfig/iptables echo cat <<EOF ++++++++++++++welcome to use ssh login drop failed ip+++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++------------------------------------++++++++++++++++++ EOF echo for ((j=0;j<=6;j++)) ;do echo -n "-";sleep 1 ;done echo for i in `echo $IP_ADDR` do cat $IPTABLE_CONF |grep $i >/dev/null if [ $? -ne 0 ];then sed -i "/lo/a -A INPUT -s $i -m state --state NEW -m tcp -p tcp --dport 22 -j DROP" $IPTABLE_CONF fi done NUM=`find /etc/sysconfig/ -name iptables -a -mmin -1|wc -l` if [ $NUM -eq 1 ];then /etc/init.d/iptables restart fi
总结
- 手动拒绝
6步拒绝恶意IP
- shell 的重要性
曾经有人说过,学习Linux不知道Shell编程,那就是不懂Linux,现在细细品味确实是这样。 Shell是操作系统的最外层,Shell可以合并编程语言以控制进程和文件,以及启动和控制其它程序。 现在很多linux 运维岗位,在招聘的时候都要求 会shell 或者Python中任意一门。可见自动化运维 还是蛮重要的,所以,我们的shell 一定要掌握好。后面我会详细的介绍 shell,从无到有,从青铜到王者。