1.设置复杂密码
服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂密码 ,也可使用密码生成器自动生成复杂密码
2.设置密码策略
修改文件/etc/login.defs
PASS_MAX_DAYS 90 密码最长有效期
PASS_MIN_DAYS 10 密码修改之间最小的天数
PASS_MIN_LEN 8 密码长度
PASS_WARN_AGE 7 口令失效前多少天开始通知用户修改密码
3. 对密码强度进行设置
编辑文件/etc/pam.d/password-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= difok=1 minlen=8 ucredit=-1 lcredit=-1 dcredit=-1
difok= 定义新密码中必须要有几个字符和旧密码不同
minlen=新密码的最小长度
ucredit= 新密码中可以包含的大写字母的最大数目。-1 至少一个
lcredit=新密码中可以包含的小写字母的最大数
dcredit=定新密码中可以包含的数字的最大数目
注:这个密码强度的设定只对"普通用户"有限制作用,root用户无论修改自己的密码还是修改普通用户的时候,不符合强度设置依然可以设置成功
4.对用户的登录次数进行限制
编辑文件 /etc/pam.d/sshd
auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
pam_tally2 查看被锁定的用户
pam_tally2 --reset -u username 将被锁定的用户解锁
5. 进制root用户远程登录
禁止ROOT用户远程登录 。打开 /etc/ssh/sshd_config
#PermitRootLogin no
注:生效要重启sshd进程。
6. 更改ssh端口
vim /etc/ssh/sshd_config ,更改Port或追加Port
注:生效要重启sshd进程。
7. 使用ipset封IP---ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则
#apt-get install ipset
ipset默认可以存储65536个元素,使用maxelem指定数量
ipset create blacklist hash:net maxelem 1000000 #黑名单
ipset create whitelist hash:net maxelem 1000000 #白名单
//创建一条
ipset create blacklist hash:ip hashsize 4096 maxelem 1000000
在ipSet添加、删除IP
ipset add blacklist 10.10.10.xx //添加IP
ipset del blacklist 10.10.10.xx //删除IP
创建防火墙规则,在iptables添加一条记录:
iptables -A INPUT -m set --match-set blacklist src -j DROP
将ipset规则保存到文件中
ipset save blacklist -f blacklist.txt
ipset save whitelist -f whitelist.txt
删除ipset
ipset destroy blacklist
ipset destroy whitelist
导入ipset规则
ipset restore -f blacklist.txt
ipset restore -f whitelist.txt
8. fail2ban的使用-控制连接数
#apt-get install fail2ban
#systemctl start fail2ban
安装后,Fail2ban将立即开始工作,但仅适用于SSH和默认设置。现在添加我们需要的设置。整个配置在文件/etc/fail2ban/jail.conf中。我们以SSH为例,按需要更改SSH部分:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 3600
bantime = 86400
maxretry:在findtime参数指定的时间内最大错误连接数
findtime:日志文件中分析错误连接数的时间。以秒计算
bantime:阻塞时间(以秒为单位)
启动并启用Fail2ban服务
现在,在一小时内输入5个错误密码后,该地址将被封锁一天。您可以使用以下命令找到包含的保护列表:
fail2ban–client status
您可以使用以下命令查找每个服务的受阻止客户端的统计信息:
fail2ban–client status service_name