Личный блог админаRSS стрічка
Автор блогу:
И снова DDoS атака...
0
Такс, ну начнем с того что же такое этот DDoS?
DDoS – это сокращение английского выражения Distributed Denial of Service, что переводится на русский язык как «Распределённый отказ от обслуживания». Это означает отказ от обслуживания сетевого ресурса в результате многочисленных распределенных (то есть происходящих с разных точек интернет-доступа) запросов. Отличие DoS-атаки (Denial of Service — «Отказ от обслуживания») от DDos состоит в том, что в этом случае перегрузка происходит в результате запросов с какого-либо определенного интернет-узла.
Схематически это так:

Вот так получается что тысячи зомби прут на ваш бедный сервер.

К делу. В нашем распоряжении есть сервер Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz 2666.444 Mhz X 4 и 8 гигов озу. Из ПО установлено Apache2, php, nginx, mysql и почтовый сервер.
Как надстройка над iptables трудиться скрипт csf я его описывал, так что на нем останавливаться не буду, скажу так он многие вещи помогает автоматизировать и управлять ими более быстро и проще.
Так перед моменты ядра:
Код PHP:
  1.  
  2. #!/bin/sh
  3. #Увеличиваем размер очереди полуоткрытых соединений (также полезно при SYN флуде)
  4. sysctl -w net.ipv4.tcp_max_syn_backlog="4096"
  5. sysctl -w net.ipv4.tcp_synack_retries=1
  6. #Изменяем время ожидания приема FIN до полного закрытия сокета:
  7. sysctl -w net.ipv4.tcp_fin_timeout=10
  8. #Практически отключаем TCP keepalive:
  9. sysctl -w net.ipv4.tcp_keepalive_time=1
  10. #Изменяем количество пакетов проверки keepalive, которые пошлет сервер прежде чем соединение будет закрыто:
  11. sysctl -w net.ipv4.tcp_keepalive_probes=1
  12.  
Для просто ты все на баше написано.

Дальше, считаем что в конфиге апача и nginx у Вас все прописано так что бы не завалить всю оперативку.

Моменты в nginx:
в секцию http
limit_req_zone $binary_remote_addr zone=one:16m rate=3r/s;
Это значит что лимитируем для зоны one 3 конекта в 1 сек.

Дальше в секцию server вирт хоста вписываем:
limit_req zone=one burst=3;
или ставим 1, вообщем это значит что законектится с лимитом в 3 подключения за 1 сек можно 3 раза, а дальше 503 ошибка. Что и пишется в лог access.

Вот дальше берем пишем такой скрипт на sh
Код PHP:
  1. #!/bin/bash
  2. cat /var/log/nginx/error.log\
  3. | egrep '(limiting requests|limiting connections)'\
  4. | awk -F'client: ' '{print $2}'\
  5. | awk -F', ' '{print $1}'\
  6. | sort -nr\
  7. | uniq -c\
  8. | awk '{if($1>5)print "csf -d "$2""}'\
  9. | sh
  10.  
  11. cat /var/log/nginx/access.log\
  12. | egrep '( 499 | 400 | 503 )'\
  13. | awk '{print $1}'\
  14. | sort -nr\
  15. | uniq -c\
  16. | awk '{if($1>5)print "csf -d "$2" "}'\
  17. | sh
  18.  
  19. cat /dev/null > /var/log/nginx/error.log
  20. cat /dev/null > /var/log/nginx/access.log
Скрипт частично взять с инета, частично изменен мной.

Он отпарсит негодников с логов и отошлет их в csf -d (DROP), прошлый парсер был не настолько гибок и долго работал, пока сформирует в файл список потом его пересортирует и скопирует в фф. А этот работает быстро.
Тем более csf не даст блокировать айпи которые уже есть в alow и повторяющиеся.

