Ubuntu

使用 pam 通過特定 ip 配置 ssh 訪問

  • December 8, 2020

我目前正在嘗試配置伺服器,並且僅當 ssh 來自文件 /etc/remote-hosts 中存在的 IP 時,我才允許 UID 為 6000-6500 的每個使用者通過 ssh 進入我的伺服器。我已經有一種方法可以將希望配置此條件的使用者的使用者名放在wantedUIDS 上。

目前我有以下內容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 文件語法…

iptables``OUTPUT只能跟踪鏈中的 UID 或 GID(按名稱或數值) 。因此它不會在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 規則。

引用自:https://unix.stackexchange.com/questions/622922