一个伪linux粉丝的blog

  1. 首页
  2. network
  3. 正文

服务器安全第一步-防范ssh暴力破解

13 10 月, 2010 4234点热度 0人点赞 1条评论

刚才看了下最近折腾的vps上的/var/log/secure 安全日志,结果是不看不知道,一看吓一跳。

less /var/log/secure |grep "Failed password"|wc -l

运行的结果是3890次,看日志是无聊份子拿着字典来进行暴力破解了。

难怪上次我的1台vps悲剧了,密码太简单,被人轻易拿了root权限,新增了用户,架了irc服务。不怕贼偷,就怕贼惦记着啊。

ssh暴力破解日志

再按ip的尝试次数来个排名不分先后吧。

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c

ssh 失败次数ip记录

赶紧想招吧,这么多闲人努力的尝试破解,万一你的密码简单,你的机器就注定要悲剧了。

google 搜了一下,DenyHosts 这个东东进入俺的视线。看名字就很清晰的知道这个程序干啥用的

DenyHosts is a python program that automatically blocks ssh attacks by adding entries to /etc/hosts.deny.

在遇到ssh暴力破解时,自动屏蔽它。:)

一:检查安装要求

首选检查Sshd是否支持 Tcpwrap,只有支持Tcpwrap才可以安装Denyhost

# ldd /usr/sbin/sshd |grep wrap

libwrap.so.0 => /lib/libwrap.so.0 (0x0097f000) //出现此信息时表示支持

再检查 Python的版本,Python2.3以上版本可以直接安装

# python -V

分别是Python 2.4.3  Python 2.5.2
机器都达到要求
二:安装Denyhosts
官网下载该软件 http://sourceforge.net/projects/denyhosts/files/
当然是选择自己对应的Python版本,编译安装。
Debian又可以偷懒了,直接  apt-get install denyhosts

以下为大段转载,参数我也没怎么改,呵呵。
文章出处  http://tech110.blog.51cto.com/438717/287490

进行解压再进入到源目录
# tar -xzvf  DenyHosts-2.6.tar.gz
# cd  DenyHosts-2.6

执行Python脚本进行安装,
# python  setup.py  install
程序脚本自动安装到/usr/share /denyhosts
库文件自动安装到/usr/lib/python2.4/site-packages /DenyHosts
denyhosts.py安装到/usr/bin
三: 设置启动脚本
# cd  /usr/share/denyhosts/
拷贝模板文件
# cp daemon-control-dist daemon-control
设置好启动脚本的所属用户和权限
# chown  root  daemon-control
# chmod  700  daemon-control

生成Denyhost的主配置文件,(将模板文件中开头是#的过滤后再导入到Denyhost.cfg)
# grep  -v  "^#"  denyhosts.cfg-dist  > denyhosts.cfg
编辑Denyhost.cfg文件,根据自己需要进行相应的修改
----------------denyhosts.cfg--------------------------------------
SECURE_LOG = /var/log/secure #ssh 日志文件,它是根据这个文件来判断的,如还有其他的只要更改名字即可,例如将secure改为secure.1等
HOSTS_DENY = /etc/hosts.deny
#控制用户登陆的文件,将多次连接失败的IP添加到此文件,达到屏蔽的作用
PURGE_DENY =
#过多久后清除已经禁止的,我这里为空表示永远不解禁
BLOCK_SERVICE  = sshd
#禁止的服务名,如还要添加其他服务,只需添加逗号跟上相应的服务即可
DENY_THRESHOLD_INVALID = 1
#允许无效用户失败的次数
DENY_THRESHOLD_VALID = 2
#允许有效用户登录失败的次数
DENY_THRESHOLD_ROOT = 3
#允许root登录失败的次数
HOSTNAME_LOOKUP=NO
# 是否做域名反解,这里表示不做
ADMIN_EMAIL = 。。。。
#管理员邮件地址,它会给管理员发邮件
DAEMON_LOG = /var/log/denyhosts
#自己的日志文件
其他:
AGE_RESET_VALID=5d     #(h表示小时,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
#用户的登陆失败计数会在多长时间后重置为0
RESET_ON_SUCCESS = yes
#如果一个ip登陆成功后,失败的登陆计数是否重置为0
DAEMON_SLEEP = 30s
#当以后台方式运行时,每读一次日志文件的时间间隔。
DAEMON_PURGE = 1h
#当以后台方式运行时,清除机制在 HOSTS_DENY 中终止旧条目的时间间隔,这个会影响PURGE_DENY的间隔。
将 Denyhost启动脚本添加到自动启动中
# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.d/rc.local
启动Denyhost的进程
# /usr/share/denyhosts/daemon-control start
可以查看到Denyhost在运行中
# ps -ef |grep deny
在另外一台机器上使用ssh进行连接,当在连续几次输入错误的密码后,会被自动阻止掉,在一定时内不可以再连接ssh连接记录的日志文件。
查看我的/etc/hosts.deny文件发现里面已经有29条记录。
# cat /etc/hosts.deny | wc -l
29

达到规则设定的次数后,再试图ssh登陆破解,只能得到如下结果。服务器暂时安全了

ssh_exchange_identification: Connection closed by remote host

除非真是遇到吃饱了撑的,ip马甲接着换。 难道我要封ip段,不太吧。呵呵,其实改掉22端口是最简单的办法。

grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' /var/log/secure | sort | uniq -c

相关文章:

  1. Real Time Sync with Sersync
  2. crontab log error
  3. Moving WordPress blog to a new server
  4. grep awk cut sort uniq sort
标签: ssh暴力破解 VPS
最后更新:13 10 月, 2010

wanjie

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • 零落千起

    勃主可以打开我的网站,然后再ping一下我的网站,然后打开ping出来的ip试试,我相信我的vps拿到权限基本不可能,另外禁用了root登录。改了端口。

    17 1 月, 2013
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    归档
    分类
    • network / 332篇
    • Uncategorized / 116篇
    • unix/linux / 121篇
    • 业界资讯 / 38篇
    • 公司杂事 / 11篇
    • 数码影像 / 12篇
    • 美剧 / 3篇
    • 美图共赏 / 21篇
    • 英语学习 / 3篇
    标签聚合
    Google Voice 邮件归档 泰国 dreamhost ldap deepseek kubectl Google dreamhost空间 VPS 虚拟主机 postgres wget jira d90 google-chrome gitlab debian 网站运营 Ubuntu docker ssh Nginx 天翼live openssl squid k8s kernel 浏览器 nexus

    COPYRIGHT © 2008-2025 wanjie.info. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang