Linux服务器ssh防爆破
1|0查看爆破次数记录
2|0更改ssh默认端口
修改SSH服务器配置文件
# vim /etc/ssh/sshd_config
ssh连接时需指定连接端口,如:
ssh -p 2212 root@xxx.xxx.xxx.xxx
如果修改客户端配置文件 /etc/ssh/config_ssh
把Port改成2212,则连接ssh服务器时默认连接的端口为2212
3|0限制root账户登录
1.修改服务器端配置文件
# vim /etc/ssh/sshd_config
4|0使用DenyHosts
安装:略
配置:
1 2 3 4 5 6 7 8 9 10 | 进入denyhosts的主配置目录#cd /usr/share/denyhosts 复制默认配置文件和程序执行文件#cp denyhosts.cfg-dist denyhosts.cfg#cp daemon-control-dist daemon-control修改程序执行文件的操作权限#chmod 770 daemon-control# ./daemon-control start |
设置开机自启动
1 2 3 | # ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts# chkconfig --add denyhosts# chkconfig --level 2345 denyhosts on |
或者写入自启动文件/etc/rc.local
# echo "/usr/share/denyhosts/daemon-control start" >> /etc/rc.local
常用配置说明
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # vi denyhosts.cfg SECURE_LOG = /var/log/secure#sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不同。HOSTS_DENY = /etc/hosts.deny #阻止用户登陆的文件PURGE_DENY = 5mDAEMON_PURGE = 5m#过多久后清除已经禁止的IP如5m(5分钟)、5h(5小时)、5d(5天)、5w(5周)、1y(一年)BLOCK_SERVICE = sshd#禁止的服务名,可以只限制不允许访问ssh服务,也可以选择ALLDENY_THRESHOLD_INVALID = 5 #允许无效用户失败的次数DENY_THRESHOLD_VALID = 10 #允许普通用户登陆失败的次数DENY_THRESHOLD_ROOT = 5 #允许root登陆失败的次数HOSTNAME_LOOKUP=NO #是否做域名反解ADMIN_EMAIL = #设置管理员邮件地址 DAEMON_PURGE = 10m #该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间。 |
以后就可以通过/etc/hosts.deny文件查看阻止ip
5|0网上的一个防爆破脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #!/bin/bash#Program:# Use to monitor the user who try to login.# 防止SSH用户暴力破解脚本##Usage:# 赋予可执行权限并添加到crontab# 请先修改19行NUM对应的登录失败次数(默认100),超过此值则会添加到/etc/hosts.deny并且发送邮件# 建议使用sendEmail发送邮件(不会被当作垃圾邮件而屏蔽) http://caspian.dotconf.net/menu/Software/SendEmail/# sendmail使用qq、163邮箱测试通过,默认的mail客户端发送qq邮箱会拒收需要添加白名单、163通过#History:#2013/10/13 Ver:1.02 By Jack##PATH=/sbin:/usr/sbin:/bin:/usr/bin:~export PATH#定义阀值,超出此值则添加到黑名单并发送邮件NUM=100#检查是否有root权限[ $UID != 0 ] && echo -e "\e[0;31mSorry,Please run as root!\e[0m" && exit 2#检查安全日志文件是否存在且可读log=/var/log/secure[ ! -e $log ] || [ ! -r $log ] && echo -e "\e[0;31mMake sure the file $log exist or can be readable!\e[0m" && exit 3#登陆失败的IP地址列表ssh_list=/root/logs/ssh_list[ ! -e ${ssh_list} ] && mkdir -p `dirname ${ssh_list}`#判断日志中是否存在ssh登录失败ip,如果没有则退出,否则添加至${ssh_list}cat $log |grep 'Failed' &>/dev/null[ $? != 0 ] && exit 4cat $log|awk '/Failed/{print $(NF-3)}'|uniq -c|sort -nr|awk '{print $2"=>"$1}' > ${ssh_list}#定义黑名单文件(Tcpwrappers)deny_file=/etc/hosts.deny#定义发送的黑名单邮件列表地址mail_file=/root/logs/mail_file[ ! -d `dirname ${mail_file}` ] && mkdir -p `dirname ${mail_file}`#选择邮件发送端,如果使用sendEmail,请下载后将sendEmail.pl拷贝到/usr/bin并赋予x权限if [ -e /usr/bin/sendEmail.pl ] && [ -x /usr/bin/sendEmail.pl ]then sendmail="mailA"elif [ -e /bin/mail ] && [ -x /bin/mail ]then sendmail="mailB"else sendmail="None"fi#关于sendEmail设置send_user='xxxx@qq.com\' #发送者地址smtp_user='xxxx' #登陆smyp服务器的用户名smtp_pass='xxxx' #登陆smtp服务器用户的密码smtp_addr='smtp.qq.com:25' #smtp地址和端口recv_user='115466xxxx@qq.com jack_blues@163.com\' #接收者邮件地址send_mailA(){ /usr/bin/sendEmail.pl -f ${send_user} -t ${recv_user} -s ${smtp_addr} -u "SSHD WARNINGS" -m "`cat ${mail_file}`" -xu ${smtp_user} -xp ${smtp_pass} > /dev/null 2>&1}send_mailB(){ /bin/mail -s "Failed sshd Login Users" ${recv_user} < ${mail_file}}#测试网络test_network(){ #ping 8.8.8.8 -c2 &>/dev/nullRETVAL=$(curl -I -o /dev/null -s -w %{http_code} http://www.baidu.com/)}for i in `cat ${ssh_list}`do COUNT=`echo $i|awk -F"=>" '{print $2}'` IPADDR=`echo $i|awk -F"=>" '{print $1}'` if [ ${COUNT} -ge ${NUM} ];then grep $IPADDR ${deny_file} 2>/dev/null while [ $? -ne 0 ] do echo "sshd:${IPADDR}" >> ${deny_file} echo "<警告>:IP为${IPADDR}的用户尝试使用SSH登陆的次数大于限定值$NUM,其尝试次数为$COUNT">>${mail_file} done fidone#sleep 1while [ -e ${mail_file} ] do test_network [ $RETVAL -ne 200 ] && exit 5 case $sendmail in mailA)send_mailA;; mailB)send_mailB;; None)exit 6 esac rm -f ${mail_file}done |



浙公网安备 33010602011771号