预期目标:
通过配置或者服务实现防止sshd服务被暴力破解
实现方法:
1.更改默认端口
2.禁止root登录
3.禁止密码登录
4.采用fail2ban服务
5.采用denyhosts服务
6.采用双因子登录认证
7.采取强密码
配置步骤:
更改默认端口
vi /etc/ssh/sshd_config
PORT 22 #先保留22端口,成功后注释掉默认端口
PORT 6666 #添加自定义端口
systemctl restart sshd
禁止root登录
vi /etc/ssh/sshd_config
#PermitRootLogin yes 注释原有配置在下面新增
PermitRootLogin no
systemctl restart sshd
禁止密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no #禁止密码登录
PubkeyAuthentication yes #使用密钥登陆
RSAAuthentication yes
#公钥存放路径
AuthorizedKeysFile .ssh/authorized_keys
TIP:禁止密码登录前一定要先将公钥放入配置定义的路径,建议先前打开的会话窗口不要关闭,以防配置错误远程登陆失败
systemctl restart sshd
采用fail2ban服务
fail2ban部署以及使用请查看以下链接:
https://www.wakamizu.club/fail2ban/
采用denyhosts服务
下载服务包
cd /usr/local/src
git clone https://github.com/denyhosts/denyhosts.git
安装部署
cd denyhosts
python3 setup.py install
配置服务
vim /etc/denyhosts.conf
#日志文件
SECURE_LOG = /var/log/auth.log
#被禁止IP
HOSTS_DENY = /etc/hosts.deny
#恢复IP访问时间(w表示周,d表示天,h表示小时,m表示分钟)
PURGE_DENY = 4h
#禁止服务名称
BLOCK_SERVICE = sshd
#不存在的用户尝试次数,n次之后即被锁定
DENY_THRESHOLD_INVALID = 5
#存在的普通用户尝试次数,n次之后即被锁定
DENY_THRESHOLD_VALID = 10
#root用户尝试次数,n次之后即被锁定
DENY_THRESHOLD_ROOT = 1
#默认配置
DENY_THRESHOLD_RESTRICTED = 1
WORK_DIR = /var/lib/denyhosts
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
# 域名解析
HOSTNAME_LOOKUP=YES
LOCK_FILE = /var/lock/subsys/denyhosts
#邮箱通知配置
ADMIN_EMAIL = root
SMTP_HOST = localhost
SMTP_PORT = 25
SMTP_FROM = DenyHosts <[email protected]>
SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
# 存在的普通用户登录次数记录重置周期
AGE_RESET_VALID=5d
#root用户登录次数记录重置周期
AGE_RESET_ROOT=25d
#/etc/hosts.deny文件清除数据时间
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
DAEMON_LOG = /var/log/denyhosts
DAEMON_SLEEP = 30s
DAEMON_PURGE = 1h
启动
ln -s /usr/local/srcdenyhosts/daemon-control-diest /etc.init.d/denyhosts
chkconfig --add denyhosts
chkconfig denyhosts on
systemctl start denyhosts
黑白名单
/etc/hosts.allow
白名单cat /etc/hosts.deny
黑名单
采用双因子登录认证
双因子认证部署以及使用请查看以下链接:
https://www.wakamizu.club/ssh-2fa/
采取强密码
强密码应该具有如下特征:
强密码长度至少有 8 个字符,
不包含全部或部分用户帐户名,
至少包含以下四类字符中的三类:大写字母、小写字母、数字,以及键盘上的符号(如 !、@、#)。
字典中查不到。
不是命令名。
不是人名。
不是用户名。
不是计算机名。
没有规则的大小写字母、数字、符号的组合,部分登录系统支持全角符号以及中文、其他语言等特殊符号的输入。
不是容易被猜测到的密码(例如:[email protected] qazwsxedc iloveyou 这样的)。
定期更改。
与以前的密码明显不同。