auth.log一天几十万行,绝大多数是同一件事:有人在猜密码。root、admin、test,用户名轮着试,来源遍布各个机房。改端口能少一些,因为自动化扫描大多只打22。但这不是防护,只是把噪音调小。真正的区别在于允不允许密码登录。允许,就一直有人试;不允许,试一万次也没用。这两个数字值得一起看:失败次数和成功次数。失败几十万、成功个位数,说明没人真正进来过。成功次数也在涨,性质就变了,那是有人在往里进。换个端口之后扫描量确实会掉一截,日志看着清爽不少。但登录方式没变,人还是那批人,只是暂时找不到门。
按来源IP排一遍,看是不是集中在少数几个网段,还是全球散着来。集中的话封段有效,散着就只能靠禁密码。还有一种是慢速的,一个IP一天试几十次,不触发任何阈值。这种靠封禁抓不到,只能从认证方式上堵。
lastb看失败的登录,last看成功的,两边对一遍才知道有没有被攻破。成功的记录里如果有陌生IP、陌生时间,就要当事故处理。查authorized_keys有没有多出来的公钥,查有没有新增的用户。还有一种更隐蔽的情况,改了authorized_keys又改回去,日志里看不出来。定期比对文件哈希比翻日志可靠。
要防住,先关密码登录,只留密钥。再禁root直登,用普通用户加sudo。最后才是fail2ban这类自动封禁。顺序反过来也有效果,但没有前两步,封禁只是跟扫描器赛跑。它们换IP比你封得快。
PasswordAuthentication设no,PubkeyAuthentication设yes,PermitRootLogin设prohibit-password,这三处要一起改。改完先别断开当前会话,另开一个窗口试能不能登进去,确认了再关。sshd改错配置,重启后所有人都进不去,这是最常见的自锁。三处之外还有个细节:密钥文件本身的权限。目录700、文件600,权限宽了sshd会直接拒绝使用。
22端口只放行自己的固定IP,这一层在云安全组里设,比任何软件层的封禁都直接。家里宽带会变,记得留一个备用入口。安全组改完立即生效,不用重启。改之前先确认自己当前的IP,别把自己挡在外面。
几十万行失败记录,一个月能吃掉几个G,日志本身也会占磁盘。这类日志要跟着切分一起管,别等撑满了才想起。日志按周切、留一个月就够。认证类的记录别删太早,真出事回溯要用。留得太短,出了问题连回溯的余地都没有。
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
