文档章节

防止ssh暴力破解linux密码

NILYANG
 NILYANG
发布于 2015/07/17 21:02
字数 754
阅读 1K
收藏 25

网上看到一篇安全方面的文章,常用的网站收藏无法收藏,于是放这里先。具体功能还未测试请慎用

下面是博客原文转载,感谢作者辛苦劳动: 


服务器在互联网中,每天都有些没事儿干的人在你的机器端口扫来扫去,让管理员非常烦恼。本文描述一个方法,利用本文介绍的脚本结合iptables服务一并使用,用来防止公网计算机通过ssh进行用户口令暴力破解。目前稳重脚本已经在其他项目的实际运营环境中得到验证。

脚本内容:

#!/bin/bash
# 防SSH密码暴力破解脚本
# 通过分析secure日志文件使用iptables拒绝恶意登入IP
# by WangJun CaoYinSheng 2014.01.27

source /root/.bash_profile     #脚本运行环境变量
FILE_DIR=/opt/security_tools     #程序执行路径
LOG_FILE=/var/log/secure     #日志路路径
SAVE_FILE=$FILE_DIR/belialIP     #保存iptables拒绝IP文件名
SAVE_TEMP_FILE=${SAVE_FILE}.temp      #临时保存拒绝IP文件名,比较用
IP_REPEAT=15;          #允许尝试登入次数

#二次正则是考虑日志文件过大导致sort排序过慢的问题
ip=`cat $LOG_FILE | awk -F":" '{print $1":"$2":"$3":"$4""$7}' |sed -n -e '/.*Failed password.*/p' | sort | uniq -c | awk -v nnm=$IP_REPEAT '{if($1 > num) print $0;}' | sed -n -e 's/.*Failed password.*from[ ]\(.*\)[ ]port.*/\1/p'| awk '{a[$0]++}END{for(i in a){print i}}'`;

backIFS=$IFS;
IFS="\n";

if [ -e $SAVE_FILE ]
then
    echo $ip > $SAVE_TEMP_FILE;
    differ=`comm -13 $SAVE_FILE $SAVE_TEMP_FILE`;
    tmp=`cat $SAVE_FILE`;
    echo -e $differ"\n"$tmp | uniq | sort > $SAVE_FILE;
else
    differ=$ip;
    echo $ip > $SAVE_FILE;
fi

if [ ${differ} ]
then
    IFS=$backIFS;
    ips=`echo $differ | tr "\n" ' ' | tr -s ' '`;
    
    for dip in $ips;
    do
        iptables -A INPUT -s $dip -j DROP
    done;
fi


部署方法:

1、在/opt/security_tools目录下创建文件killer.sh,并将脚本内容粘贴到文件中;

2、运行killer脚本:

#sh -x ./killer.sh

找到root运行脚本的环境变量可能如下:

########输出内容   开始############
PATH=/usr/local/ImageMagick-6.8.8-2/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/root/bin
########输出内容   结束#############


#crontable -e

将上述环境变量粘贴到crontable的最顶端一行;

3、创建crontable计划

#crontable -e

在crontable配置文件中添加如下信息:

########添加内容   开始############
*/10 * * * * /bin/sh /opt/security_tools/killer.sh &               #每隔10分钟运行一次killer.sh脚本
01 22 * * 2,6 /bin/sh /opt/security_tools/killer.sh &          #没周二周六晚上22点01分运行一次killer.sh脚本
* 22 * * 2,6 service iptables restart &                                #没周二周六晚上22点整运行一次iptables服务重启
########添加内容   结束#############

 4、测试

10分钟后查看iptables –list 观察是否已经有被干掉的地址。



由于是简单摘录,还没空测试,请慎用

具体功能还未测试请慎用

具体功能还未测试请慎用

具体功能还未测试请慎用

重要的话,说三遍!

NILYANG
粉丝 15
博文 100
码字总数 19038
作品 0
杭州
高级程序员
私信 提问
加载中
此博客有 5 条评论,请先登录后再查看。

暂无文章

RESTful身份验证 - RESTful Authentication

问题: What does RESTful Authentication mean and how does it work? RESTful身份验证的含义是什么?它是如何工作的? I can't find a good overview on Google. 我无法在Google上找到一个......

fyin1314
32分钟前
9
0
使用JavaScript获取浏览器视口尺寸 - Get the browser viewport dimensions with JavaScript

问题: I want to provide my visitors the ability to see images in high quality, is there any way I can detect the window size? 我想为访问者提供观看高质量图像的能力,有什么方法可......

富含淀粉
今天
26
0
如何处理ASP.NET MVC Framework中的多个提交按钮?

问题: Is there some easy way to handle multiple submit buttons from the same form? 是否有一些简单的方法可以处理来自同一表单的多个提交按钮? Example: 例: <% Html.BeginForm("MyA......

技术盛宴
今天
21
0
Android NDK 工具链的使用方法(Standalone Toolchain)

首先需要确定目标机器的指令集。 如果是 x86 的机器,用 x86-4.4.3 版本的工具链;如果是 arm 指令的,用 arm-linux-androideabi-4.4.3 版本 (x86-4.4.3 和 arm-linux-androideabi-4.4.3 位于...

shzwork
今天
29
0
给定两个目录树,如何找出哪些文件有所不同? - Given two directory trees, how can I find out which files differ?

问题: If I want find the differences between two directory trees, I usually just execute: 如果我想找到两个目录树之间的差异,我通常只执行: diff -r dir1/ dir2/ This outputs ex......

法国红酒甜
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部