В результате мы получаем список заблокированных айпи.
Украшаем ssh
0
Работать в ssh мне приходиться очень часто. И как то захотелось как то приукраить. С одной стороны выделить цветами что бы было удобнее с другой стороны так симпотичнее.
Вообщем идем для раскраски root косоли в папку:
Код PHP:
  1. cd /root/
там есть файл:
Код PHP:
  1. .bashrc
в нем вбиваем новые строки:
Для root'а:
Код PHP:
  1. COLOR1="\[\033[1;31;40m\]" #красный
  2. COLOR2="\[\033[1;34;40m\]" #синий
  3. COLOR3="\[\033[1;37;40m\]" #белый
  4. PS1="$COLOR1\u@\h: $COLOR2\w \$ $COLOR3"
Результат синтаксис удобно подсвечен:
Whois И CSF
0
Обратился как то ко мне человек с просьбой решить проблему с phpbb3. Проблема заключалась в том что на форуме не работала система whois. Он будучи админом не мог глянуть данные об айпи. Ну первым делом в csf который стоял на сервере внес в белый список айпи тех whois серверов что мне он дал. Но дело в том что не помогло на мое удивление, он так и говорит мол ткнул на ссылку жду сек 30 и потом ошибка. Ну все верно т.е. скрипт пытаеться конектиться и не выходит и завершаеться по тайм ауту принудительно что возвращает ошибку.Вопрос почему он не может получить данные. Начал копать скрипты, оказалось что форум юзает системную тулзу whois на сервере она стояла, но вот беда, данные не выдавала даже из консоли, а вот когда csf выключить т.е. обнулить правила iptables все работало. Странно. Тогда покопавшить я вкурил что whois работает через свой порт 43, а в настройках csf такого порта небыло, т.е. он был закрыт принудительно. Потому идем в /etc/csf/csf.conf и там правим строки: TCP IN & TCP OUT
дописываем 43 порт. Делаем csf -r рестарт, и проверяем. Вуаля, все работает. Вот так вот
Обратился как то ко мне человек с просьбой решить проблему с phpbb3. Проблема заключалась в том что на форуме не работала система whois. Он будучи админом не мог глянуть данные об айпи. Ну первым делом в csf который стоял на сервере внес в белый список айпи тех whois серверов что мне он дал. Но дело в том что не помогло на мое удивление, он так и говорит мол ткнул на ссылку жду сек 30 и потом ошибка. Ну все верно т.е. скрипт пытаеться конектиться и не выходит и завершаеться по тайм ауту принудительно что возвращает ошибку.Вопрос почему он не может получить данные. Начал копать скрипты, оказалось что форум юзает системную тулзу whois на сервере она стояла, но вот беда, данные не выдавала даже из консоли, а вот когда csf выключить т.е. обнулить правила iptables все работало. Странно. Тогда покопавшить я вкурил что whois работает через свой порт 43, а в настройках csf такого порта небыло, т.е. он был закрыт принудительно. Потому идем в /etc/csf/csf.conf и там правим строки: TCP IN & TCP OUT

дописываем 43 порт. Делаем csf -r рестарт, и проверяем. Вуаля, все работает. Вот так вот
DoS атака и как ее зарубить
0
Вообщем уже 2 сутки пытаюстся школьники задосить сервер (DoS), абузу провайдерам кидать не стал, хотя по Ip четко определяется 2 провайдера. (Укр телеком). Вообщем мне в лом постоянно добавлять айпи в фаервол, поскольку это сидеть и постонянно смотреть за тем как он меняет их. Вообщем сидел я думал реашил пойти в конфиг /etc/nginx/nginx.conf для тех кто в такне, система используеться на сервере Debian 6, Apache2, nginx 1.0, php5.3
Вообщем идем в конфиг и вбиваем строки:
вверху в секцию http
Код PHP:
  1. limit_req_zone $binary_remote_addr zone=one:16m rate=8r/s;
и в секцию вирт хоста или сервера в целом, я просто внес в сервер в целом, поскольку вирт хостов на сервере 260 и вносить в каждый ломает, а атаку может делать на любой сайт.

