1)禁止系统响应任何从外部/内部来的ping请求攻击者一般首先通过ping命令检测此主机或者IP是否处于活动状态
如果能够ping通 某个主机或者IP,那么攻击者就认为此系统处于活动状态,继而进行攻击或破坏。如果没有人能ping通机器并收到响应,那么就可以大大增强服务器的安全性,
linux下可以执行如下设置,禁止ping请求:
[root@localhost ~]# echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all

默认情况下"icmp_echo_ignore_all"的值为"0",表示响应ping操作。
可以加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系统重启后自动运行。

2)禁止Control-Alt-Delete组合键重启系统
在linux的默认设置下,同时按下Control-Alt-Delete键,系统将自动重启,这是很不安全的,因此要禁止Control-Alt-Delete组合键重启系统,查看/etc/inittab文件:
[root@localhost ~]# cat /etc/inittab
.......
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
.......

[root@localhost ~]# cat /etc/init/control-alt-delete.conf
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed. Usually used to shut down the machine.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file control-alt-delete.override and put your changes there.

start on control-alt-delete

exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

可以将/etc/init/control-alt-delete.conf文件删除或移走或更名。
[root@localhost ~]# mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bak

或者将/etc/init/control-alt-delete.conf文件里的内容注释掉!

3)限制Shell记录历史命令大小
默认情况下,bash shell会在文件$HOME/.bash_history中存放多达1000条命令记录(根据系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。
这么多的历史命令记录,肯定是不安全的,因此必须限制该文件的大小。
可以编辑/etc/profile文件,修改其中的选项如下:
[root@localhost ~]# vim /etc/profile
.......
HISTSIZE=1000
.......

默认Shell记录历史命令的条数是1000,可以修改为100条,即HISTSIZE=1000,表示在文件$HOME/.bash_history中记录最近的30条历史命令。
如果将"HISTSIZE"设置为0,则表示不记录历史命令,那么也就不能用键盘的上下键查找历史命令了。

4)设定tcp_wrappers防火墙
Tcp_Wrappers是一个用来分析TCP/IP封包的软件,类似的IP封包软件还有iptables,linux默认都安装了此软件,作为一个安全的系统,Linux本身有两层安全防火墙,通过IP
过滤机制的iptables实现第一层防护,iptables防火墙通过直观地监视系统的运行状况,阻挡网络中的一些恶意攻击,保护整个系统正常运行,免遭攻击和破坏。
如果通过了iptables的第一层防护,那么下一层防护就是tcp_wrappers了,通过Tcp_Wrappers可以实现对系统中提供的某些服务的开放与关闭、允许和禁止,从而更有效地保
证系统安全运行。
4.1)Tcp_Wrappers的使用很简单,仅仅两个配置文件:/etc/hosts.allow和/etc/hosts.deny查看系统是否安装了Tcp_Wrappers:
[root@localhost ~]# rpm -q tcp_wrappers
tcp_wrappers-7.6-58.el6.x86_64
如果有上面的类似输出,表示系统已经安装了tcp_wrappers模块。如果没有显示,可能是没有安装,可以从linux系统安装盘找到对应RPM包进行安装。

4.2)tcp_wrappers防火墙的局限性
系统中的某个服务是否可以使用tcp_wrappers防火墙,取决于该服务是否应用了libwrapped库文件,如果应用了就可以使用tcp_wrappers防火墙,系统中默认的一些服务如:
sshd、portmap、sendmail、xinetd、vsftpd、tcpd等都可以使用tcp_wrappers防火墙。

