# 查看系统登陆日志
vim /var/log/secure
修改ssh默认端口
开放新的端口
# 开放端口
firewall-cmd --zone=public --add-port=20000/tcp --permanent
# 重启防火墙
firewall-cmd --reload
修改/etc/ssh/sshd_config
vi /etc/ssh/sshd_config
#Port 22 //这行去掉#号
Port 20000 //下面添加这一行
重启ssh
systemctl restart sshd.service
安装和配置DenyHosts
DenyHosts是Python语言写的一个程序,它会分析sshd的日志文件(/var/log/secure),当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件,从而达到自动屏IP的功能。
安装denyhosts
# 更新系统(建议所有系统都先更新)
yum update
# 安装denyhosts
sudo yum install denyhosts
# 加入开机启动
$ chkconfig --add denyhosts
# 配置完后重启denyhosts
$ /etc/init.d/denyhosts restart
# 加入开机启动(第二种方式)
$ systemctl enable denyhosts
# 配置完后重启denyhosts(第二种方式)
$ systemctl restart denyhosts
# 查看denyhosts收集到的恶意ip
$ cat /etc/hosts.deny
# 统计该文件的行数
$ cat /etc/hosts.deny | wc -l
注:是hosts.deny和hosts.allow。不是host.deny!不是host.deny!不是host.deny!
denyhosts配置详解
默认配置就能很好的工作,如要个性化设置可以修改 /etc/denyhosts.conf
############ THESE SETTINGS ARE REQUIRED ############
#sshd的日志文件
SECURE_LOG = /var/log/secure
#将阻止IP写入到hosts.deny,所以这个工具只支持 支持tcp wrapper的协议
HOSTS_DENY = /etc/hosts.deny
#过多久后清除已阻止的IP,即阻断恶意IP的时长 (4周)
PURGE_DENY = 4w
#阻止服务名
BLOCK_SERVICE = sshd
#允许无效用户登录失败的次数
DENY_THRESHOLD_INVALID = 5
#允许普通有效用户登录失败的次数
DENY_THRESHOLD_VALID = 10
#允许root登录失败的次数
DENY_THRESHOLD_ROOT = 1
#设定 deny host 写入到该资料夹
DENY_THRESHOLD_RESTRICTED = 1
#将deny的host或ip记录到work_dir中
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
#是否做域名反解
HOSTNAME_LOOKUP=YES
#将DenyHost启动的pid记录到LOCK_FILE中,已确保服务正确启动,防止同时启动多个服务
LOCK_FILE = /var/lock/subsys/denyhosts
############ THESE SETTINGS ARE OPTIONAL ############
#设置管理员邮件地址 例如****@163.com
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <nobody@localhost>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
AGE_RESET_VALID=5d
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
######### THESE SETTINGS ARE SPECIFIC TO DAEMON MODE ##########
#denyhost服务日志文件
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
#该项与PURGE_DENY 设置成一样,也是清除hosts.deniedssh 用户的时间
DAEMON_PURGE = 1h
启动命令
service denyhosts start 或 systemctl start denyhosts
service denyhosts stop 或 systemctl stop denyhosts
service denyhosts status 或 systemctl status denyhosts
# 加入自启动
chkconfig denyhosts on 或 systemctl enable denyhosts