셸 스 크 립 트 로 ssh 와 vsftpd 폭력 해결 에 대한 상세 한 설명

스 크 립 트 요 구 는 다음 과 같 습 니 다.이 SHELL 스 크 립 트 는 crontab 계획 작업 에 놓 여 있 습 니 다.6 시간 마다(이 시간 은 실제 상황 에 따라 정의 합 니 다)/var/log/secure 스 크 립 트 를 읽 고 꺼 내 서 IP 를 악의 적 으로 추측 합 니 다.단위 시간 내(일주일)연결 수가 하나의 밸브 값 보다 높 으 면 100(이 밸브 값 도 실제 상황 에 따라 정의 할 수 있 습 니 다).이 밸브 값 보다 낮 으 면 이 IP 를 무시 합 니 다.
/var/log/secure 에서 인증 실패 정 보 는 다음 과 같 습 니 다.

Nov 28 10:18:08 centos2 sshd[7556]: Connection closed by 222.216.30.109
Nov 28 10:18:08 centos2 sshd[7557]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.216.30.109  user=root
Nov 28 10:18:09 centos2 sshd[7559]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=222.216.30.109  user=root
Nov 28 10:18:10 centos2 sshd[7551]: Failed password for root from 222.216.30.109 port 2391 ssh2
Nov 28 10:18:10 centos2 sshd[7552]: Connection closed by 222.216.30.109
Nov 28 10:18:10 centos2 sshd[7553]: Failed password for root from 222.216.30.109 port 2397 ssh2
Nov 28 10:18:10 centos2 sshd[7554]: Connection closed by 222.216.30.109
Nov 28 10:18:11 centos2 sshd[7557]: Failed password for root from 222.216.30.109 port 2401 ssh2
Nov 28 10:18:11 centos2 sshd[7558]: Connection closed by 222.216.30.109
Nov 28 10:18:11 centos2 sshd[7559]: Failed password for root from 222.216.30.109 port 2403 ssh2
Nov 28 10:18:11 centos2 sshd[7560]: Connection closed by 222.216.30.109
Nov 28 10:37:01 centos2 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Nov 28 10:37:01 centos2 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=hello rhost=centos1.cn7788.com
Nov 28 10:37:01 centos2 vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user hello
Nov 28 10:37:19 centos2 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Nov 28 10:37:19 centos2 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=yhc rhost=centos1.cn7788.com
Nov 28 10:37:19 centos2 vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user yhc
Nov 28 10:37:36 centos2 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Nov 28 10:37:36 centos2 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=yuhongchun rhost=centos1.cn7788.com
Nov 28 10:37:36 centos2 vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user yuhongchun
Nov 28 10:42:44 centos2 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Nov 28 10:42:44 centos2 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=yuhongchun rhost=114.112.169.70
Nov 28 10:42:44 centos2 vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user yuhongchun
Nov 28 10:42:56 centos2 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Nov 28 10:42:56 centos2 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=andrewyu rhost=114.112.169.70
Nov 28 10:42:56 centos2 vsftpd: pam_succeed_if(vsftpd:auth): error retrieving information about user andrewyu
우 리 는 다음 과 같이/var/log/secure 파일 폴 링 특징 을 관찰 합 니 다.
기본적으로 secure 파일 은 요일 을 폴 링 주기 로 합 니 다.안전 에 대한 요구 가 엄격 한 친구 가'하나 도 놓 치지 않 는 다'는 원칙 에 따라 위의 오래된 secure 악성 IP 를 캡 처 할 수 있 습 니 다.다음은 이러한 악성 IP 를 효율적으로 캡 처 할 방법 을 강구 해 야 합 니 다.원본 버 전의 SHELL 스 크 립 트 작성 법 을 참고 하면...보안 로그 의 검색 vsftpd 및 sshd 서비스의 IP 주 소 를 캡 처 하려 면 다음 명령 을 사용 할 수 있 습 니 다.명령 은 다음 과 같 습 니 다

[root@centos2 log]# ls -lsart secure.*
512 -rw------- 1 root root 516379 11-04 01:31 secure.4
660 -rw------- 1 root root 668192 11-11 00:05 secure.3
304 -rw------- 1 root root 306589 11-17 10:33 secure.2
484 -rw------- 1 root root 488620 11-25 02:33 secure.1
분명 한 것 은 vsftpd 가 실패 한 IP 값 을 찾 을 수 없습니다.sshd 로그 실패 정 보 는 vsftpd 로그 실패 정보 와 다 릅 니 다.저 는 몇 가지 awk 혼합 sed 방법 을 써 서 효율 을 테스트 했 습 니 다.awk 스 크 립 트 속도 가 가장 빠 른 것 같 습 니 다.여러분 도 몇 가 지 를 쓸 수 있 습 니 다.time 명령 으로 테스트 할 수 있 습 니 다.마지막 으로 코드 를 간소화 하고 전체 스 크 립 트 를 완 성 했 습 니 다.스 크 립 트 내용 은 다음 과 같 습 니 다.

cat /var/log/secure | awk '/Failed/{print $(NF-3)}'| sort| uniq -c| awk '{print $2"="$1;}'
스 크 립 트 가 한 동안 실 행 된 후에 우 리 는 이 스 크 립 트 와 관련 된 일부 파일 을 관찰 할 수 있 습 니 다.예 를 들 어/root/Black.txt,결 과 는 다음 과 같 습 니 다

#!/bin/bash
#Denyhosts For vsftpd and sshd
#2012-12-28
awk '{for(i=1;i<=NF;i++){if($i ~ /rhost/)print substr($i,7)}}' /var/log/secure  | sort | uniq  -c  >/root/black.txt
DEFINE="100"
for i in `cat  /root/black.txt`
do
        IP=`echo $i |awk  '{print $1}'`
        NUM=`echo $i|awk  '{print $2}'`
        if [ $NUM -gt $DEFINE ];
        then
         grep $IP /etc/hosts.deny > /dev/null
          if [ $? -gt 0 ];
          then
          echo "sshd:$IP" >>  /etc/hosts.deny
          echo "vsftpd:$IP" >> /etc/hosts.deny
          fi
        fi
done
/etc/hosts.deny 스 크 립 트 내용 은 다음 과 같 습 니 다.
마지막 으로,우 리 는 이 셸 스 크 립 트 를 crontab 에 넣 고 6 시간 간격 으로 한 번 씩 실행 합 니 다.명령 은 다음 과 같 습 니 다.

좋은 웹페이지 즐겨찾기