SSH 로그인(RSA 키 쌍)을 통해 특정 개인 IP 세트가 Linux 서버에 입력되도록 어떻게 허용합니까?
답변1
구성하여 연결할 수 있는 호스트를 제한할 수 있습니다.TCP 래퍼 또는 다음을 사용하여 네트워크 트래픽 필터링(방화벽)iptables. 클라이언트 IP 주소에 따라 다른 인증 방법을 사용하려면 대신 SSH 데몬을 구성하십시오(옵션 3).
옵션 1: IPTABLES를 사용한 필터링
Iptables 규칙은 처음 일치할 때까지 순서대로 평가됩니다.
예를 들어 192.168.0.0/24 네트워크의 트래픽을 허용하고 그렇지 않으면 포트 22로의 트래픽을 삭제합니다. DROP
iptables 기본 정책이 로 구성된 경우 규칙이 필요하지 않습니다 DROP
.
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
더 많은 네트워크/호스트와 일치하도록 삭제 규칙 앞에 더 많은 규칙을 추가할 수 있습니다. 네트워크나 호스트 주소가 많으면 다음을 사용해야 합니다.IP세트기준 치수. 도 있습니다아이레인지임의의 범위의 IP 주소를 사용할 수 있는 모듈입니다.
iptable은 재부팅 후에도 지속되지 않습니다. 부팅 시 iptables를 복원하려면 일부 메커니즘을 구성해야 합니다.
iptables
IPv4 트래픽에만 적용됩니다. IPv6 주소를 수신하는 SSH가 있는 시스템에서는 를 사용하여 필요한 구성을 수행할 수 있습니다 ip6tables
.
옵션 2: TCP 래퍼 사용
참고: tcpwrappers에 대한 지원이 제거되었으므로 이는 최신 배포판에서는 옵션이 아닐 수 있습니다.오픈SSH 6.7
TCP 래퍼를 사용하여 연결할 수 있는 호스트를 구성할 수도 있습니다. TCP 래퍼를 사용하면 IP 주소 외에도 규칙에 호스트 이름을 사용할 수도 있습니다.
기본적으로 모든 호스트를 거부합니다.
/etc/hosts.deny
:
sshd : ALL
그런 다음 Host.allow에 허용된 호스트를 나열하십시오. 예를 들어 네트워크를 허용하려면192.168.0.0/24그리고로컬호스트.
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
옵션 3: SSH 데몬 구성
클라이언트 주소/호스트 이름에 따라 다른 인증 방법을 사용하도록 sshd_config에서 ssh 데몬을 구성할 수 있습니다. 다른 호스트의 연결만 차단하려면 대신 iptables 또는 TCP 래퍼를 사용해야 합니다.
먼저 기본 인증 방법을 제거합니다.
PasswordAuthentication no
PubkeyAuthentication no
Match Address
그런 다음 파일 끝의 a 뒤에 원하는 인증 방법을 추가합니다 . Match
파일 끝 부분에 배치하는 것이 중요합니다. 왜냐하면 파일 뒤의 모든 구성 라인은 다음 Match
라인까지 조건부 블록 내에 배치되기 때문입니다. 예를 들어:
Match Address 127.0.0.*
PubkeyAuthentication yes
다른 클라이언트는 계속 연결할 수 있지만 사용 가능한 인증 방법이 없기 때문에 로그인이 실패합니다.
일치 인수 및 허용되는 조건부 구성 옵션은 다음에 설명되어 있습니다. sshd_config 매뉴얼 페이지. 일치 패턴은 다음에 문서화되어 있습니다.ssh_config 매뉴얼 페이지.
답변2
다음은 이전 답변을 확장하기 위한 SSH 데몬에 대한 몇 가지 추가 구성입니다.
파일
AllowUsers
에 옵션을 사용하여 사용자 필터링을 추가합니다 .sshd_config
AllowUsers [email protected].* [email protected].* otherid1 otherid2
이를 통해존 도우그리고관리자2
192.168.1.*
주소 에서만다른 ID1,다른 ID2어디에서나..ssh/authorized_keys
SSH 키 또는 CA 기반 키를 특정 사용자의 홈 디렉터리 파일 에 있는 주소 집합으로 제한합니다 .from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
이 예에서 사용자 별칭의 공개 키는 지정된 주소에서만 유효합니다.
답변3
UFW(Uncomplicated FireWall) 설치에 문제가 없다면:
sudo ufw allow from 192.168.1.0/24 to any port 22
편집하다: 이전에 언급한 것처럼 비밀번호를 편집하여 수행할 수 있는 대신 키를 사용하여 인증하는 것이 좋습니다./etc/ssh/sshd_config
:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
답변4
클라이언트 인증에 SSH CA를 사용하는 경우 source-address
인증서에 서명할 때 옵션을 지정할 수 있습니다.
ssh-keygen -s ca_privkey -O source-address=172.16.0.0/16 id_rsa.pub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
인증서는 주소를 id_rsa-cert.pub
통해서만 호스트에 로그인하는 데 사용할 수 있습니다 172.16.0.0/16
( 127.0.0.1
이를 지정하지 않은 경우에도 마찬가지입니다).
man 1 ssh-keygen
더 자세한 내용을 원한다면 좋은 문서입니다.