Получается, что каждую ночь около полуночи какой-то сервер из Китая пытается получить доступ к моему сайту drupal. Судя по журналам, он продолжает делать один и тот же запрос каждые 61 секунду (чтобы, вероятно, не быть отмеченным брандмауэром). Этот запрос является POST-запросом на странице регистрации пользователя и независимо от того, какой запрос, кажется, связывает процесс Apache, поэтому каждую минуту создается новый процесс Apache, пока на сервере не закончится память и он не переключится в кому. Я, конечно, заблокировал IP-адрес на брандмауэре, но я хочу разобраться, почему запрос блокирует Apache. Как лучше всего отладить это?
Взгляните на журнал статуса Apache:
Srv PID Acc M CPU SS Req Conn Child Slot Client VHost Request
0-0 7331 0/8/65 W 8.84 687 0 0.0 0.08 0.35 192.74.226.108 ---.org POST /user/register HTTP/1.1
1-0 6409 0/33/33 W 13.58 206 0 0.0 8.16 8.16 94.228.34.211 ---.org GET /clinic-design/forum/all/jweddingtonMD HTTP/1.1
2-0 6410 0/3/3 W 6.19 648 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
3-0 6411 0/27/27 W 6.83 254 0 0.0 0.11 0.11 157.55.34.25 --.org GET /chd/membership/individual-members HTTP/1.1
4-0 6412 0/25/25 W 13.34 201 0 0.0 0.17 0.17 192.74.226.108 --.org POST /user/register HTTP/1.1
5-0 6417 0/3/3 W 8.10 566 0 0.0 0.03 0.03 192.74.226.108 --.org POST /user/register HTTP/1.1
6-0 7531 0/0/19 W 6.05 323 0 0.0 0.00 0.06 192.74.226.108 --.org POST /user/register HTTP/1.1
7-0 6428 0/19/19 W 11.50 223 0 0.0 0.44 0.44 192.74.226.108 --.org POST /user/register HTTP/1.1
8-0 7447 0/6/13 W 1.98 444 0 0.0 0.04 0.04 192.74.226.108 --.org POST /user/register HTTP/1.1
9-0 6842 0/38/38 W 13.33 262 0 0.0 0.38 0.38 192.74.226.108 --.org POST /user/register HTTP/1.1
10-0 7499 0/0/14 W 0.00 405 0 0.0 0.00 0.05 192.74.226.108 --.org POST /user/register HTTP/1.1
11-0 6845 0/22/22 W 11.11 505 0 0.0 0.23 0.23 192.74.226.108 --.org POST /user/register HTTP/1.1
12-0 6953 1/64/64 W 14.08 930 0 0.0 0.83 0.83 192.74.226.108 --.org POST /user/register HTTP/1.1
13-0 6954 0/10/10 W 3.09 282 0 0.0 0.47 0.47 192.74.226.108 --.org POST /user/register HTTP/1.1
14-0 7502 0/0/74 W 0.00 384 0 0.0 0.00 0.98 192.74.226.108 --.org POST /user/register HTTP/1.1
15-0 7191 0/52/113 W 26.77 466 0 0.0 0.53 1.06 192.74.226.108 --.org POST /user/register HTTP/1.1
16-0 7010 0/77/77 W 11.89 869 0 0.0 0.58 0.58 192.74.226.108 --.org POST /user/register HTTP/1.1
17-0 7023 0/67/67 W 8.52 892 0 0.0 0.80 0.80 192.74.226.108 --.org POST /user/register HTTP/1.1
18-0 7358 0/0/37 W 7.63 809 0 0.0 0.00 0.56 192.74.226.108 --.org POST /user/register HTTP/1.1
19-0 7437 0/17/79 W 10.23 161 0 0.0 0.16 4.08 157.55.34.25 --.org GET /--/membership/individual-members HTTP/1.0
20-0 7100 0/74/74 W 6.51 831 0 0.0 0.79 0.79 192.74.226.108 --.org POST /user/register HTTP/1.1
21-0 7192 0/44/47 W 5.94 626 0 0.0 1.40 1.40 192.74.226.108 --.org POST /user/register HTTP/1.1
22-0 7126 0/37/37 W 10.65 770 0 0.0 3.15 3.15 192.74.226.108 --.org POST /user/register HTTP/1.1
23-0 7183 1/20/20 W 5.27 952 0 0.0 0.03 0.03 192.74.226.108 --.org POST /user/register HTTP/1.1
24-0 7503 0/4/34 W 3.14 206 0 0.0 0.00 0.20 66.249.73.106 --.org GET /--/membership/student-members?order=city&sort=desc&last_n
25-0 7193 0/35/35 W 14.07 748 0 0.0 1.04 1.04 192.74.226.108 --.org POST /user/register HTTP/1.1
26-0 7566 0/0/15 W 1.67 194 0 0.0 0.00 0.02 94.228.34.211 --.org GET /clinic-design/forum?page=0%2C5 HTTP/1.1
27-0 7400 0/18/19 W 8.04 527 0 0.0 0.08 0.08 192.74.226.108 --.org POST /user/register HTTP/1.1
28-0 7401 0/0/0 W 0.00 709 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
29-0 7402 0/2/2 W 0.00 588 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
30-0 7569 0/2/6 W 0.00 141 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
31-0 7465 0/5/6 W 3.15 345 0 0.0 0.05 0.05 192.74.226.108 --.org POST /user/register HTTP/1.1
32-0 7466 0/8/8 W 5.56 163 0 0.0 0.14 0.14 192.74.226.108 --.org POST /user/register HTTP/1.1
33-0 7574 0/2/2 W 0.02 123 0 0.0 0.00 0.00 46.227.71.215 --.org GET /aggregator/sources/1?page=1 HTTP/1.1
34-0 7577 0/7/7 W 2.10 41 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
35-0 7581 0/0/0 W 0.00 168 0 0.0 0.00 0.00 113.212.69.10 --.org GET /?q=user HTTP/1.1
36-0 7586 0/0/0 W 0.00 139 0 0.0 0.00 0.00 67.195.115.123 ---.org GET /--/conferences-events/calendar-events/environmental-stand
37-0 7587 0/0/0 W 0.00 138 0 0.0 0.00 0.00 146.251.88.193 --.org GET /edac HTTP/1.1
38-0 7616 0/0/0 W 0.00 135 0 0.0 0.00 0.00 67.227.237.76 --.org POST /sites/all/modules/civicrm/bin/civimail.cronjob.php HTTP/1
39-0 7617 0/1/1 W 0.00 102 0 0.0 0.01 0.01 192.74.226.108 --.org POST /user/register HTTP/1.1
40-0 7618 0/0/0 W 0.00 134 0 0.0 0.00 0.00 157.55.32.142 --.org GET /--/programs/awards-recognition/changemaker-award/2003-cha
41-0 7628 0/0/0 W 0.00 106 0 0.0 0.00 0.00 146.251.88.193 --.org GET /edac HTTP/1.1
42-0 7629 0/0/0 W 0.00 105 0 0.0 0.00 0.00 157.55.32.142 --.org GET /--/about/meet-team/ellen-taylor-aia-mba-edac HTTP/1.1
43-0 7641 0/5/5 _ 1.92 9 0 0.0 0.00 0.00 66.249.73.75 store.--.org GET /publications.html?SID=259b106f3c06e307ec810593e4b15edf&lim
44-0 7642 0/1/1 W 0.00 75 0 0.0 0.00 0.00 157.55.32.142 --.org GET /--/resources/webinars?page=1 HTTP/1.1
45-0 7644 0/0/0 W 0.00 80 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
46-0 7647 0/1/1 W 0.01 62 0 0.0 0.00 0.00 146.251.88.193 --.org GET /edac HTTP/1.1
47-0 7660 0/0/0 W 0.00 73 0 0.0 0.00 0.00 67.195.115.123 --.org GET /--/conferences-events/calendar-events/environmental-stand
48-0 7661 0/2/2 W 0.00 15 0 0.0 0.00 0.00 157.55.32.142 --.org GET /--/programs/awards-recognition/changemaker-award/2003-cha
49-0 7662 0/0/0 W 0.00 45 0 0.0 0.00 0.00 157.55.32.142 --.org GET /node/146/nurture-collegiate-healthcare-design-compet?page=
50-0 7663 0/0/0 W 0.00 53 0 0.0 0.00 0.00 67.195.115.123 --.org GET /--/conferences-events/calendar-events/environmental-stand
51-0 7667 0/0/0 W 0.00 32 0 0.0 0.00 0.00 67.195.115.123 --.org GET /--/conferences-events/calendar-events/environmental-stand
52-0 7669 0/0/0 W 0.00 26 0 0.0 0.00 0.00 66.249.73.106 --.org GET /clinic-design/design-process/pre-design/plan-program-d HTT
53-0 7670 0/0/0 W 0.00 25 0 0.0 0.00 0.00 199.21.99.99 --.org GET /resources/pubs/ HTTP/1.1
54-0 7671 0/0/0 W 0.00 19 0 0.0 0.00 0.00 192.74.226.108 --.org POST /user/register HTTP/1.1
55-0 7673 0/1/1 W 0.00 9 0 0.0 0.00 0.00 67.195.115.123 --.org GET /--/conferences-events/calendar-events/environmental-stand
56-0 7675 0/0/0 W 0.00 0 0 0.0 0.00 0.00 127.0.0.1 host.--.org GET /whm-server-status HTTP/1.1
Я видел таких же ботов, и я справился с этим, написав свой собственный fail2ban тюрьма для них.
Эта конфигурация настроена на блокировку на день после шести попыток в час. После того, как он проработал пару месяцев, он еще не заблокировал законную попытку регистрации. Однако он отправляет много писем, поэтому вы можете настроить это ...
Возможно, вам придется немного подправить регулярное выражение, если ваши файлы журналов каким-либо образом необычны (например, не в комбинированном стиле Apache).
/etc/fail2ban/jail.conf
частично содержит:
[drupal-user-register]
enabled = true
filter = drupal-user-register
action = iptables-multiport[name=DrupalRegBots, port="http,https"]
sendmail-buffered[name=DrupalRegBots, lines=5, dest=webmaster@example.com]
logpath = /var/log/nginx/example.com-access.log
/var/log/nginx/example.com-ssl-access.log
bantime = 86400
findtime = 3600
maxretry = 6
/etc/fail2ban/filter.d/drupal-user-register.conf
содержит:
# Fail2Ban configuration file
#
# Author: Michael Hampton
#
# $Revision$
#
[Definition]
# Option: failregex
# Notes.: regex to Drupal match user registration page attempts
# Values: TEXT
#
failregex = ^<HOST> .*(GET|POST) /user/register .*$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Измените страницу регистрации, чтобы выгрузить $ _POST в файл журнала. Тогда вы сможете увидеть, что они отправляют.
В W
состояние sending reply
. Очень легко заставить сервер Apache застрять в этом состоянии навсегда; просто не принимайте пакеты, которые он отправляет своевременно, и оставляйте окно приема до смешного маленьким.
Подумайте о том, чтобы запустить обратный прокси-сервер, такой как Varnish, впереди, чтобы что-то другое, кроме Apache, могло справиться с неприятным делом работы с реальными клиентами.