4.3)tcp_wrappers设定的规则(使用例子可以参考:http://www.cnblogs.com/kevingrace/p/6245859.html
tcp_wrappers防火墙的实现是通过/etc/hosts.allow和/etc/hosts.deny两个文件来完成的,首先看一下设定的格式:
service:host(s) [:action]

service:代表服务名,例如sshd、vsftpd、sendmail等。
host(s):主机名或者IP地址,可以有多个,例如192.168.60.0、www.ixdba.netl action:动作, 符合条件后所采取的动作。
几个关键字:
ALL:所有服务或者所有IP。
ALL EXCEPT:所有的服务或者所有IP除去指定的。

例如:ALL:ALL EXCEPT 192.168.60.132
表示除了192.168.60.132这台机器,任何机器执行所有服务时或被允许或被拒绝。
了解了设定语法后,下面就可以对服务进行访问限定。

例如:互联网上一台linux服务器,实现的目标是:仅仅允许222.90.66.4、61.185.224.66以及域名softpark.com通过SSH服务远程登录到系统,设置如下:
首先设定允许登录的计算机,即配置/etc/hosts.allow文件,设置很简单,只要修改/etc/hosts.allow(如果没有此文件,请自行建立)这个文件即可。
只需将下面规则加入/etc/hosts.allow即可。
sshd: 222.90.66.4 61.185.224.66 softpark.com
接着设置不允许登录的机器,也就是配置/etc/hosts.deny文件了。
一般情况下,linux会首先判断/etc/hosts.allow这个文件,如果远程登录的计算机满足文件/etc/hosts.allow设定的话,就不会去使用/etc/hosts.deny文件了,相反,如果
不满足hosts.allow文件设定的规则的话,就会去使用hosts.deny文件了,如果满足hosts.deny的规则,此主机就被限制为不可访问linux服务器,如果也不满足hosts.deny的
设定,此主机默认是可以访问linux服务器的,因此,当设定好/etc/hosts.allow文件访问规则之后,只需设置/etc/hosts.deny为"所有计算机都不能登录状态"即可。
sshd:ALL

这样,一个简单的tcp_wrappers防火墙就设置完毕了。

5)网络安全选项的设定
编辑 "/etc/sysctl.conf" 档案,并加入下面几行,
[root@localhost ~]# vim /etc/sysctl.conf  
# Enable ignoring broadcasts request(让系统对广播没有反应) 
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Disables IP source routing(取消 IP source routing)   
net.ipv4.conf.all.accept_source_route = 0

# Enable TCP SYN Cookie Protection(开启 TCP SYN Cookie 保护)   
net.ipv4.tcp_syncookies = 1

# Disable ICMP Redirect Acceptance(取消 ICMP 接受 Redirect)   
net.ipv4.conf.all.accept_redirects = 0

# Enable bad error message Protection(开启错误讯息保护)   
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Enable IP spoofing protection, turn on Source Address Verification(开启 IP 欺骗保护)   
net.ipv4.conf.all.rp_filter = 1

# Log Spoofed Packets, Source Routed Packets, Redirect Packets(记录Spoofed Packets, Source Routed Packets, Redirect Packets)   
net.ipv4.conf.all.log_martians = 1

最后重新启动network  
[root@localhost ~]# /etc/rc.d/init.d/network restart

或者sysctl –p 生效  
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

6)系统文件和日志的安全
更改各种服务启动脚本目录的访问权限: 
[root@localhost ~]# chmod -R 700 /etc/rc.d/

更改系统文件的访问权限:             
[root@localhost ~]# chmod 700 /etc/services 
[root@localhost ~]# chmod 700 /etc/xinetd.conf   
[root@localhost ~]# chmod 700 /etc/inittab

更改日志的访访权限:                 
[root@localhost ~]# chmod 700 /var/log/secure*                                         
[root@localhost ~]# chmod 700 /var/log/messages*

7)系统登陆的设定
每次登陆退出时,清除所用过命令的历史纪: 在.bash_logout文档中增加一行:
[root@localhost ~]# vim /root/.bashrc
......
history –c

设置系统全局环境变量文件/etc/profile 增加一行:
[root@localhost ~]# vim /etc/profile
......
TMOUT=600

单位为秒,表示如果在600秒(10分钟)之内没有做任何的操作,登陆终端将自动注销。 3.资源限制 
 
编辑/etc/security/limits.conf 加入:
[root@localhost ~]# vim /etc/security/limits.conf
......
* hard core 0     
* hard rss 5000   
* hard nproc 20

同时必须编辑/etc/pam.d/login文件加/检查下面这一行的存在:
[root@localhost ~]# vim /etc/pam.d/login
.......
session required /lib/security/pam_limits.so

上面的命令分别是禁止创建core文件,其他用户(除root)最多使用5M内存,限制最多进程数为20

8)vsftp配置 
vsftpd的配置文件有三个,分别是: 
/etc/vsftpd/vsftpd.conf 
/etc/ vsftpd/vsftpd.ftpusers 
/etc/ vsftpd/vsftpd.user_list

其中:
/etc/vsftpd.conf是主配置文件
/etc/vsftpd.ftpusers中指定了哪些用户不能访问FTP服务器
/etc/vsftpd.user_list中指定的用户默认情况下(即在/etc/vsftpd.conf中设置了userlist_deny= YES)不能访问FTP服务器

当在/etc/vsftpd.conf中设置了userlist_deny=NO时,仅仅允许/etc/vsftpd.user_list中指定的用户访问FTP服务器。 
一般要在/etc/vsftpd.conf中设置userlist_deny=NO,通过/etc/vsftpd.user_list严格控制FTP用户。

配置基本的性能和安全选项 
//禁止匿名登陆 
anonymous_enable=NO (默认为YES) 
 
