Немного о защите от dos(ddos) атак
Сегодня я хотел бы описать установку модуля mod_evasive, для веб-сервера Апач. Чем же хорош этот модуль? Наверное все знают что такое dos (ddos) атака, а многие имели опыт с ней столкунуться. В настоящее время организовать такую атаку не составит больших денежных вливаний, а последствия могут быть ощутимые, например для интернет-магазина. Итак mod_evasive – это имодуль защиты от dos(ddos), брут форс атак. Но не стоит думать что это панацея, он справиться только с слабой dos(ddos) атакой, для чего то более сурьезного, необходимо принимать иные меры.
Устанавливать этот модуль я буду на ОС CentOS 5.5. Подразумевается что Апач, версии 2 у вас уже установлен.
1. Подключаем репозиторий Epel. Об этой операции можно прочесть здесь!
2. Устанавливаем модуль
# yum install mod_evasive
3. Редактируем конфигурационный файл Апача
# vi /etc/httpd/conf/httpd.conf
Добавляем следующии строки:
Защищаем Apache
Как известно, Apache, услужливо всем показывает ОС на которой установлен, свою версию, и версии установленных модулей. Одним словом – зачем нам это? А уж тем более не нужно это знать посторонним.
Итак скроем все данным. Отредактируем конфигурационный файл Apache.
CentOS/RHEL/Fedora
# vi /etc/httpd/conf/httpd.conf
Debian/Ubuntu
# vi /etc/apache2/conf.d/security
FreeBSD
# ee /usr/local/etc/apache22/httpd.conf
Находим следующии строки:
ServerTokens OS (или Full)
ServerSignature On
и изменим их на следующии:
ServerTokens Prod
ServerSignature Off
Проверить результат можно при помощи команды curl и указав имя вашего сайта:
# curl -I www.test.ru
Настройка Nginx в качестве frontend к Apache
И так в вкратце что такое nginx? nginx – быстрый и легкий, но очень мощный и эффективный web-сервер, созданный Игорем Сысоевым для использования на серверах компании Рамблер и любезно предоставленный им для использования open-source сообществом. Этот сервер может использоваться как самостоятельный HTTP-сервер или как reverse proxy (frontend) перед веб-сервером Apache или любым другим “тяжелым” веб сервером для снижения нагрузки на backend-сервере от большого количества одновременных HTTP-сессий. В основном nginx используют в связки frontend – backend с Apache, иными словами если идет запрос на получение статичного файла (изображение, CSS или JavaScript), то nginx самостоятельно обрабатывает этот запрос. Если же пользователь обращается к какому-либо скрипту, тогда nginx передает этот запрос на обслуживание к Apache.
На этом покончим с теорией (ее на просторах интернета предостаточно) и приступим к реализации связки nginx-Apache на ОС CentOS/RHEL. Read more
Ротация логов в Linux
Cегодня я хотел бы рассказать о ротации лог-файлов для веб-сервера Apache, либо любой другой службы которая создает логи и которые необходимо ротировать.
Начну с настройки на Линуксе, а именно на ОС Slackware (в RedHat и CentOS аналогично). Ротацию логов я буду осуществлять с помощью logrotate, конфигурационный файл которого расположен в:
# /etc/logrotate.conf
Итак открываем файл logrotate.conf любым редактором и вставляем следующие строки:
/var/log/apache/error_log (полный путь для лог-файла)
(в CentOS это /var/log/httpd/error_log)
{
rotate 5 (кол-во хранимых сжатых фрагментов)
size=10M (максимальный размер несжатого файла (в мегабайтах).
Пока размер текущего файла журнала не превысит данный порог,
файл не будет "ротирован")
missingok (отсутствие файла не является ошибкой)
nocopytruncate (не сбрасывать файл журнала после копирования)
nocreate (не создавать пустой журнал)
nodelaycompress (не откладывать сжатие файла на следующий цикл)
nomail (не отправлять содержимое удаляемых журналов по почте)
notifempty (не обрабатывать пустые файлы)
noolddir (держать все файлы в одном и том же каталоге)
compress (сжимать ротируемые фыйлы)
postrotate
/usr/bin/killall -HUP httpd
endscript (между postrotate и endscript расположены команды
интерпретатора исполняемые непосредственно после ротации.
В данном случае сюда помещена команда killall,
перезапускающая httpd-сервер.
Это необходимо для нормальной процедуры ротации лог-файлов)
}
/var/log/apache/access_log (полный путь для лог-файла)
(в CentOS это /var/log/httpd/access_log)
{
rotate 4
weekly (производить ротацию регулярно, раз в неделю)
missingok
nocopytruncate
nocreate
nodelaycompress
nomail
notifempty
noolddir
compress
postrotate
/usr/bin/killall -HUP httpd
endscript
}
Как вы можете видеть в блоке где происходит ротация error_log, момент ротации наступает по достижению размера в 5 Мегабайт. Напротив, в блоке access_log ротация будет происходить раз в неделю, либо если раз в месяц (вместо weekly, ставим – monthly).
Ротация файлов может происходить как вручную с помощью команды:
# /usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.conf
Либо с помощью планировщика заданий Cron:
* 22 * * * /usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.conf
На этом все, но продолжение как всегда следует…

