使用pam通过特定ip配置ssh访问

使用pam通过特定ip配置ssh访问

我目前正在尝试配置服务器,并且我希望允许 UID 为 6000-6500 的每个用户通过 ssh 进入我的服务器,前提是该 ssh 来自文件 /etc/remote-hosts 中存在的 IP。我已经有一种方法可以将我想要配置此条件的用户的用户名放在 WantUIDS 上。

目前我有以下内容sudo nano /etc/security/access.conf

# This line works just fine
+ : @g67 asist : ALL

# This line is commented because I don't know what this will do or if this will work.
# + : pam_listfile.so item=user file=/etc/wantedUIDS : pam_listfile.so item=ip file=/etc/remote-hosts

它是否正确?这行得通吗?我不知道我是否可以使用pam 文件语法在这个特定的文件中...

答案1

iptables只能跟踪链中的 UID 或 GID(按名称或数值)OUTPUT。因此它不会在INPUT链中工作(默认情况下)。为了实现这一点,我建议您创建一个用户组(employees例如)。然后将所有允许 SSH 访问的用户添加到该employees组中。

然后编辑/etc/sshd_config文件,如下所示:

AllowGroups employees

您可以在此配置文件中添加 IP 地址(白名单),但如果列表很长,它可能看起来很笨拙。而是iptables以自动化的方式使用。

接下来,跳到 iptables。假设您的 IP 白名单包含十 (10) 个地址(在此示例中我将使用虚拟专用 IP 地址):

$ cat whitelist.txt
10.0.0.0/24
10.2.1.3
192.168.10.0/24
192.168.22.25
172.16.4.1
172.17.80.0/26
192.168.80.4/30
10.10.10.0/26
192.168.1.1
172.20.20.4

我们可以使用简单的 bash 脚本将所有这些 IP 地址添加到 iptables

$ cat script.sh
#!/bin/bash
for i in $(cat whitelist.txt)
do 
iptables -I INPUT -s $i -p tcp -m tcp --dport 22 -j ACCEPT
done
iptables -I INPUT -p tcp -m tcp --dport 22 -j REJECT

这就是你所需要的。您现在可以测试功能。如果一切顺利,请考虑保存 iptables 规则。

相关内容