Отправляем логи себе на почту

Решение опять же — изобретение велосипеда (а ля logwatch), себе — запомнить; другим — в копилку.

Итак сам скрипт :

#!/bin/bash
/bin/echo -e "Дата и время отчета : " `date +%d-%m-%Y` `date +%H:%M:%S`
delim="= ===============  = "
#текущая дата, для выборок из лог-файлов
curdate=`date | cut -d " " -f2`" "`date | cut -d " " -f3`
/bin/echo -e $delim "Компы не получившие адрес" $delim "\n"
#Смотрим есть ли компы, которые не получили адрес - будет строка DHCPOFFER
/bin/cat /var/log/dhcp3-server.log | grep -i "offer" | uniq -d | cut -d " " -f8
/bin/echo -e $delim "Лог подмены адресов АРП" $delim "\n"
/bin/cat /var/log/arpwatch.log
/bin/echo -e $delim "Лог биллинга" $delim "\n"
iconv -f cp1251 -t utf8 /var/log/stargazer.log
/bin/echo -e $delim "Свободная память" $delim "\n"
/usr/bin/free
/bin/echo -e $delim "Состояние системы" $delim "\n"
/usr/bin/top -b -n 1 | grep "load" -A 20
/bin/echo -e $delim "Упавшие хосты(свитчи/роутеры/прочее)" $delim "\n"
/bin/cat /install/pingg/log/dhost.log
/bin/echo -e $delim "Ошибки в syslog" $delim "\n"
/bin/cat /var/log/syslog | grep -i "error"
/bin/echo -e $delim "DHCP - сервера в сети" $delim "\n"
/bin/cat /install/dhcpdrop/logs/alert.log
/bin/echo -e $delim "Ошибки в daemon.log" $delim "\n"
/bin/cat /var/log/daemon.log | grep "$curdate" | grep -i "error"
/bin/echo -e $delim "Лог аутентификаций по SSH" $delim "\n"
/bin/cat /var/log/auth.log | grep "$curdate" | grep "sshd"

Дальше — нам нужно весь этот вывод отправить нам на почту. пишем в crontab всего 2 строчки:

30 */4 * * *    root    /install/minform/minform > /install/minform/minform.txt
35 */4 * * *    root    /bin/cat /install/minform/minform.txt | /usr/bin/mutt -s "Отчет системы за `date`" mail@mail.com

Вот собственно и весь скрипт.
Вопрос — а почему не воспользоваться уже готовым решением (logwatch) и изобретать велосипед ?
Ответ : есть свободное время, желание и собственные файлы вывода и формат вывода. Каждые 4 часа можно смотреть не сломалось ли там чего, пока мы отдыхаем на море :)

Опасная уязвимость для серверов с apache

Недавно наткнулся на статью про найденную уязвимость в веб-сервере apache.

Пять дней назад в листе рассылки Full Disclosure появился скрипт, по заявлению автора, убивающий Apache начиная от самых старых версий до самых новых.

Работает скрипт очень просто : запускает простой запрос в несколько десятков потоков.

HEAD / HTTP/1.1
Host: www.example.com
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,<...>,5-1299,5-1300
Accept-Encoding: gzip
Connection: close

В ответ на такой запрос Apache для подсчета Content-Length собирает в памяти длинный ответ из перекрывающихся кусков запрошенного файла, который может занять и занимает значительный объём памяти. При этом потребление памяти Apache начинает резко расти, как на том графике в начале, что при должном, совсем небольшом, количестве запросов приводит к DoS даже на приличных серверах.

Проверить, уязвим ли ваш сервер к этой атаке легко:

curl -I -H "Range: bytes=0-1,0-2" -s www.example.com/robots.txt | grep Partial

Если Вы увидели ответ :

206 Partial Content

То Ваш сервер 100% уязвим для такой атаки.

Что же делать и как поставить защиту ?

Самым простым способомбудет прописать для nginx запрет для проксирования пустых запросов :

proxy_set_header Range "";
proxy_set_header Request-Range "";

А вот если nginx у Вас нет, то рекомендую его установить. Или по сообщениям сайта  cybersecurity.ru :

Разработчики web-сервера Apache сообщают об исправлении опасной уязвимости CVE-2011-3192 , которая использовалась злоумышленниками для проведения атак на отказ в обслуживании web-серверов. Стоит отметить, что web-сервер Apache обеспечивает работу двух третей всех сайтов в мире.

Напомним, что опасная уязвимость была обнаружена независимыми специалистами в области информационной безопасности 20 августа. В тот же день в сети Интернет появился эксплоит, который позволял вывести из строя любой сайт, который использует Apache HTTP Server.

Уязвимость в Apache HTTP Server позволяла злоумышленникам аварийно завершать работу web-серверов, используя простую вредоносную программу. Ошибка заключалась в способе обработки большого количества Range запросов в HTTPD, что приводило к исчерпанию ресурсов удаленной системы. Ошибка была исправлена в новой версии Apache HTTP Server 2.2.20. Однако для того, чтобы предотвратить атаку, все администраторы сайтов, которые используют Apache HTTP Server, должны самостоятельно установить обновление.