저는 네트워크 관리에 대해 매우 초보이기 때문에 아직 경험이 부족하다는 점을 양해해 주시기 바랍니다.
plesk 패널이 있는 Ubuntu 루트 서버가 있습니다.
어제 내 친구들과 나는 TS3의 음성 품질이 매우 나빠지는 것을 발견했습니다. 서버에 핑을 보냈는데 패킷 손실이 매우 컸습니다. 그 후 조금 구글링을 해보니 auth.log
. 다운받아서 조금 스크롤을 해보니 이런 내용이 있었습니다.
May 13 10:01:27 rs204941 sshd[9351]: input_userauth_request: invalid user student [preauth]
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): check pass; user unknown
May 13 10:01:27 rs204941 sshd[9351]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.220.198.102
May 13 10:01:29 rs204941 sshd[9351]: Failed password for invalid user student from 112.220.198.102 port 39806 ssh2
May 13 10:01:29 rs204941 sshd[9351]: Received disconnect from 112.220.198.102: 11: Bye Bye [preauth]
May 13 10:01:31 rs204941 sshd[9353]: Invalid user student from 112.220.198.102
누군가 SSH를 통해 여러 번 로그인을 시도한 것 같습니다. 조금 스크롤을 해보니 누군가가 다양한 사용자 이름을 사용하려고 시도하는 것을 확인했습니다.student, tech, psi, news,...
수백 개의 로그인이 파일에 표시되었습니다.
내 데이터 센터 웹사이트에서 트래픽 통계를 찾아봤습니다. 시간당 17MB에 불과했습니다. 저는 100Mbit Backbone을 가지고 있기 때문에 데이터 전송 자체에는 문제가 없는 것 같습니다.
지금은 어떤 식으로든 서버에 액세스할 수 없습니다.
내 질문은: 어떻게 다시 액세스할 수 있습니까? 이 공격을 억제하고 후속 공격을 방지할 수 있는 방법은 무엇입니까?
답변1
액세스 권한을 얻는 방법은 무엇입니까?
계정에 액세스할 수 없는 이유가 명확하지 않습니다.
컴퓨터가 공격을 받거나 부하가 높은 경우 액세스 제한(IP 제한) 또는 서버 오프라인 전환(인터넷 연결 끊기)에 대해 공급자에게 문의해야 합니다.
또한 공급자가 도움을 줄 수 있는 대역 외 액세스가 필요할 수도 있습니다.
누군가 귀하의 서버를 손상시킨 경우 백업에서 복원하거나 복구 이미지를 사용해야 할 수 있습니다.
서버, 특히 SSH에 대한 공격을 방지하는 방법
무차별 로그온을 방지하는 가장 좋은 방법은 무엇입니까?
애초에 그들이 당신의 컴퓨터에 접근하지 못하게 하세요! 무차별 대입 공격이 호스트에 도달하기 전이나 심지어 SSH 수준에서도 이를 막을 수 있는 방법은 많습니다.
그렇긴 하지만, fall2ban과 같은 것으로 운영 체제를 보호하는 것은 좋은 생각입니다.http://en.wikipedia.org/wiki/Fail2ban
Fail2ban은 DenyHosts와 유사합니다. 그러나 SSH에 초점을 맞춘 DenyHosts와는 달리, /etc/hosts.deny를 사용하여 IP 주소/호스트를 차단하는 대신 로그인 시도를 로그 파일에 기록하는 모든 서비스를 모니터링하도록 구성할 수 있습니다. , fall2ban은 Netfilter/iptables 및 TCP Wrappers /etc/hosts.deny를 사용할 수 있습니다.
무차별 로그인을 방지하기 위해 고려해야 할 중요한 보안 기술이 많이 있습니다.
SSH:
- 루트 로그인을 허용하지 않음
- SSH 비밀번호를 허용하지 않음(개인 키 인증 사용)
- 모든 인터페이스를 듣지 마세요
- 요청을 처리하는 인터페이스(예: eth0)와 다른 SSH용 네트워크 인터페이스(예: eth1)를 만듭니다.
- 일반적인 사용자 이름을 사용하지 마세요
- 허용 목록을 사용하고 SSH 액세스가 필요한 사용자만 허용
- 인터넷 액세스가 필요한 경우...제한된 IP 집합에 대한 액세스를 제한합니다. 하나의 고정 IP가 이상적이지만 xx0.0/16으로 잠그는 것이 0.0.0.0/0보다 낫습니다.
- 가능하다면 인터넷 액세스 없이 연결하는 방법을 찾으십시오. 그렇게 하면 SSH에 대한 모든 인터넷 트래픽을 거부할 수 있습니다(예: AWS를 사용하면 인터넷을 우회하는 직접 연결을 얻을 수 있으며 이를 Direct Connect라고 합니다).
- 무차별 대입 공격을 포착하려면 Fail2ban과 같은 소프트웨어를 사용하십시오.
- 특히 보안 및 SSH 패키지 등 OS가 항상 최신 상태인지 확인하세요.
애플리케이션:
- 애플리케이션, 특히 보안 패키지가 항상 최신 상태인지 확인하세요.
- 애플리케이션 '관리자' 페이지를 잠급니다. 위의 많은 조언은 애플리케이션의 관리 영역에도 적용됩니다.
- 웹 콘솔용 htpasswd와 같은 관리 영역을 비밀번호로 보호하면 기본 애플리케이션 취약점을 투사하고 추가 진입 장벽을 만듭니다.
- 파일 권한을 잠급니다. '업로드 폴더'는 모든 종류의 불쾌한 항목의 진입점이 되는 것으로 악명이 높습니다.
- 애플리케이션을 프라이빗 네트워크 뒤에 배치하고 프런트엔드 로드 밸런서와 점프박스만 노출하는 것을 고려하십시오(이는 VPC를 사용하는 AWS의 일반적인 설정입니다).
답변2
어떻게 이 공격을 억제하고 후속 공격을 방지할 수 있나요?
일반적으로 기본 SSH 포트를 22에서 1122와 같은 다른 포트로 변경합니다. 이렇게 하면 봇의 많은 자동 공격을 방지할 수 있지만 간단한 포트 스캔으로 이를 탐지할 수 있습니다. 그래도:
vi /etc/ssh/sshd_config
그리고 편집하다포트 22에게포트 1122, 그러나 이것만으로는 충분하지 않습니다.
무차별 대입에 대한 자동 IPTables 규칙
나는 사용한다log2iptables https://github.com/theMiddleBlue/log2iptables대신 Fail2ban은 정규식으로 모든 로그 파일을 구문 분석하고 iptables를 실행하는 간단한 Bash 스크립트이기 때문입니다. 예를 들어 5개의 일치 항목이 발생하면 log2iptables는 특정 IP 주소를 삭제합니다. Telegram API를 사용하고 그가 문제를 발견하면 내 휴대폰으로 메시지를 보낼 수 있다는 점이 멋지네요 :)
이것이 도움이 되기를 바랍니다!
답변3
나는 이것을 함께 모아 cronjob 등으로 15분마다 실행합니다.
for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
count1=`grep $z /etc/hosts.deny | wc -l`
count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
sudo cp /etc/hosts.deny.bak /etc/hosts.deny
sudo chmod 666 /etc/hosts.deny
if [ $current ] ; then
echo "sshd : $current , $z" >> /etc/hosts.deny
else
echo "sshd : $z" >> /etc/hosts.deny
fi
sudo chmod 644 /etc/hosts.deny
fi
done
답변4
이것은 SSH 공격에 대한 나의 대체 솔루션입니다. 아이디어는 사용하지 않을 경우 SSH 데몬을 계속 닫는 것입니다. 열린 포트가 없으며 공격이 없습니다. 시도해 볼 수 있습니다. 오픈 소스입니다 https://github.com/indy99/nnet_port_guard