macOS에서 선택된 IP에 대한 ssh 액세스 제한 선택된 IP로 제한하고 싶습니다. 다음 파일을

macOS 10.12의 ssh 액세스를 로컬 네트워크의 선택된 IP로 제한하고 싶습니다. 다음 파일을 작성해 보았습니다.

# /etc/hosts.allow
sshd: 192.168.1.32
sshd: 192.168.1.33

# /etc/hosts.deny
sshd: ALL

그런 다음 다음을 사용하여 다시 시작하십시오.

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

언로드가 ssh.plist성공적으로 ssh를 비활성화했지만 다시로드 한 후에도 여전히 모든 IP에서 연결할 수 있습니다.

IP 화이트리스트를 구성하려면 어떻게해야합니까?



답변

hosts.allow 및 hosts.deny는 TCP 래퍼를 통해 서비스 (sshd)를 실행할 때만 사용됩니다. 기본 macOS 설치는 그렇게하지 않으므로 아무런 영향을 미치지 않습니다.

다른 답변에서 권장하는 것처럼 방화벽을 사용하여 SSH에 대한 액세스를 제한 할 수 있습니다. 하드웨어 (예 : “외부”) 방화벽 또는 내장 된 pf 방화벽과 같은 소프트웨어 방화벽 일 수 있습니다.

그러나 방화벽 만 사용하지 않는 것이 좋습니다. 최선의 방법은 sshd 서비스 자체를 제한하는 것입니다. 원하는 경우 방화벽 보호 기능을 추가 할 수 있습니다. 그 이유는 어떤 이유로 든 방화벽이 비활성화되면 외부 사용자가 갑자기 sshd와 통신하기 위해 액세스 할 수 있다는 것입니다. 실제로 원하지 않습니다.

액세스를 제한하도록 sshd를 구성하려면 / etc / ssh / sshd_config 파일을 편집하고 다음을 추가해야합니다.

AllowUsers username@192.168.1.32 username@192.168.1.33

“username”을 실제 사용자 이름으로 바꿉니다.

원하는 경우 부품을 *로 바꾸어 와일드 카드를 표시 할 수 있습니다 (예 : username@192.168.1.*또는) *@192.168.1.32. sshd_config 매뉴얼 페이지에서 옵션에 대한 자세한 내용을 읽을 수 있습니다.


답변

hosts.allow그리고 hosts.deny더 이상 사용되지 않으며 당신은 (방화벽을 사용한다 pf) 대신.

의 기본 규칙은 pf에서 찾을 수 있습니다 /etc/pf.conf. 이 파일 디렉토리를 편집하거나 사용자 정의 규칙 세트를 작성할 수 있지만 기본 파일의 컨텐츠를 여기에 복사하십시오. 다음 두 줄을 추가하십시오.

# The name of the network interface as shown in ifconfig
ext_if="en0"

tcp_services = "{ssh}"
icmp_types = "{echoreq, unreach}"
trusted = "{192.168.1.32, 192.168.1.33}"

# Exempt the loopback interface to prevent services that use if from being blocked
set skip on lo0

# This is a desktop so we have to be permissive in allowing outgoing  connections
pass out quick modulate state


# Block all incoming SSH Traffic by default 
  block in on $ext_if inet proto tcp from any to any port $tcp_services

# Allow SSH traffic from trusted IPs
pass in on $ext_if inet proto tcp from $trusted to any port $tcp_services

다음 pf명령으로 활성화 하십시오

$ sudo pfctl -e                                 #if using the default /etc/pf.conf
$ sudo pfctl -e -f /path/to/custom_pf.conf      #if using a custom pf.conf

이 규칙 세트는 기본적으로 정의 된 신뢰할 수있는 IP를 제외한 모든 SSH를 차단합니다. 다른 모든 서비스에는 영향을 미치지 않습니다.


답변