Fail2ban을 사용하여 나쁜 봇 LieBaoFast, MQQBrowser 및 Mb2345Browser를 차단하는 방법

Modsecurity를 사용하여 LieBaoFast, MQQBrowser 및 Mb2345Browser 차단

Nginx에는 모듈 modsecurity가 있으며 차단 목록 사용자 에이전트에 LieBaoFast, MQQBrowser 및 Mb2345Browser를 추가하려고합니다.

그런 다음 다음과 같이 테스트합니다.

curl -A "Mozilla/5.0 (Linux; Android 7.0; FRD-AL00 Build/HUAWEIFRD-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043602 Safari/537.36 MicroMessenger/6.5.16.1120 NetType/WIFI Language/zh_CN" -I "https://serverdiary.com"

결과는 다음과 같습니다.

HTTP/2 403
 server: nginx
 date: Fri, 24 Jan 2020 13:21:18 GMT
 content-type: text/html
 content-length: 548
 vary: Accept-Encoding

그러나 Nginx 액세스 로그를 확인하면 여전히 액세스 할 수 있으며 여전히 200을 얻을 수 있습니다. Google 애널리틱스에 요청이 여전히 실시간으로 존재합니다.

결과가 403 또는 금지되어 있어도 modsecurity를 전달할 수 있는 이유를 알 수 없습니다.

Nginx 구성을 사용하여 LieBaoFast, MQQBrowser 및 Mb2345Browser 차단

두 번째 옵션은 Nginx 구성을 사용하여 해당 사용자 에이전트를 차단하는 것입니다.

Nginx if is Evil, Nginx 웹 사이트에서 If를 사용하지 않는 것이 좋습니다.

그러나 사용하고 싶다면 아래는 사용자 에이전트 LieBaoFast, MQQBrowser 및 Mb2345Browser를 차단하는 Nginx 구성입니다. 이것을 서버 블록에 넣으십시오.

if ($http_user_agent ~* (liebaofast|mqqbrowser|mb2345browser|zh-cn|zh_cn|micromessenger) ) {
    return 403;
}

또는 Nginx 맵을 사용하여 나쁜 봇을 차단할 수 있습니다

## Write your bad User agents want to block
map $http_user_agent $bad_bots {
        default           0;
        ~*scrapyproject   1;
        ~*nmap            1;
	~*sqlmap	  1;
	~*slowhttptest	  1;
	~*nikto		  1;
	~*magpie-crawler  1;
	~*python-requests 1;
	~*redback	  1;
        ~*liebaofast      1;
        ~*mqqbrowser      1;
        ~*micromessenger  1;
        ~*zh-cn           1;
        ~*zh_cn           1;
}
if ($bad_bots) {
    return 403;
}

위의 Nginx 구성은 최적이 아닙니다. 우리의 Nginx는 여전히 DDOS 요청을 받고 있으며, 이를 처리하고 요청을 거부하며, Nginx if가 권장되지 않는다는 것을 잊지 마십시오.

Fail2ban을 사용하여 LieBaoFast, MQQBrowser 및 Mb2345Browser 차단

최선의 선택은 File2ban을 사용하는 것입니다. 우리 nginx는이 중국 나쁜 봇으로부터 요청을받지 못했습니다.

# yum install epel-release
# yum install fail2ban fail2ban-systemd

/etc/fail2ban/filter.d/nginx-badbots.conf를 만들고 다음 구성을 붙여넣습니다.

[Definition]
mybadbots = Mb2345Browser|LieBaoFast|MQQBrowser|micromessenger|zh_CN|zh-CN|SeznamBot|trendictionbot|magpie-crawler
failregex  = ^<HOST> .*(GET|POST|HEAD).*(%(mybadbots)s).*$
ignoreregex =
datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}

/etc/fail2ban/jail.conf를 /etc/fail2ban/jail.local에 복사합니다.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

이 코드를 /etc/fail2ban/jail.local의 맨 아래에 추가하십시오.

#CUSTOM
#[DEFAULT]
# Ban hosts for one hour:
bantime = 3600

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[nginx-badbots]
enabled   = true
port      = http,https
filter    = nginx-badbots
logpath   = /var/log/nginx/*.access.log
findtime  = 43200
maxretry  = 1
bantime   = 86400
action 	  = iptables-multiport[name=BadBots, port="http,https"]

자동 시작 Fail2ban 활성화 및 서비스 시작

# systemctl enable fail2ban
# systemctl start fail2ban

로그온 /var/log/fail2ban.log 확인

# tail -f /var/log/fail2ban.log

Example output

2020-01-24 15:07:10,869 fail2ban.actions        [11121]: NOTICE  [nginx-badbots] Ban 27.209.165.186
2020-01-24 15:07:10,936 fail2ban.actions        [11121]: NOTICE  [nginx-badbots] Ban 60.168.87.136
2020-01-24 15:07:11,002 fail2ban.actions        [11121]: NOTICE  [nginx-badbots] Ban 27.38.49.133
2020-01-24 15:07:11,213 fail2ban.filter         [11121]: INFO    [nginx-badbots] Found 122.232.219.148 - 2020-01-24 15:07:11
2020-01-24 15:07:11,250 fail2ban.filter         [11121]: INFO    [nginx-badbots] Found 223.98.64.36 - 2020-01-24 15:07:11
2020-01-24 15:07:11,264 fail2ban.actions        [11121]: NOTICE  [nginx-badbots] Ban 122.232.219.148
2020-01-24 15:07:11,327 fail2ban.actions        [11121]: NOTICE  [nginx-badbots] Ban 223.98.64.36

다음 명령을 사용하여 Fail2ban에 의해 차단된 IP를 확인합니다.

# fail2ban-client status nginx-badbots

example output
Status for the jail: nginx-badbots
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     28146

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다