//设置空闲的用户会话的中断时间 例如下面的配置: 
idle_session_timeout=600 
将在用户会话空闲10分钟后被中断。

//设置空闲的数据连接的的中断时间 例如下面的配置: 
data_connection_timeout=120 
将在数据连接空闲2分钟后被中断。

//设置客户端空闲时的自动中断和激活连接的时间 例如下面的配置: accept_timeout=60 connect_timeout=60 
将使客户端空闲1分钟后自动中断连接,并在中断1分钟后自动激活连接

//设置最大传输速率限制 例如下面的配置:(传输速率可根据实际情况自行修改) local_max_rate=50000 anon_max_rate=30000 
将使本地用户的最大传输速率为50kbytes / sec,匿名用户的 传输速率为30 kbytes / sec。
  
//设置客户端连接时的端口范围 例如下面的配置: pasv_min_port=50000 pasv_max_port=60000 
将使客户端连接时的端口范围在50000和60000之间。这提高了系统的安全性

截短历史命令 "~/.bash_history"文件,这个文件中保存着以前使用的命令列表。截短这个文件可以使您以前执行过的命令暴露在别人眼光下的机会减小.
(在您的命令中很可能包括象密码信息这样的保密信息)。通过编辑/etc/profile的下面两项可以做到这一点: 
HISTFILESIZE=20

通过下面的措施可以防止任何人都可以su为root: 
编辑su文件(vi /etc/pam.d/su)在文件的头部加入下面两行: 
auth sufficient /lib/security/pam_rootok.so debug 
auth required /lib/security/pam_wheel.so group=wheel

9)使用DenyHosts阻止SSH暴力破解(同时可以保护FTP)
当你的Linux服务器暴露在互联网之中,该服务器将会遭到互联网上的扫描软件进行扫描,并试图猜测SSH登录口令,不可避免的有病毒或无聊的人会尝试攻击SSH。。你会发现,每天会有多条SSH登录失败纪录。那些扫描工具将对你的服务器构成威胁,你必须设置复杂登录口令,并将尝试多次登录失败的IP给阻止掉,让其在一段时间内不能访问该服务器。DenyHosts是Python语言写的一个程序,用DenyHosts可以阻止试图猜测SSH登录口令,它会分析/var/log/secure等日志文件,当发现有重复的IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。

下载DenyHosts-2.6.tar.gz安装包以下是安装记录:
[root@localhost ~]# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
[root@localhost ~]# tar -zxvf DenyHosts-2.6.tar.gz
[root@localhost ~]# cd DenyHosts-2.6
[root@localhost DenyHosts-2.6]# python setup.py install

