海滨擎蟹

linux 限制(禁止) IP 通过 ssh 远程登录

这两天远程登录客户服务器,登录成功后,突然看到提示的信息有点不对。有很多失败的远程登录请求,且次数达到了3万多。感觉像是在被强行登录攻击。虽然这些请求都没有成功,但谁知道它什么时候就能强行破解密码进入呢。这时要么设置一个极其复杂的登录密码,要么就是限制这些IP远程登录。

Last failed login: Mon Dec 17 14:51:13 CST 2018 from 222.90.204.67 on ssh:notty
There were 31710 failed login attempts since the last successful login.
Last login: Mon Oct 15 15:20:23 2018 from 49.75.84.62

密码已经是随机生成的了,不存在什么问题,那么主要的工作就是拒绝这些ip远程登录了。

/var/log/wtmp日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,可以查看这个文件检查是否有可疑登录。

last -f /var/log/wtmp

/var/log/secure日志文件记录与安全相关的信息,包括系统登录,可以查看到所有的登录请求信息。可以通过这个文件筛选出一些请求频次较高的ip(怎么筛选?手动。。)。

tail -f /var/log/secure

以下是IP登录限制部分,主要通过设置hosts请求白名单和黑名单来实现:

1.白名单形式

要求: 只允许 192.168.0.1192.168.0.10 登陆 其他全部禁止

实现:
(1) vim /etc/hosts.allow //增加如下内容

sshd: 192.168.0.1, 192.168.0.10

或者设置一个网段:

//允许1.0和0.0网段内的所有用户登录
sshd:192.168.1.,192.168.0.:allow

(2)vim /etc/hosts.deny //增加如下内容

sshd: ALL

2.黑名单形式

要求: 只限制192.168.0.1登陆上来,其他全部放行

实现:
vim /etc/hosts.deny //增加如下内容

sshd: 192.168.0.1

保存配置文件后就成功了。

多个ip或网段之间用英文逗号,分隔

我们可以这样理解这两个文件工作原理: 当客户端的IP登陆服务器的时候,先去匹配hosts.allow, 如果这里面有这个IP,则直接放行,如果没有这个IP,则看hosts.deny, 如果这里面有该IP(ALL包括一切IP)则拒绝,如果deny中也没有匹配,则也会放行。也就是说,如果这两个文件中都没有限定的IP,则会放行!

3.特殊:如果两个文件中都是 :sshd: ALL 会出现什么情况?

由于先去匹配hosts.allow,所以全部允许。

针对root:

(1)让root账户不能使用密码只能使用密钥远程登陆:
打开sshd配置文件
vim /etc/ssh/sshd_config 在最后面增加一行 :

PermitRootLogin without-password

保存配置文件后重启sshd服务 service sshd restart

(2)不允许root账户远程登陆,而普通账户可以:
有时为了特殊需求,只允许普通账户登陆Linux,而不允许root账户登陆,而普通账户登陆后,然后再su 到root下是可以的。打开sshd的配置文件
vim /etc/ssh/sshd_config 加入一行

PermitRootLogin no

重启sshd服务: service sshd restart

转自【Coohx - linux限制IP远程登录】

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »