使用Denyhosts防止黑客SSHD扫描

denyhost是一个由python写的脚本,目前最新版本为2.6,可以实现对自动查找恶意ssh连接,然后把恶意ip加入到/etc/hosts.deny文件里面,以实现对服务器的安全防护

  1. 安装denyhost
  2. apt-get install mailutils //安装邮件功能,以实现当有黑客攻击的时候报警到管理员邮箱

  3. apt-get install denyhosts //安装denyhost软件,以实现防黑客扫描

查看并配置denyhosts root@node2:~# cat /etc/denyhosts.conf | grep -v “^$”| grep -v “^#”

  1. ############ THESE SETTINGS ARE REQUIRED ############ //这些设定是必须的

  2. SECURE_LOG = /var/log/auth.log //指定sshd的日志文件,里面已经内置了一些日志文件的位置,只需要打开即可,打开的方法为删除#号。

  3. HOSTS_DENY = /etc/hosts.deny //指定可以限制IP地址的文件,这里使用/etc/hosts.deny

  4. PURGE_DENY = 5m //过多长时间,把IP从/etc/hosts.deny里面清除

  5. BLOCK_SERVICE = sshd //指定被保护的服务,这里要保护的是sshd

  6. DENY_THRESHOLD_INVALID = 1 //允许无效用户失败的次数,在/etc/passwd里面没有的用户(不包括root)

  7. DENY_THRESHOLD_VALID = 2 //允许正常用户失败的次数,在/etc/passwd里面有的用户(不包括root)

  8. DENY_THRESHOLD_ROOT = 1 //允许root用户失败的次数

  9. DENY_THRESHOLD_RESTRICTED = 1 //允许在$WORK_DIR/hosts-restricted里面出现的用户失败的次数

  10. WORK_DIR = /var/lib/denyhosts //定义工作目录

  11. SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES //如果为YES,所有在$WORK_DIR/allowed-host时面的IP地址将会被认为是可疑的,如果设置为NO,所有在allowd-hosts试图登陆的结果,将不会发送警告邮件!所有不在$WORK_DIR/allowed-host时面的IP地址将会发送警告!

  12. HOSTNAME_LOOKUP=YES //是否将IP地址解析为主机名,告警的时候使用主机名。

  13. LOCK_FILE = /run/denyhosts.pid //定义PID文件的位置,确保同时只有一个Denyhost进程在运行

  14. ############ THESE SETTINGS ARE OPTIONAL ############ //这里的设置是可选的

  15. ADMIN_EMAIL = gm100861@gmail.com //当有人试图登录你的服务器,或者有IP被加入黑名单的时候,发送邮件到这里指定的邮箱。前提是,本机一定要可以发送邮件才行!

  16. SMTP_HOST = localhost //指定smtp服务器

  17. SMTP_PORT = 25 //指定SMTP端口号

  18. SMTP_FROM = DenyHosts <nobody@localhost> //指定发件人

  19. SMTP_SUBJECT = DenyHosts Report //指定邮件主题

  20. AGE_RESET_VALID=5d //多长时间后,用户登录失败的次数被置为0,这里是指在/etc/passwd里面定义的用户,如果不设置,永远都不会置0

  21. AGE_RESET_ROOT=25d //多长时间后,root用户登录失败的次数置为0,如果不设置,永远都不会置0

  22. AGE_RESET_RESTRICTED=25d //在$WORK_DIR/hosts-restricted时面定义的用户,多长时间失败次数计数器被置为0

  23. AGE_RESET_INVALID=10d //无效用户(不在/etc/passwd里面的用户)的失败次数计数器,多长时间被置为0

  24. RESET_ON_SUCCESS = yes //当某个IP使用某个用户登录成功后,该IP对应的用户失败次数将会被置为0

  25. ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########

  26. DAEMON_LOG = /var/log/denyhosts //当denyhost运行在守护进程模式的时候,日志文件存储的位置

  27. DAEMON_SLEEP = 30s //轮询查看SSHD日志的间隔

  28. DAEMON_PURGE = 1h //多长时间清空$HOSTS_DENY中的IP地址,如果PURGE_DENY为空,这个设置将无效

  29. ######### THESE SETTINGS ARE SPECIFIC TO ##########

  30. ######### DAEMON SYNCHRONIZATION ##########