默认是安装到/usr/share/denyhosts/目录的。 
[root@localhost DenyHosts-2.6]# cd /usr/share/denyhosts/ 
[root@localhost denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg 
[root@localhost denyhosts]# cp daemon-control-dist daemon-control 
[root@localhost denyhosts]# vim daemon-control 
DENYHOSTS_BIN   = "/usr/bin/denyhosts.py" 
DENYHOSTS_LOCK  = "/var/lock/subsys/denyhosts" 
DENYHOSTS_CFG   = "/usr/share/denyhosts/denyhosts.cfg"

[root@localhost denyhosts]# chown root daemon-control 
[root@localhost denyhosts]# chmod 700 daemon-control

完了之后执行daemon-contron start就可以了(重启是restart)。 
[root@localhost denyhosts]# ./daemon-control start                 //或者执行"service denyhosts start"命令来启动

如果要使DenyHosts每次重起后自动启动还需做如下设置: 
[root@localhost denyhosts]# cd /etc/init.d 
[root@localhost denyhosts]# ln -s /usr/share/denyhosts/daemon-control denyhosts 
[root@localhost denyhosts]# chkconfig --add denyhosts 
[root@localhost denyhosts]# chkconfig --level 2345 denyhosts on

或者修改/etc/rc.local文件: 
[root@localhost denyhosts]# vim /etc/rc.local      //加入下面这条命令 
/usr/share/denyhosts/daemon-control start

DenyHosts配置文件说明: 
[root@localhost denyhosts]# vim denyhosts.cfg 
#这里根据自己需要进行相应的配置  
SECURE_LOG = /var/log/secure 
#sshd日志文件,它是根据这个文件来判断的,不同的操作系统,文件名稍有不同。  
HOSTS_DENY = /etc/hosts.deny   #控制用户登陆的文件  
PURGE_DENY = 5m 
#过多久后清除已经禁止的  
BLOCK_SERVICE = sshd 
BLOCK_SERVICE = vsftpd     #(如果启用FTP服务,务必加上这一行) ,禁止的服务名  
DENY_THRESHOLD_INVALID = 1    #允许无效用户失败的次数

DENY_THRESHOLD_VALID = 10    #允许普通用户登陆失败的次数  
DENY_THRESHOLD_ROOT = 5    #允许root登陆失败的次数  
HOSTNAME_LOOKUP=NO    #是否做域名反解  
DAEMON_LOG = /var/log/denyhosts    #DenyHosts的日志文件

DenyHosts防SSH暴力破解测试:

  1. 192.168.10.200服务器按照上面步骤安装并启动了DenyHosts
  2. 现在在另一台服务器192.168.10.205上用ssh工具连接192.168.10.200,用错误的密码尝试几次:
  3. [root@host-205 ~]# ssh -p22 root@192.168.10.200
  4. root@192.168.10.200's password:
  5. Permission denied, please try again.
  6. root@192.168.10.200's password:
  7. Permission denied, please try again.
  8. root@192.168.10.200's password:
  9. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  10.  
  11. [root@host-205 ~]# ssh -p22 root@192.168.10.200
  12. root@192.168.10.200's password:
  13. Permission denied, please try again.
  14. root@192.168.10.200's password:
  15. Permission denied, please try again.
  16. root@192.168.10.200's password:
  17. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  18.  
  19. [root@host-205 ~]# ssh -p22 root@192.168.10.200
  20. ssh_exchange_identification: Connection closed by remote host
  21.  
  22. [root@host-205 ~]# ssh -p22 root@192.168.10.200
  23. ssh_exchange_identification: Connection closed by remote host
  24.  
  25. 发现在192.168.10.205上使用错误密码去ssh连接192.168.10.200机器失败多数后,就是禁止205这台机器去ssh连接200机器了。
  26.  
  27. 查看192.168.10.200机器的/var/log/denyhosts,可以发现如下信息:
  28. [root@host-200 ~]# tail -f /var/log/denyhosts
  29. ......
  30. 2018-02-12 00:59:59,320 - denyhosts : INFO monitoring log: /var/log/secure
  31. 2018-02-12 00:59:59,320 - denyhosts : INFO sync_time: 3600
  32. 2018-02-12 00:59:59,320 - denyhosts : INFO purging of /etc/hosts.deny is disabled
  33. 2018-02-12 00:59:59,320 - denyhosts : INFO denyhosts synchronization disabled
  34. 2018-02-12 01:16:00,203 - denyhosts : INFO new denied hosts: ['192.168.10.205']
  35.  
  36. 同时,/etc/hosts.deny中也会加入192.168.10.205,即禁止这台机器使用ssh来连接:
  37. [root@host-200 ~]# cat /etc/hosts.deny
  38. #
  39. # hosts.deny This file contains access rules which are used to
  40. # deny connections to network services that either use
  41. # the tcp_wrappers library or that have been
  42. # started through a tcp_wrappers-enabled xinetd.
  43. #
  44. # The rules in this file can also be set up in
  45. # /etc/hosts.allow with a 'deny' option instead.
  46. #
  47. # See 'man 5 hosts_options' and 'man 5 hosts_access'
  48. # for information on rule syntax.
  49. # See 'man tcpd' for information on tcp_wrappers
  50. #
  51. sshd: 192.168.10.205
  52.  
  53. 若要手动允许该IP通过ssh访问,请把对应的IP从/etc/hosts.deny中删掉,然后,重启denyhosts服务即可。

除了上面源码方式安装,还可以采用yum安装DenyHosts

  1. 1yum 安装 denyhosts
  2. [root@denyhosts ~]# yum search denyhosts
  3. [root@denyhosts ~]# yum install denyhosts
  4. [root@denyhosts ~]# rpm -ql denyhosts
  5.  
  6. 2denyhosts几个比较重要的目录
  7. 该目录中主要存放计划任务,日志压缩 以及 chkconfig service 启动的文档
  8. /etc/cron.d/denyhosts
  9. /etc/denyhosts.conf
  10. /etc/logrotate.d/denyhosts
  11. /etc/rc.d/init.d/denyhosts
  12. /etc/sysconfig/denyhosts
  13.  
  14. 该目录中主要存放 denyhosts 所拒绝及允许的一些主机信息
  15. /var/lib/denyhosts/allowed-hosts
  16. /var/lib/denyhosts/allowed-warned-hosts
  17. /var/lib/denyhosts/hosts
  18. /var/lib/denyhosts/hosts-restricted
  19. /var/lib/denyhosts/hosts-root
  20. /var/lib/denyhosts/hosts-valid
  21. /var/lib/denyhosts/offset
  22. /var/lib/denyhosts/suspicious-logins
  23. /var/lib/denyhosts/sync-hosts
  24. /var/lib/denyhosts/users-hosts
  25. /var/lib/denyhosts/users-invalid
  26. /var/lib/denyhosts/users-valid
  27. /var/log/denyhosts
  28.  
  29. 3)来看看 /etc/denyhosts.conf 中的配置参数
  30. [root@denyhosts ~]# egrep -v "(^$|^#)" /etc/denyhosts.conf
  31. ############ THESE SETTINGS ARE REQUIRED ############
  32. # 系统安全日志文件,主要获取ssh信息
  33. SECURE_LOG = /var/log/secure
  34.  
  35. # 拒绝写入IP文件 hosts.deny
  36. HOSTS_DENY = /etc/hosts.deny
  37.  
  38. # 过多久后清除已经禁止的,其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
  39. PURGE_DENY = 4w
  40.  
  41. # denyhosts所要阻止的服务名称
  42. BLOCK_SERVICE = sshd
  43.  
  44. # 允许无效用户登录失败的次数
  45. DENY_THRESHOLD_INVALID = 3
  46.  
  47. # 允许普通用户登录失败的次数
  48. DENY_THRESHOLD_VALID = 10
  49.  
  50. # 允许ROOT用户登录失败的次数
  51. DENY_THRESHOLD_ROOT = 6
  52.  
  53. # 设定 deny host 写入到该资料夹
  54. DENY_THRESHOLD_RESTRICTED = 1
  55.  
  56. # 将deny的host或ip纪录到Work_dir中
  57. WORK_DIR = /var/lib/denyhosts
  58.  
  59. SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
  60.  
  61. # 是否做域名反解
  62. HOSTNAME_LOOKUP=YES
  63.  
  64. # 将DenyHOts启动的pid纪录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
  65. LOCK_FILE = /var/lock/subsys/denyhosts
  66.  
  67. ############ THESE SETTINGS ARE OPTIONAL ############
  68. # 管理员Mail地址(可以不用设置)
  69. ADMIN_EMAIL = root
  70. SMTP_HOST = localhost
  71. SMTP_PORT = 25
  72. SMTP_FROM = DenyHosts <nobody@localhost>
  73. SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
  74.  
  75. # 有效用户登录失败计数归零的时间
  76. AGE_RESET_VALID=5d
  77.  
  78. # ROOT用户登录失败计数归零的时间
  79. AGE_RESET_ROOT=25d
  80.  
  81. # 用户的失败登录计数重置为0的时间(/usr/share/denyhosts/restricted-usernames)
  82. AGE_RESET_RESTRICTED=25d
  83.  
  84. # 无效用户登录失败计数归零的时间
  85. AGE_RESET_INVALID=10d
  86.  
  87. ######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
  88. # denyhosts log文件
  89. DAEMON_LOG = /var/log/denyhosts
  90.  
  91. DAEMON_SLEEP = 30s
  92.  
  93. # 该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
  94. DAEMON_PURGE = 1h
  95.  
  96. 4)启动 denyhosts 服务并查看状态
  97. [root@denyhosts ~]# service denyhosts status
  98. denyhosts.py is stopped
  99. [root@denyhosts ~]# service denyhosts start
  100. Starting denyhosts: [ OK ]
  101. [root@denyhosts ~]# service denyhosts status
  102. denyhosts.py (pid 19784) is running...
  103.  
  104. 5)通过测试 invalidvalidroot 等用户设置不同的ssh连接失败次数,来测试 denyhosts
  105.  
  106. 这里只测试使用系统中不存在的用户进行失败登录尝试~
  107. 这里允许 invalid 用户只能失败4次、ROOT 用户失败7次、valid用户失败10
  108. DENY_THRESHOLD_INVALID = 4
  109. DENY_THRESHOLD_VALID = 10
  110. DENY_THRESHOLD_ROOT = 7
  111.  
  112. 测试:
  113. 在客户机(192.168.10.204)上使用一个没有创建的用户失败登录denyhosts机器(192.168.10.202)四次
  114. [root@centos6-06 ~]# ssh -p22 haha@192.168.10.202
  115. .......
  116. 多次尝试登陆失败后,就会发现客户机就不能使用ssh登陆denyhosts服务器了
  117. [root@centos6-06 ~]# ssh -p22 haha@192.168.10.202
  118. ssh_exchange_identification: Connection closed by remote host
  119.  
  120. 查看denyhosts服务器的/etc/hosts.deny
  121. [root@denyhosts ~]# echo -n "" > /var/log/secure
  122. [root@denyhosts ~]# tail -f /var/log/secure
  123. Feb 12 01:47:14 ceph-node3 sshd[19885]: refused connect from 192.168.10.204 (192.168.10.204)
  124. [root@denyhosts ~]# tail -f /etc/hosts.deny
  125. #
  126. # The rules in this file can also be set up in
  127. # /etc/hosts.allow with a 'deny' option instead.
  128. #
  129. # See 'man 5 hosts_options' and 'man 5 hosts_access'
  130. # for information on rule syntax.
  131. # See 'man tcpd' for information on tcp_wrappers
  132. #
  133. # DenyHosts: Mon Feb 12 01:44:48 2018 | sshd: 192.168.10.204
  134. sshd: 192.168.10.204
  135.  
  136. /var/log/secure 日志信息:
  137. [root@denyhosts ~]# tail -f /var/log/secure
  138. .......
  139. Feb 12 01:48:15 ceph-node3 sshd[19892]: Invalid user haha from 192.168.10.204
  140. Feb 12 01:48:15 ceph-node3 sshd[19893]: input_userauth_request: invalid user haha
  141. Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
  142. Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.204
  143. Feb 12 01:48:17 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
  144. Feb 12 01:48:18 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
  145. Feb 12 01:48:19 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
  146. Feb 12 01:48:19 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
  147. Feb 12 01:48:22 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
  148. Feb 12 01:48:23 ceph-node3 sshd[19892]: pam_unix(sshd:auth): check pass; user unknown
  149. Feb 12 01:48:23 ceph-node3 sshd[19892]: pam_succeed_if(sshd:auth): error retrieving information about user haha
  150. Feb 12 01:48:25 ceph-node3 sshd[19892]: Failed password for invalid user haha from 192.168.10.204 port 60196 ssh2
  151. Feb 12 01:48:25 ceph-node3 sshd[19893]: Connection closed by 192.168.10.204
  152. Feb 12 01:48:25 ceph-node3 sshd[19892]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.204
  153. Feb 12 01:48:27 ceph-node3 sshd[19899]: refused connect from 192.168.10.204 (192.168.10.204)

