최근에 작은 Ubuntu 상자에 대한 SSH 액세스를 설정했으며 현재 로컬 네트워크와 오프사이트 모두에서 상자에 로그인할 수 있습니다.
현재 원격으로 연결된 사용자는 2명뿐이지만 /var/logs/auth.log를 확인하면 다음과 같이 로그인을 시도하는 임의의 사용자 이름/포트 조합이 많이 보입니다.
Failed password for invalid user buildbot from xxx.92.16.81 port 11934 ssh2
Received disconnect from xxx.92.16.81 port 11934:11: Bye Bye [preauth]
Disconnected from invalid user buildbot xxx.92.16.81 port 11934 [preauth]
Invalid user aimax from xxx.92.16.81 port 24768
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.92.16.81
sshd_config의 허용된 사용자 섹션에 두 명의 사용자만 있기 때문에 이것이 매우 위협적이라고 생각하지는 않지만, 내 열악한 서버가 이러한 수백 개의 사용자를 처리하는 동안 사람들이 실제로 로그인을 시도하는 것을 보는 것은 약간 실망스럽습니다. 사람들은 매일 긴장하고 있습니다.
특정 포트 22에 허용된 사용자에게 부적절한 SSH 요청을 무시하거나 삭제하도록 하는 방법(라우터/방화벽 또는 서버 자체(아마도 IP 테이블?)을 통해)이 있습니까?
일반적으로 집에 없을 때에도 로그인할 수 있으면서도 SSH를 최대한 안전하게 유지하려면 어떤 조치를 취해야 합니까?
편집: 생각한 대로 SSHD_config를 구성하지 않았고 AllowedUsers를 업데이트했습니다. 끔찍합니다.
답변1
포트 번호는 대상 포트(22)가 아닌 소스 포트입니다.
SSH 서버를 보호하려면 비밀번호 기반 인증을 비활성화해야 합니다. 키 기반 인증만 사용하고, 키가 충분히 길고 안전하게 보관되는지 확인하세요(개인 키를 공유하거나 공개하지 마세요).
IP 주소 등의 정보만 허용하는 방화벽 관련 기술은 공격률(서버 부하 감소)만 줄일 수 있습니다. 그러나 기본 방화벽이 있는지 확인해야 합니다(아마도 IP 주소를 제한하면 사용하기가 더 어려워질 수 있습니다. 내 장치 중 일부는 로컬 액세스로 제한되어 있지만). gufw(ufw용 그래픽 프런트엔드. 1년에 몇 번만 사용하는 명령에 대해서는 명령줄을 배울 필요가 없습니다)를 사용하세요.
답변2
Fail2ban을 설치해야 합니다. 설치하려면 이 DigitalOcean 가이드를 확인하세요.https://www.digitalocean.com/community/tutorials/how-to-protect-ssh-with-fail2ban-on-ubuntu-14-04
또는 방화벽을 사용하여 SSH를 통해 특정 IP 주소만 허용하세요. 우분투를 사용하는 경우 일반적으로 ufw를 설치하고 ufw allow from [YOUR IP ADDRESS] to any port 22
(ufw가 활성화되어 있는지 확인) 또는 Firewalld(Redhat 버전 배포판을 사용하는 경우)를 입력하면 됩니다.
답변3
두 명의 사용자가 작은 IP 주소 집합에서만 온다는 것을 알고 있는 경우 IP 테이블을 통해 해당 IP 주소 이외의 다른 곳에서 포트 22의 모든 연결을 차단할 수 있습니다. 들어오는 IP 주소의 범위를 줄일 수 없다면 로그인에 SSH 키를 사용하도록 강제하고 비밀번호 로그인 시도를 차단하는 것이 좋습니다.
답변4
다음을 수행할 수 있습니다.
- IPTABLES를 사용하여 포트 22에 대해 들어오는 모든 서브넷/IP 주소를 차단합니다(허용되는 주소 제외).
- 연결을 끊을 유휴 시간 설정
- SSHD conf 파일을 편집하여 Putty에서 직접 루트 로그인을 거부합니다.
- 로그인 실패에 대한 /var/log/secure 로그를 모니터링하고 수정 조치를 취하십시오.