libapache2-mod-qos – это один из модулей Apache для защиты от атак Slowloris (разновидность DoS атак).
QS_SrvMinDataRate – один из параметров мода libapache2-mod-qos. Он прописывался в файле /etc/apache2/mods-available/qos.conf и до недавнего времени прекрасно работал.
Если сейчас попробовать сделать то же самое, то нас ждёт неудача при попытке перезапуска Apache:
root@WebWare-Debian:~# service apache2 restart Job for apache2.service failed. See 'systemctl status apache2.service' and 'journalctl -xn' for details.
Хорошо, смотрим подробности:
root@WebWare-Debian:~# systemctl status apache2.service ● apache2.service - LSB: Apache2 web server Loaded: loaded (/etc/init.d/apache2) Active: failed (Result: exit-code) since Вс 2015-06-28 18:26:41 ICT; 2min 12s ago Process: 3494 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS) Process: 3519 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE) июн 28 18:26:41 WebWare-Debian apache2[3519]: Starting web server: apache2 failed! июн 28 18:26:41 WebWare-Debian apache2[3519]: The apache2 configtest failed. ... (warning). июн 28 18:26:41 WebWare-Debian apache2[3519]: Output of config test was: июн 28 18:26:41 WebWare-Debian apache2[3519]: AH00526: Syntax error on line 15 of /etc/apache2/mods-enabled/qos.conf: июн 28 18:26:41 WebWare-Debian apache2[3519]: Invalid command 'QS_SrvMinDataRate', perhaps misspelled or defined by a module not included in the server configuration июн 28 18:26:41 WebWare-Debian apache2[3519]: Action 'configtest' failed. июн 28 18:26:41 WebWare-Debian apache2[3519]: The Apache error log may have more information. июн 28 18:26:41 WebWare-Debian systemd[1]: apache2.service: control process exited, code=exited status=1 июн 28 18:26:41 WebWare-Debian systemd[1]: Failed to start LSB: Apache2 web server. июн 28 18:26:41 WebWare-Debian systemd[1]: Unit apache2.service entered failed state.
А также:
root@WebWare-Debian:~# journalctl -xn -- Logs begin at Вс 2015-06-28 11:52:12 ICT, end at Вс 2015-06-28 18:26:41 ICT. -- июн 28 18:26:41 WebWare-Debian apache2[3519]: Starting web server: apache2 failed! июн 28 18:26:41 WebWare-Debian apache2[3519]: The apache2 configtest failed. ... (warning). июн 28 18:26:41 WebWare-Debian apache2[3519]: Output of config test was: июн 28 18:26:41 WebWare-Debian apache2[3519]: AH00526: Syntax error on line 15 of /etc/apache2/mods-enabled/qos.conf: июн 28 18:26:41 WebWare-Debian apache2[3519]: Invalid command 'QS_SrvMinDataRate', perhaps misspelled or defined by a module not included in the server configuration июн 28 18:26:41 WebWare-Debian apache2[3519]: Action 'configtest' failed. июн 28 18:26:41 WebWare-Debian apache2[3519]: The Apache error log may have more information. июн 28 18:26:41 WebWare-Debian systemd[1]: apache2.service: control process exited, code=exited status=1 июн 28 18:26:41 WebWare-Debian systemd[1]: Failed to start LSB: Apache2 web server. -- Subject: Ошибка юнита apache2.service -- Defined-By: systemd -- Support: https://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Произошел сбой юнита apache2.service. -- -- Результат: failed. июн 28 18:26:41 WebWare-Debian systemd[1]: Unit apache2.service entered failed state.
Итак, синтаксическая ошибка в пятнадцатой строке файла /etc/apache2/mods-enabled/qos.conf, Apache не знает больше директиву QS_SrvMinDataRate.
Уже 20 марта 2015 года на дебиановском баг-трекере появилось сообщение о «баге» и с тех пор оно только обрастает подтверждениями https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780832.
В чейнджлоге mod_qos были найдены строки:
- Experimental: mod_qos compiles with Apache 2.4 * QS_SrvMinDataRate is not available (does not work, use mod_reqtimeout instead) * QS_Srv* directives shall not be used (connection cleanup takes very long)
Разберёмся сначала с первой: QS_SrvMinDataRate недоступен (не работает, используйте вместо него mod_reqtimeout.
Ну с этим всё просто:
a2enmod reqtimeout service apache2 restart
Для настройки mod_reqtimeout нужно редактировать файл /etc/apache2/mods-enabled/reqtimeout.conf
vim /etc/apache2/mods-enabled/reqtimeout.conf
Вопрос в следующей фразе: Директивы QS_Srv* не должны использоваться (очищение соединений проходит очень долго) — я до сих пор не понимаю, эта проблема уже была устранена в последующих версиях или нет? Подскажите, кто знает.