![我可以阻止来自外部网络的 root ssh 访问,但不能阻止来自本地 LAN 的访问吗](https://linux22.com/image/1102227/%E6%88%91%E5%8F%AF%E4%BB%A5%E9%98%BB%E6%AD%A2%E6%9D%A5%E8%87%AA%E5%A4%96%E9%83%A8%E7%BD%91%E7%BB%9C%E7%9A%84%20root%20ssh%20%E8%AE%BF%E9%97%AE%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E9%98%BB%E6%AD%A2%E6%9D%A5%E8%87%AA%E6%9C%AC%E5%9C%B0%20LAN%20%E7%9A%84%E8%AE%BF%E9%97%AE%E5%90%97.png)
操作系统:Ubuntu 14.04
我想从本地 ssh 以 root 身份登录,因为 backuppc 需要这样做。我想阻止以 root 身份登录的外部访问。
谢谢
答案1
您可以使用Match
中的块来执行此操作/etc/ssh/sshd_config
。首先,确保您有此行:
PermitRootLogin no
这将阻止 root 访问。然后,您可以使用以下命令允许本地网络访问:
## Permit local root login
Match Address 192.168.1.*,127.0.0.1
PermitRootLogin yes
这假设您的 LAN 提供的 IP 类似于192.168.1.N
,如果不是,请相应地进行更改。另外,我建议您将其添加到 的末尾,/etc/ssh/sshd_config
以确保它不会与其他指令冲突。完成此操作后,重新启动 ssh 服务 ( sudo service ssh restart
),您将能够仅从本地计算机以 root 身份进行 ssh。
答案2
使用这个简单的 iptables 规则,您可以阻止不是来自本地网络的主机,我的网络是 192.168.122.0,所以我的规则是:
iptables -A INPUT -i eth0 -p tcp --dport 22 ! -s 192.168.122.0/24 -j DROP
如果你只想阻止来自某个来源的特定用户
在你的 /etc/ssh/sshd_config 中
AllowUsers [email protected].*
答案3
在处理了很多此类问题之后,我发现,对于 IP6 接口,你可能需要添加 ::1 作为本地主机来源,甚至是你的“外部” IP 地址(如果你依赖于你的 /etc/hosts 配置)
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
## Permit local root login
Match Address ::1,127.0.0.1,178.56.xx.xx
PermitRootLogin yes
Match All