关于DenyHosts中清除及添加可信主机记录

  1. DenyHosts会读取多个记录确保没有漏网之鱼,如果想删除一个或多个已经禁止的主机IP,仅清空/var/log/secure和/etc/hosts.deny并不能完美解除已被锁定的IP,
  2. 很快就会被DenyHosts重新锁定,这也是DenyHosts强大的地方!!需要进入 /var/lib/denyhosts 目录,进入以下操作:
  3.  
  4. 针对源码方式安装DenyHosts后的解锁ip的措施:
  5. 1)停止DenyHosts服务:service denyhosts stop
  6. 2)在下列文件中找到想解锁的IP记录并删除(通常只修改前两个文件就OK了)。不推荐这种方法,因为用vim在下面的文件中找到解锁IP是非常费时费力的.
  7. /var/log/secure
  8. /etc/hosts.deny
  9. /usr/share/denyhosts/data/hosts
  10. /usr/share/denyhosts/data/hosts-restricted
  11. /usr/share/denyhosts/data/hosts-root
  12. /usr/share/denyhosts/data/hosts-valid
  13.  
  14. 如果不在乎上面的记录文件, 推荐清空上面几个Linux系统日志然后重新开启DennyHosts. 清空这些Linux系统日志不会影响任何功能.
  15. 如果你觉得这几个文件记录对你很重要(真的?), 请不要随意清空, 老老实实使用上面的方法.
  16. 清空上面几个Linux系统日志很简单, SSH中敲入下面的命令:
  17. cat /dev/null > /var/log/secure
  18. cat /dev/null > /etc/hosts.deny
  19. cat /dev/null > /usr/share/denyhosts/data/hosts
  20. cat /dev/null > /usr/share/denyhosts/data/hosts-restricted
  21. cat /dev/null > /usr/share/denyhosts/data/hosts-root
  22. cat /dev/null > /usr/share/denyhosts/data/hosts-valid
  23. cat /dev/null > /usr/share/denyhosts/data/offset
  24. cat /dev/null > /usr/share/denyhosts/data/suspicious-logins
  25. cat /dev/null > /usr/share/denyhosts/data/users-hosts
  26. cat /dev/null > /usr/share/denyhosts/data/users-invalid
  27. cat /dev/null > /usr/share/denyhosts/data/users-valid
  28.  
  29. 把日志文件全部清空!要注意的是,清空后一定要
  30. # service rsyslog restart 重启日志记数器!
  31. 因为如果你不重启服务,你会发现secure日志文件会停止记录一切活动了!那么denyhosts也就无效了
  32.  
  33. 然后重新开启Deny Hosts
  34. # service denyhosts start
  35.  
  36. 最好重启ssh服务和iptables防火墙(如果打开的话)
  37. #service sshd restart
  38. #service iptables restart
  39.  
  40. 针对yum方式安装DenyHosts后的解锁ip的措施:
  41. 1)停止DenyHosts服务:service denyhosts stop
  42. 2)在 /etc/hosts.deny 中删除你想取消的主机IP
  43. 3)编辑 DenyHosts 工作目录的所有文件 /var/lib/denyhosts,并且删除已被添加的主机信息。
  44. /var/lib/denyhosts/hosts
  45. /var/lib/denyhosts/hosts-restricted
  46. /var/lib/denyhosts/hosts-root
  47. /var/lib/denyhosts/hosts-valid
  48. /var/lib/denyhosts/users-hosts
  49. /var/lib/denyhosts/users-invalid
  50. /var/lib/denyhosts/users-valid
  51. 4)添加你想允许的主机IP地址到
  52. /var/lib/denyhosts/allowed-hosts
  53. 5)启动DenyHosts服务: service denyhosts start

通过邮件接收 denyhosts 所发送的信息

  1. 1)安装sendmail邮件服务,请参考:http://www.cnblogs.com/kevingrace/p/6143977.html
  2.  
  3. 2denyhosts机器的主机名配置
  4. [root@ceph-node1 ~]# cat /etc/hosts
  5. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  6. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  7. 192.168.10.202 ceph-node1.localdomain ceph-node1
  8.  
  9. [root@ceph-node1 ~]# cat /etc/sysconfig/network
  10. NETWORKING=yes
  11. HOSTNAME=ceph-node1
  12.  
  13. 2)修改 /etc/denyhosts.conf文件中的mail配置,并重denyhosts 服务
  14. [root@ceph-node1 ~]# cat /etc/denyhosts.conf
  15. ......
  16. # 管理员Mail地址
  17. ADMIN_EMAIL = wangshibo@kevin.com //若有ip被禁用发邮件通知
  18. SMTP_HOST = ceph-node1 //这个是mail机器的主机名。这里我是在denyhosts本机部署的mail服务
  19. SMTP_PORT = 25
  20. SMTP_FROM = DenyHosts <nobody@localhost> //邮件的发送发
  21. SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME] //邮件主题
  22.  
  23. [root@ceph-node1 ~]# /etc/init.d/denyhosts restart
  24. Stopping denyhosts: [ OK ]
  25. Starting denyhosts: [ OK ]
  26.  
  27. 3)在客户机(192.168.10.210)上通过ssh连接denyhosts部署机(192.168.10.202),ssh连接失败次数到达denyhosts设置的失败次数后,
  28. 192.168.10.210ip就会被denyhosts机器自动屏幕,这时候就会触发邮件发信动作。
  29.  
  30. 注意:这里仅仅是在denyhosts机器刚发现客户机的ip被禁用的时候发送邮件,当已经禁用后,再次ssh连接失败后就不会重复发送邮件了,及邮件只会发送一次!
  31.  
  32. [root@zabbix-server ~]# ssh -p22 root@192.168.10.202
  33. The authenticity of host '192.168.10.202 (192.168.10.202)' can't be established.
  34. RSA key fingerprint is fd:82:c3:2d:f1:3e:0f:69:39:bf:7e:f7:82:59:a3:cb.
  35. Are you sure you want to continue connecting (yes/no)? yes
  36. Warning: Permanently added '192.168.10.202' (RSA) to the list of known hosts.
  37. root@192.168.10.202's password:
  38. Permission denied, please try again.
  39. root@192.168.10.202's password:
  40. Permission denied, please try again.
  41. root@192.168.10.202's password:
  42. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  43.  
  44. [root@zabbix-server ~]# ssh -p22 root@192.168.10.202
  45. root@192.168.10.202's password:
  46. Permission denied, please try again.
  47. root@192.168.10.202's password:
  48. Permission denied, please try again.
  49. root@192.168.10.202's password:
  50. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  51.  
  52. [root@zabbix-server ~]# ssh -p22 root@192.168.10.202
  53. root@192.168.10.202's password:
  54. Permission denied, please try again.
  55. root@192.168.10.202's password:
  56. Permission denied, please try again.
  57. root@192.168.10.202's password:
  58. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  59.  
  60. [root@zabbix-server ~]# ssh -p22 root@192.168.10.202
  61. root@192.168.10.202's password:
  62. Permission denied, please try again.
  63. root@192.168.10.202's password:
  64. Permission denied, please try again.
  65. root@192.168.10.202's password:
  66. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
  67.  
  68. [root@zabbix-server ~]# ssh -p22 root@192.168.10.202
  69. ssh_exchange_identification: Connection closed by remote host
  70.  
  71. 此时,客户机192.168.10.210的ip已经被denyhosts机器那边给自动屏蔽掉了,也是在这个时候,通知邮件发出去了。
  72. [root@ceph-node1 ~]# cat /etc/hosts.deny
  73. .......
  74. # DenyHosts: Mon Feb 12 04:34:10 2018 | sshd: 192.168.10.210
  75. sshd: 192.168.10.210

