pam을 사용하여 특정 IP를 통해 SSH 액세스 구성

pam을 사용하여 특정 IP를 통해 SSH 액세스 구성

현재 서버를 구성하려고 하는데 SSH가 /etc/remote-hosts 파일에 있는 IP에서 오는 경우 UID 6000-6500을 가진 모든 사용자가 내 서버에 SSH로 접속할 수 있도록 허용하고 싶습니다. 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 규칙을 저장하는 것을 고려해 보세요.

관련 정보