Ubuntu 12.04에서 호스트 설정 및 실행을 거부했습니다. 분명히 잘 작동하지만 너무 제한적입니다.
Host.allow에 미리 추가된 모든 IP 주소에서 로그인할 수 있습니다. 내 sshd_config는 비밀번호 로그인을 허용하지 않고 키 로그인만 허용합니다.
그러나 유효한 RSA 키(이미 알고 있는 IP 주소)를 사용하여 새 IP 주소에서 로그인하면 서버는 /var/log/auth.log에 다음 메시지를 표시합니다.
6월 23일 19:16:31 MyServerName sshd[5949]: 호스트 이름.comcast.net(XXX.XXX.XXX.XXX)의 연결이 거부되었습니다.
연결하기 위해 내가 해야 할 일은 /etc/hosts.allow에 새 IP 주소를 추가하는 것뿐이었습니다. 그게 다야. 그런 다음 로그인할 수 있습니다.
6월 23일 19:45:03 MyServerName sshd[6024]: XXX에서 사용자 이름 공개 키를 수락합니다.
기본 거부 호스트 구성 값을 변경하지 않았으며 잘 작동합니다. 단지 너무 엄격하다는 것뿐입니다.
(아니면 /etc/hosts.allow를 읽는 다른 것이 있습니까?)
서버에 이미 계정이 존재하는 모든 Linux 사용자가 서버를 미리 변경하지 않고(예: 호스트에 IP를 추가하는 등) 모든 IP 주소에서 로그인할 수 있도록 허용해야 합니다.
EvenBitTony는 거부 호스트가 이 동작을 허용해야 한다고 제안합니다. EightBitTony에 대한 응답으로 이 질문과 제목을 변경했습니다.
답변1
호스트 거부실패한 로그인만 차단합니다(미리 정의된 횟수 이후). 내가 아는 한, 사람들을 선제적으로 막지는 못한다.
답변2
낮은 수준(IP)의 액세스를 동시에 차단할 수 없으며 해당 차단을 무시하기 위해 더 높은 수준의 프로토콜(SSH)이 필요합니다. 단순히 차단의 경우 더 높은 수준에 도달할 수 없기 때문입니다.
일반 사용자 로그인을 호스트로 제한하고 어디에서나 한 명의 사용자만 로그인하도록 허용할 수 있습니다. 그러나 이는 역동적인 솔루션이 아닙니다.
또한 두 개의 인스턴스를 실행할 수도 있습니다 sshd
. 하나는 거부 호스트를 사용하고 다른 하나는 해당 사용자에게만 사용 가능합니다. 안타깝게도 구성에서 libwrap을 비활성화하는 것은 불가능해 보이므로 sshd
해당 옵션으로 컴파일하거나 가상 머신이나 컨테이너에서 두 번째 인스턴스를 실행해야 할 수도 있습니다.
답변3
문제를 발견한 것 같아요. 내 /etc/hosts.deny에는 다음 두 줄이 포함되어 있습니다.
ALL: PARANOID
sshd: ALL
이게 문제가 있는 것 같나요?
이것은 내 /etc/hosts.deny의 일부입니다:
# /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#
# Example: ALL: some.host.name, .some.domain
# ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# The PARANOID wildcard matches any host whose name does not match its
# address.
# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
ALL: PARANOID
sshd: ALL
ALL: 200.125.165.10
ALL: 203.144.65.53
ALL: 85.31.203.35
...