Chinaunix首页 | 论坛 | 博客
  • 博客访问: 282356
  • 博文数量: 28
  • 博客积分: 690
  • 博客等级: 上士
  • 技术积分: 860
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-24 13:52
文章分类

全部博文(28)

文章存档

2012年(28)

分类: 网络与安全

2012-06-20 15:41:18

防止SSH攻击

 

DenyHost:用于发现同一IP在进行多次SSH攻击,并将其禁止,并将记录写到/etc/hosts.deny中。

软件:DenyHosts-2.6.tar.gz

环境:Red Hat Enterprise Linux Server release 6.1

 

tar -zxvf DenyHosts-2.6.tar.gz

cd DenyHosts-2.6

python setup.py install

cd /usr/share/denyhosts/  此时DenyHost被安装到此目录下

cp daemon-control-dist daemon-control  生成启动文件

grep -v '^ *#' denyhosts.cfg-dist | sed '/^$/d' > denyhosts.cfg 产生配置文件

vi denyhosts.cfg

SECURE_LOG = /var/log/secure  日志文件存放位置(直接用默认即可)

HOSTS_DENY = /etc/hosts.deny  系统控制用户登录文件

PURGE_DENY =

BLOCK_SERVICE  = sshd   禁止服务名称

DENY_THRESHOLD_INVALID = 5  无效用户登录失败次数(/etc/passwd文件中没有的用户)

DENY_THRESHOLD_VALID = 10  普通用户登录失败次数(/etc/passwd文件中有的用户

DENY_THRESHOLD_ROOT = 3   root登录失败次数

DENY_THRESHOLD_RESTRICTED = 1

WORK_DIR = /usr/share/denyhosts/data  存放denyhosts信息的位置,可以从这里看到被攻击的情况

SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES

HOSTNAME_LOOKUP=NO  禁止做逆向域名解析

LOCK_FILE = /var/lock/subsys/denyhosts

DAEMON_LOG = /var/log/denyhosts  denyhosts自己的日志文件

DAEMON_SLEEP = 30s

DAEMON_PURGE = 1h

 

保存退出后

/usr/share/denyhosts/daemon-control start  启动服务

此时可以用另外一台机子进行测试:

此时你发现当另外一台机器密码输入3次错误的话,再次登录就无法登录了。

此时你会在服务器上的/etc/hosts.deny中发现里面增加了一行。

 

 

另外一种防止SSH攻击方法(通过shell脚本和防火墙来实现):

 

vi ban_ssh.sh

#!/bin/bash

name=(`grep 'Failed' /var/log/secure | sed 's/.*from \(.*\) port.*/\1/g' | sort | uniq -c | tr -s ' ' ':'`)

/sbin/iptables -F

/sbin/iptables -Z

/sbin/iptables -P INPUT DROP

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

/sbin/iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,PSH,URG SYN -m state --state NEW -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

/sbin/iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

for i in ${name[*]}

do

        count=`echo $i | awk -F':' '{print $2}'`

        ip=`echo $i | awk -F':' '{print $3}'`

        if [ "$count" -gt 3 ]

        then

                echo "sshd:$ip" >> /etc/hosts.deny

                /sbin/iptables -I INPUT -p tcp -s $ip --dport 22 -m state --state NEW -j DROP

                cp /var/log/secure /var/log/secure.`date +%Y%m%d%H%M`

                cat > /var/log/secure <<-EOF

                EOF

        fi

done

 

添加计划任务:

crontab –e

* */1 * * * /root/ban_ssh.sh 每小时执行一遍此脚本

/etc/init.d/crond restart

 

执行完该脚本后,可以发现被禁止的机子无法SSH登陆到服务器上,但是可以访问http网页。

阅读(4744) | 评论(0) | 转发(0) |
0

上一篇:Bonding 配置

下一篇:NFS学习笔记

给主人留下些什么吧!~~