Вообщем вписываем:
Код PHP:
  1. limit_req zone=one burst=15;
(или значение 6-8) но в данном случае достаточно и 15 что бы сервер вообще не ощущал что к ниму что то там стучат.
Установка Memcached на Debian
0
Memcached — это система, которая кеширует данные в оперативную память. Извлеч данные из ОЗУ гораздо быстрее чем из hdd. По этому ее применяют на многих веб серверах работающих под нагрузкой.
Как я уже говорил ранее, на один из серверов был установлен Debian 5, вот продолжаю его донастраивать. Сегодня буду устанавливать memcached.
Данное приложение присутствует в репозиториях. Устанавливаем:

Код PHP:
  1. apt-get install memcached php5-memcache
Для конфигурирования memcached нужно всего лишь поправить файл:

Код PHP:
  1. /etc/memcached.conf
Как бы и дефолтных настроек достаточно, но ради эксперемента позже буду крутить.
И перезапустить apache

Код PHP:
  1. :~# /etc/init.d/apache2 start
Меняем атрибуты файлов после проделок вирусов
0
Вообщем случилось так что после того как вирусом была побита система некоторые файлы стали с атрибутом скрытый, и сменить не представлялось возможным поскольку в свойствах галка где Скрытый была не доступна. Спасла командная строка где входи в нужную нам папку :
пуск-выполнить-cmd

Затем там пишем:
cd C:/temp
(переходим в папку temp на диске С)
и рекурсивно скидываем атрибуты:
attrib -r -s -h *.* /s /d

Все:)
mod_fcgid русская документация - директивы конфигурации
0
IdleTimeout n (300 seconds)

Интервал, через который FastCGI приложение будет прекращено при простое.

IdleScanInterval n (120 seconds)

Частота проверки интервала простоя FastCGI приложения.

BusyTimeout n (300 seconds)

FastCGI приложение будет прекращено в случае не ответа больше указанного количества времени.
421 DNS problem. Try again later
0
Сегодня написали мне  сообщение мол так и так почта вообще не отправляется на mail.ru. Стал я смотреть логи ексима.
Вообщем у меня сервер такой:
exim4+dovecot+postgrey+spamassasin+clamav
OS:Debian 6 + ISPmanager Pro
Ну и полез я в логи а там:

Код PHP:
  1. 2011-07-02 14:22:35 1QcxNd-0006Iy-Tk == login_clian@mail.ru R=dnslookup T=remote_smtp defer (-45): SMTP error from remote mail server after MAIL FROM:<"info@domain.com"@s1.server.net> SIZE=1747: host mxs.mail.ru [94.100.176.20]: 421 DNS problem. Try again later
Сразу напрягает 2 вещи: <"info@domain.com"@s1.server.net> - этот бред, и еще 421 DNS problem. Try again later хотя по первому и так ясно что не может отрезольвить такой ящик у меня на сервере.
Ну и начал смотреть. В конфиг эксима:
есть там такое:
Код PHP:
  1. тут begin acl
  2. acl_check_rcpt:
  3. accept hosts = net-lsearch;/etc/exim/whitelist
  4.  
  5. deny hosts = net-lsearch;/etc/exim/blacklist
  6. message = $host_data
  7.  
  8. deny message = Restricted characters in address
  9. domains = +local_domains
  10. local_parts = ^[.] : ^.*[@%!/|]
  11.  
  12. deny message = Restricted characters in address
  13. domains = !+local_domains
  14. local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
  15.  
  16. accept local_parts = postmaster
  17. verify = recipient
  18. domains = +local_domains
  19.  
  20. require verify = sender
  21.  
  22. accept hosts = +relay_from_hosts
  23. control = submission
  24.  
Вот в самом конце:
control = submission
коментируем
#control = submission
и рестартим exim4 и пробуем. ну вот терь все ок.
теперь у нас FROM:<"info@domain.com">
все

← Назад

Яндекс.Метрика