对于虚拟服务器SSH暴力登录攻击的防范
2013-03-12汪颖
汪颖
【摘要】虚拟服务器(VPS)是一种服务器分割技术,它是将一个服务器分割成多个虚拟的服务器,而每个虚拟服务器有自己单独的IP地址,其在节约带宽,提高访问速度,降低管理成本方面有着较大的优势,但是VPS的安全性还是面临着较大的考验,本文通过VPS在实际运行中遭遇的一次SSH暴力攻击来解析相应的防范措施。
【关键词】虚拟服务器SSH攻击
在VPS的日常维护中,查看系统日志是一个非常好的习惯,通过日志我们可以了解到VPS的运行状态,尤其对于VPS安全状态,我们更可以通过查看日志来获取信息,以下通过一次SSH的暴力攻击来探讨VPS的防范措施。
1修改SSH端口,禁止root登陆
修改/etc/ssh/sshd_config文件$sudovi/etc/ssh/sshd_config Port4484#一个别人猜不到的端口号 PermitRootLoginno $sudo/etc/init.d/sshrestart
2禁用密码登陆,使用RSA私钥登录
AmazonEC2服务器原本就是只可以使用私钥登录,但如果想在其它的计算机临时通过SSH登陆,又没带私钥文件的情况下,就很麻烦。所以需要手动开启密码验证登录。
#在客户端生成密钥
$ssh-keygen-trsa #把公钥拷贝至服务器 $ssh-copy-id-i.ssh/id_rsa.pubserver
#也可以手动将.shh/id_rsa.pub拷贝至服务器用户目录的.ssh中,修改访问权限
#$scp.shh/id_rsa.pubserver:~/.ssh #在服务器中 $cd./.ssh/
$mvid_rsa.pubauthorized_keys $chmod400authorized_keys $vi/etc/ssh/sshd_config
RSAAuthenticationyes#RSA认证 PubkeyAuthenticationyes#开启公钥验证
AuthorizedKeysFile.ssh/authorized_keys#验证文件路径 PasswordAuthenticationno#禁止密码认证 PermitEmptyPasswordsno#禁止空密码 UsePAMno#禁用PAM #最后保存,重启 $sudo/etc/init.d/sshrestart
3安装Denyhosts
这个方法比较省时省力。denyhosts是Python语言写的一个程序,它会分析sshd的日志文件,当发现重复的失败登录时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。这和我之前介绍的自动屏蔽扫描的脚本是一个思路。如果靠人工手动添加的话工作量非常巨大。现今denyhosts在各个发行版软件仓库里都有,而且不需要过多配置,简单易用。安装:
#Debian/Ubuntu:$sudoapt-getinstalldenyhosts
#RedHat/CentOS $yuminstalldenyhosts
#Archlinux $yaourtdenyhosts
#Gentoo $emerge-avdenyhosts
默认配置就能很好的工作,如要个性化设置可以修改/etc/denyhosts.conf:
$vi/etc/denyhosts.conf
SECURE_LOG=/var/log/auth.log#ssh日志文件,根据此文件来判断。
HOSTS_DENY=/etc/hosts.deny#控制用户登陆的文件
PURGE_DENY=#过多久后清除已经禁止的,空表示永远不解禁
BLOCK_SERVICE=sshd#禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可
DENY_THRESHOLD_INVALID=5#允许无效用户失败的次数
DENY_THRESHOLD_VALID=10#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT=1#允许root登陆失败的次数
DENY_THRESHOLD_RESTRICTED=1
WORK_DIR=/var/lib/denyhosts#运行目录
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES#是否进行域名反解析
LOCK_FILE=/var/run/denyhosts.pid#程序的进程ID
ADMIN_EMAIL=root@localhost#管理员邮件地址,它会给管理员发邮件
SMTP_HOST=localhost
SMTP_PORT=25
SMTP_FROM=DenyHosts
SMTP_SUBJECT=DenyHostsReport
AGE_RESET_VALID=5d#用户的登录失败计数会在多久以后重置为0,(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS=yes#如果一个ip登陆成功后,失败的登陆计数是否重置为0
DAEMON_LOG=/var/log/denyhosts#自己的日志文件
DAEMON_SLEEP=30s#当以后台方式运行时,每读一次日志文件的时间间隔。
DAEMON_PURGE=1h#当以后台方式运行时,清除机制在HOSTS_DENY中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。
查看我的/etc/hosts.deny文件发现里面已经有8条记录。
总结:通过之后运行监测,以上的配置能够抵御SSH暴力登陆,提升了虚拟服务器的安全性。