阻止来自外部 LAN 的 SSH 访问

阻止来自外部 LAN 的 SSH 访问

我有一台 Ubuntu 服务器,它在 DMZ 中托管 Redmine 和 git 存储库。唯一具有 SSH 访问权限的用户是管理员。外部用户需要访问 Git 和 Redmine 的 Web 界面,但我希望 SSH 访问仅限于网络内部的连接(我们设置了 VPN,因此即使从外部,我也可以通过它 SSH 访问服务器)。

如何防止来自 LAN 外部的 SSH 访问,同时仍允许 Git 访问?

提前谢谢您!

R

答案1

OpenSSH(我假设你正在使用它)有一个AllowUsers选择

允许用户- 此关键字后面可以跟一串用户名模式,以空格分隔。如果指定,则仅允许与其中一个模式匹配的用户名登录。只有用户名才有效;数字用户 ID 不被识别。默认情况下,允许所有用户登录。如果模式采用 USER@HOST 形式,则分别检查 USER 和 HOST,将登录限制为特定主机的特定用户。允许/拒绝指令按以下顺序处理:DenyUsers、、、最后。AllowUsersDenyGroupsAllowGroups

编辑文件/etc/ssh/sshd_config文件,并将其添加到其底部:

AllowUsers git [email protected].* [email protected].* [email protected].* [email protected].*

如果这不起作用(这种方法实际上可能更干净)您可以使用Match选项和...一起AllowUsers

# This is the default setting (only allow GIT access)
AllowUsers git 

# This is the setting that is ONLY available if you are SSHing from the LAN (allow the listed users)
Match Address 192.168.0.*
    AllowUsers git adam bob cliff dave

答案2

你可以使用你的系统 iptables。这三行代码就能产生神奇的效果

# iptables -A INPUT -p tcp --dport 22 -s 192.168.0.0/24 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -s 127.0.0.0/8 -j ACCEPT
# iptables -A INPUT -p tcp --dport 22 -j DROP

也许您确实需要调整诸如 Lan IP 地址之类的参数。

如果你的 vpn 用户被路由到例如 192.169.8.0/24 你必须调整它并添加

# iptables -A INPUT -p tcp --dport 22 -s 192.168.8.0/24 -j ACCEPT

在添加 drop 行之前,因为如果不这样做,则只有当所有者拥有 192.168.0.0/24 或本地主机地址时,才会接受端口 22 上的包。

相关内容