SHELL 스 크 립 트 로 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 파일 폴 링 특징 을 관찰 합 니 다.
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
기본적으로/var/log/secure 파일 은 요일 을 폴 링 주기 로 합 니 다. 안전 에 대한 요구 가 엄격 한 친 구 는 '놓 치지 않 는 다' 는 원칙 에 따라 위의 오래된 secure 악성 IP 를 캡 처 하여/etc/hosts. deny 파일 에 던 질 수 있 습 니 다.다음은 이러한 악성 IP 를 효율적으로 캡 처 할 방법 을 강구 해 야 합 니 다. 원본 버 전의 SHELL 스 크 립 트 작성 법 을 참고 하면 secure 로그 의 수사 vsftpd 및 sshd 를 캡 처 해 야 합 니 다.
서비스의 IP 주 소 는 다음 과 같은 명령 을 사용 할 수 있 습 니 다. 명령 은 다음 과 같 습 니 다.
cat /var/log/secure | awk '/Failed/{print $(NF-3)}'| sort| uniq -c| awk '{print $2"="$1;}'
분명 한 것 은 vsftpd 가 실패 한 IP 값 을 찾 을 수 없습니다. sshd 로그 실패 정 보 는 vsftpd 로그 실패 정보 와 다 릅 니 다. 저 는 몇 가지 awk 혼합 sed 방법 을 써 서 효율 을 테스트 했 습 니 다. awk 스 크 립 트 속도 가 가장 빠 른 것 같 습 니 다. 여러분 도 몇 가 지 를 쓸 수 있 습 니 다. time 명령 으로 테스트 할 수 있 습 니 다.마지막 으로 코드 를 간소화 하여 전체 스 크 립 트, 발 을 완성 하 였 습 니 다.
본 내용 은 다음 과 같다.
#!/bin/bash
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"
cat /root/black.txt | while read LINE
do
NUM=`echo $LINE |awk '{print $1}'`
host=`echo $LINE |awk '{print $2}'`
if [ $NUM -gt $DEFINE ];
then
grep $host /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo "sshd:$host" >> /etc/hosts.deny
echo "vsftpd:$host" >> /etc/hosts.deny
fi
fi
done
스 크 립 트 가 한 동안 실 행 된 후에 우 리 는 이 스 크 립 트 와 관련 된 일부 파일 을 관찰 할 수 있 습 니 다. 예 를 들 어/root/black. txt, 결 과 는 다음 과 같 습 니 다.
cat /root/black.txt
2 113.17.144.156
4 114.112.51.208
4 114.112.69.170
169 118-163-227-50.hinet-ip.hinet.net
8 119.188.7.200
8 122.70.130.11
61 124.248.32.246
12 183.203.14.121
3 189.26.255.11
56 199.204.237.60
3 199.30.53.220
5 201.236.80.4
6 220.172.191.31
30 222.216.30.109
60 222.253.159.111
58 223.4.180.23
166 58.221.42.178
1 61.132.4.85
152 61.142.106.34
22 61.167.33.222
7 85.126.166.83
166 www.b-nets.com
/etc/hosts. deny 스 크 립 트 내용 은 다음 과 같 습 니 다.
sshd:124.248.32.246
vsftpd:124.248.32.246
sshd:199.204.237.60
vsftpd:199.204.237.60
sshd:222.253.159.111
vsftpd:222.253.159.111
sshd:223.4.180.23
vsftpd:223.4.180.23
sshd:58.221.42.178
vsftpd:58.221.42.178
sshd:61.142.106.34
vsftpd:61.142.106.34
sshd:118-163-227-50.hinet-ip.hinet.net
vsftpd:118-163-227-50.hinet-ip.hinet.net
sshd:www.b-nets.com
vsftpd:www.b-nets.com
마지막 으로, 우 리 는 이 셸 스 크 립 트 를 crontab 에 넣 고 6 시간 마다 한 번 씩 실행 합 니 다. 명령 은 다음 과 같 습 니 다.
* */6 * * * root /bin/bash /root/hostsdeny.sh >> /dev/null 2>&1
/var/log/secure 로 그 는 주 단위 로 문의 하기 때문에 이 스 크 립 트 의 실행 빈 도 는 스스로 설정 할 수 있 습 니 다. 서버 가 자주 검색 되 는 것 같 으 면 실행 빈도 간격 을 짧게 설정 할 수 있 고 반대로 길 게 설정 할 수 있 습 니 다.첨부: SSH 의 폭력 적 인 해 소 를 방지 하기 위해 서 라면 이 스 크 립 트 는 업데이트 할 필요 가 없습니다. 제 원래 의 SHELL 스 크 립 트 (즉, 원본 버 전) 를 받 아들 일 수 있 습 니 다. 이 업데이트 스 크 립 트 는 FTP 가 있 는 네트워크 기기 에 배치 하기에 적합 합 니 다. 현재 테스트 는 비교적 안정 적 이지 만 완벽 하지 않 은 부분 이 있 습 니 다. 여러분 의 편지 교 류 를 환영 합 니 다[email protected]).
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
✨〰️ ZI 〰️✨ Vim 구문❮ ZI ❯ 🧙♀️ Zsh를 위한 스위스 아미 나이프. 모든 것을 함께 붙일 수 있도록 설계되었습니다. zsh 유형의 파일에 있는 명령에 대한 Vim 구문 정의입니다. 📥 설치 Vim 플러그인으로 로드합니다. 예를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.