SSH 로그인 (RSA 키 페어)을 통해 특정 개인 IP 세트를 Linux 서버에 입력하는 방법은 무엇입니까?
/etc/ssh/sshd_config
SSH 로그인 (RSA 키 페어)을 통해 특정 개인 IP 세트를 Linux 서버에 입력하는 방법은 무엇입니까?
/etc/ssh/sshd_config
답변:
TCP 래퍼 를 구성 하거나 iptables를 사용하여 네트워크 트래픽 (방화벽)을 필터링 하여 연결할 수있는 호스트를 제한 할 수 있습니다 . 클라이언트 IP 주소에 따라 다른 인증 방법을 사용하려면 SSH 데몬을 대신 구성하십시오 (옵션 3).
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
삭제 규칙 전에 더 많은 규칙을 추가하여 더 많은 네트워크 / 호스트와 일치시킬 수 있습니다. 네트워크 나 호스트 주소가 많은 경우 ipset 모듈을 사용해야 합니다. 임의의 IP 주소 범위를 사용할 수있는 iprange 모듈 도 있습니다 .
iptables는 재부팅시 지속되지 않습니다. 부팅시 iptables를 복원 할 메커니즘을 구성해야합니다.
iptables
IPv4 트래픽에만 적용하십시오. ssh가 IPv6 주소를 청취하는 시스템은 필요한 구성으로 수행 할 수 있습니다 ip6tables
.
TCP 래퍼를 사용하여 연결할 수있는 호스트를 구성 할 수도 있습니다. TCP 래퍼를 사용하면 IP 주소 외에도 규칙에 호스트 이름을 사용할 수 있습니다.
기본적으로 모든 호스트를 거부하십시오.
/etc/hosts.deny
:
sshd : ALL
그런 다음 hosts.allow에 허용 된 호스트를 나열하십시오. 예를 들어 네트워크 192.168.0.0/24 및 localhost 를 허용합니다 .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
클라이언트 주소 / 호스트 이름에 따라 다른 인증 방법을 사용하도록 sshd_config에서 ssh 데몬을 구성 할 수 있습니다. 다른 호스트의 연결 만 차단하려면 iptables 또는 TCP 래퍼를 대신 사용해야합니다.
먼저 기본 인증 방법을 제거하십시오.
PasswordAuthentication no
PubkeyAuthentication no
그런 다음 Match Address
파일 끝에 원하는 인증 방법을 추가 하십시오. Match
파일의 끝에 배치 하는 것이 중요합니다. 파일 이후의 모든 구성 행은 다음 Match
행 까지 조건부 블록 안에 배치되기 때문 입니다. 예를 들면 다음과 같습니다.
Match Address 127.0.0.*
PubkeyAuthentication yes
다른 클라이언트는 여전히 연결할 수 있지만 사용 가능한 인증 방법이 없기 때문에 로그인이 실패합니다.
일치 인수 및 허용되는 조건부 구성 옵션은 sshd_config 매뉴얼 페이지에 설명되어 있습니다 . 일치 패턴은 ssh_config 매뉴얼 페이지에 설명되어 있습니다.
#ListenAddress ::
에 /etc/ssh/sshd_config
이러한 네트워크의에서 들어오는 허용하도록 SSH 서버를 말할 것이다. 그렇지 않으면 할 ListenAddress <ip address>
경우 <ip address>
그 NIC 포트의 허용 된하려는 것입니다. 내는 eth0
것입니다 192.168.3.4
, 따라서 ListenAddress 192.168.3.4
전용 네트워크 eth0를에 192.168.3.4 작업 SSH 결과; eth1 eth2 eth3이 거부되었습니다.
다음은 SSH 데몬이 이전 답변을 확장하기위한 추가 구성입니다.
파일에 AllowUsers
옵션을 사용하여 사용자 필터링을 추가 sshd_config
하십시오.
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
이를 통해 주소 및 otherid1 , 다른 위치의 otherid2 에서만 johndoe 및 admin2가 허용 됩니다 .192.168.1.*
ssh 키 또는 ca 기반 키를 .ssh/authorized_keys
주어진 사용자의 홈 디렉토리 파일에있는 주소 세트로 제한하십시오 .
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
이 예에서 사용자 별칭의 공개 키는 지정된 주소에서만 유효합니다.