总结几个常用的系统安全设置(含DenyHosts)的更多相关文章

  1. Linux常用命令3--如何设置IP地址?如何更改系统时间?

    Linux常用命令 系统状态监控 [1]ps:用于显示当前系统中运行的进程. 语法:ps [-option]:常用的参数有:-a;-u;-x;-e;-f. -a:显示所有进程: -u:显示所有用户: ...

  2. 常用的系统架构 web服务器之iis,apache,tomcat三者之间的比较

    常用的系统架构是: Linux + Apache + PHP + MySQL Linux + Apache + Java (WebSphere) + Oracle Windows Server 200 ...

  3. BeagleBone Black Industrial系统更新设置一贴通

    前言 原创文章,转载引用务必注明链接.水平有限,欢迎指正. 本文使用markdown写成,为获得更好的阅读体验,推荐访问我的博客原文: http://www.omoikane.cn/2016/09/1 ...

  4. 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解

    Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43   博文说明[前言]: 本文 ...

  5. Ubuntu14.04、win7双系统如何设置win7为默认启动项

    Ubuntu14.04.win7双系统如何设置win7为默认启动项 Ubuntu14.04.win7双系统设置win7为默认启动项方法: 在启动项选择菜单处记住windows 7对应的序号. 从上至下 ...

  6. ABAP语言常用的系统字段及函数

    常用的系统变量如下: 1. SY-PAGNO当前页号 2. SY-DATUM当前时间 3. SY-LINSZ当前报表宽度 4. SY-LINCT当前报表长度 5. SPACE空字符 6. SY-SUB ...

  7. iOS 跳转到系统的设置界面

    跳到健康设置   上网找了一下  你会发现很难找到.代码如下  不信你试试 . NSURL *url = [NSURL URLWithString:@"prefs:root=Privacy& ...

  8. Linux系统时间设置(转载)

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

  9. win8系统输入法设置

    Windows 8系统自带微软拼音简捷输入法,无论是在Windows的开始屏幕新界面中还是Windows传统桌面里,按Shift键或者直接点击屏幕上的"中/英"标识即可切换中英文输 ...

随机推荐

  1. python第三十一天-----类的封装、继承,多态.....

    封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. cla ...

  2. php处理手机号中间的四位为星号****

    在显示用户列表的场景中,一般用到手机号的显示时都需要对手机号进行处理,一般是把中间的四位换成星号****,我本人用php处理的思路是进行替换,用****替换手机号的中间四位 代码如下: $all_lo ...

  3. Business talking in English

    Talking one: A: Microsoft, this is Steve. B: Hi Steve, this is Richard from Third Hand Testing. I am ...

  4. React路由 + 绝对路径引用

    路由: 哈希路由(在url地址后加   #name) // 实现页面监听 window.onhashchange = function(){ console.log(‘hash:’,window.lo ...

  5. WPFの操作文件浏览框几种方式

    方式1: 使用win32控件OpenFileDialog Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog ...

  6. 用requests爬取一个招聘网站

    import requestsimport re session = requests.session()第一步:访问登陆页,拿到X_Anti_Forge_Token,X_Anti_Forge_Cod ...

  7. mybatis的xml映射文件

    1,在进行统计查询时候,不想写映射的实体类,这时候设置返回的resultType类型是map <select id="getMap" resultType="jav ...

  8. linux系统自签发免费ssl证书,为nginx生成自签名ssl证书

    首先执行如下命令生成一个key openssl genrsa -des3 -out ssl.key 1024 然后他会要求你输入这个key文件的密码.不推荐输入.因为以后要给nginx使用.每次rel ...

  9. eureka分区的深入讲解

    背景 用户量比较大或者用户地理位置分布范围很广的项目,一般都会有多个机房.这个时候如果上线springCloud服务的话,我们希望一个机房内的服务优先调用同一个机房内的服务,当同一个机房的服务不可用的 ...

  10. Iris框架源码阅读和分析

    iris包结构简介 iris包含了很多包,下面这些是分析过程中接触到的东西. 能力有限,多多包涵,欢迎联系QQ:2922530320 一起交流 context包包含: Context (接口) con ...