내 친구는 이전에 이 설정을 가지고 있었지만 다시 설치할 때 잃어버렸습니다.
기본적으로 일어나는 일은 누군가가곧장내 서버에 루트로 SSH를 연결하면 해당 IP가 차단되며 루트 권한을 얻으려면 사용자 정의 사용자 이름으로 로그인하고 "sudo"를 사용해야 합니다.
불행하게도 이 질문에 대한 일반적인 키워드를 검색하면 루트 로그인을 비활성화하는 방법만 알게 되었는데, 이는 정확히 내가 원하는 것이 아닙니다.
내 서버는 최신 Debian 버전에서 실행되고 있습니다.
답변1
SSHd는 IP 주소를 금지하지 않습니다. 인증 실패가 발생할 때마다 로그에 항목을 추가하고 실행을 계속합니다. 그러나 다른 소프트웨어는 사후에 이러한 로그를 읽고 규칙에 따라 IP를 금지할 수 있습니다. 이러한 작업에 사용되는 가장 일반적인 데몬은 Fail2ban입니다.
Fail2ban은 감옥에서 일합니다. 각 감옥은 서비스, 로그 파일과 연결되어 있으며 특정 규칙 집합을 따릅니다. IP가 감옥 규칙의 범위에 들어갈 때마다 일정 기간 동안 즉시 블랙리스트에 추가됩니다(감옥 규칙에도 지정됨). 다음은 SSH 서비스에 대한 Fail2ban 감옥의 예입니다( /etc/fail2ban/jail.conf
내 경우에는 설정됨).
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
이 규칙 덕분에,어떤 IP라도 10분 내에 3회 이상 로그인에 실패하면, failure2ban 데몬은 해당 IP를 iptables 체인에 추가합니다., 해당 IP에서 들어오는 모든 네트워크 패킷이 삭제됩니다.
이제 다음 감옥을 생각해보면…
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 1
findtime = 60
bantime = -1
...이 경우 인증에 실패한 모든 IP는 영구적으로 금지됩니다. 이용시 참고해주세요맞춤 필터, 루트 로그인만을 대상으로 하는 것이 전적으로 가능합니다.또한 루트 로그인은 기본적으로 비활성화되어 있다는 점을 기억하십시오. 누구도 루트 계정에 직접 연결해서는 안 됩니다.사용자 이름으로 로그인한 다음 sudo
필요할 때 이를 사용하는 것이 훨씬 더 안전합니다. 이렇게 하려면 침입자가 사용자 이름과 비밀번호를 찾아야 하며 루트 사용자 이름은 이미 잘 알려져 있습니다.
답변2
"/etc/ssh/sshd_config" 구성 문제인 것 같습니다. 다음 줄을 다음으로 변경하십시오.
PermitRootLogin no
도착하다
PermitRootLogin yes
SSH 서비스를 다시 시작하십시오.