恶意的登录一下,再查看/etc/hosts.deny文件

  1. root@node2:~# cat /etc/hosts.deny

  2. /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.

  3. See the manual pages hosts_access(5) and hosts_options(5).

  4. #

  5. Example: ALL: some.host.name, .some.domain

  6. ALL EXCEPT in.fingerd: other.host.name, .other.domain

  7. #

  8. If you’re going to protect the portmapper use the name “portmap” for the

  9. daemon name. Remember that you can only use the keyword “ALL” and IP

  10. addresses (NOT host or domain names) for the portmapper, as well as for

  11. rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)

  12. for further information.

  13. #

  14. The PARANOID wildcard matches any host whose name does not match its

  15. address.

  16. #

  17. You may wish to enable this to ensure any programs that don’t

  18. validate looked up hostnames still leave understandable logs. In past

  19. versions of Debian this has been the default.

  20. ALL: PARANOID

  21. DenyHosts: Mon Jul 16 16:46:46 2012 | sshd: 1.1.1.254

  22. sshd: 1.1.1.254

再查看一下管理员邮箱,收到报警邮件 上网被扫描是经常的事,为了避免 ssh 帐号和密码被暴力破解,Ubuntu下可以利用安装 denyhosts 来加强系统安全性。 1.安装 sudo apt-get install denyhosts 2.配置 /etc/denyhosts.conf 。内容参考: sshd 登录日志文件。不同系统的不一样。 SECURE_LOG = /var/log/auth.log 限制主机访问的文件 HOSTS_DENY = /etc/hosts.deny 移除 HOSTS_DENY 中超过以下时间的旧条目 PURGE_DENY = 1w 阻止的服务。默认是 sshd ,可以设置为其他或全部。 BLOCK_SERVICE = sshd 当该主机利用无效用户进行登录尝试失败超过以下的次数时,阻止该主机 DENY_THRESHOLD_INVALID = 3 针对有效用户的 DENY_THRESHOLD_VALID = 4 针对 root 用户的 DENY_THRESHOLD_ROOT = 1 针对有限制的用户的 DENY_THRESHOLD_RESTRICTED = 1 DenyHosts 用于写数据用的。在里面可以看到 hosts,hosts-root,offset,users-hosts,users-valid,hosts-restricted,hosts- valid,suspicious-logins,users-invalid 这些记录。 WORK_DIR = /var/lib/denyhosts 当为 YES 时,如果允许的主机在登录时被认为可疑,则对该主机进行记录。当为 NO 时,如果允许的主机在登录时被认为可疑也不对该主机进行记录。在允许的主机范围外的主机的可疑登录全部会被记录。 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES 反向域名解释 HOSTNAME_LOOKUP=NO 这个文件存在表示 Denyhosts 正在运行。用于保证每次只有一个实例在运行。 LOCK_FILE = /var/run/denyhosts.pid 管理员 EMail ADMIN_EMAIL = root@localhost SMTP 主机设置。如果有 SMTP 服务支持,可以给管理员发邮件。 SMTP_HOST = localhost SMTP_PORT = 25 SMTP_FROM = DenyHosts <nobody@localhost> SMTP_SUBJECT = DenyHosts Report 如果在指定的时间内没有失败的登录尝试,将导致此主机的失败计数重置为0。此值适用于除了 root 之外,所有有效用户(在 /etc/passwd 中的)的登录尝试。如果没有定义,这个计数将永远不会重置。 AGE_RESET_VALID=5d 针对 root 用户的 AGE_RESET_ROOT=25d 针对有限制的用户的 AGE_RESET_RESTRICTED=25d 针对无效用户(不在 /etc/passwd 中的) AGE_RESET_INVALID=1w 当登录成功时,把登录成功的失败计数重置为0。默认是 NO。 #RESET_ON_SUCCESS = yes 当以后台方式运行时,Denyhosts 的日志文件,留空不记录日志。 #DAEMON_LOG = /var/log/denyhosts 当以后台方式运行时,每读一次日志文件的时间间隔。 DAEMON_SLEEP = 30s 当以后台方式运行时,清除机制在 HOSTS_DENY 中终止旧条目的时间间隔。 DAEMON_PURGE = 1h 3.重启 Denyhosts sudo /etc/init.d/denyhosts restart


文章作者: 物探网
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 物探网 !
 上一篇
Fortran对无格式文件的大小端(big_endian & little_endian)转换 Fortran对无格式文件的大小端(big_endian & little_endian)转换
gfortran编译器用 -fconvert=,conversion其值可以是native,swap,little-endian和big-endian。 详见《Using GNU Fortran》Chapter 2: GNU Fortran
2013-12-31
下一篇 
使用denyhost来防止ssh暴力破解 使用denyhost来防止ssh暴力破解
关于ssh的登录,作为一个合格的linux运维人员大家都是熟悉不能在熟悉的了,我们都知道,计算机本身暴露在互联网上就是危险的,当然我们不要因为我们的业务少,用户量不多而有侥幸心理,掉以轻心;互联网的大多数攻击都是没有目的性的,黑客大神们通过
2013-12-18
  目录