RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
фильтрацию url например по критерию POST index.php?action=login с пустым реферером можно реализовать так
set $add 1; location /index.php { limit_except GET POST { deny all; } set $ban ""; if ($http_referer = "" ) {set $ban $ban$add;} if ($request_method = POST ) {set $ban $ban$add;} if ($query_string = "action=login" ){set $ban $ban$add;} if ($ban = 111 ) { access_log /var/log/nginx/ban IP; return 404; } proxy_pass http://127.0.0.1:8000;#тут живёт апач }
ну и по крону уже раз в минуту добавлять в ipfw table новые ИП из лога 25Мбитный DDoS, преимущесвенно режущийся ipfw, остатки проходят на nginx, который по критерию обучает ipfw и остатки проксирует на апач - LA 0, сайт работает. Чуть более мощный сервер на гигабитном Realtek re и 100Мбит порту с поллингом загибался от pps где-то до 20Мбит
Будьте готовы, что при атаке в системе закончатся сокеты для соединиея nginx - backend. Так что я бы добавил
sysctl net.inet.tcp.msl=3000 - уменьшаем время TIMEWAIT sysctl net.inet.tcp.maxtcptw=40960 - ограничиваем количество TIMEWAIT сокетов sysctl net.inet.tcp.nolocaltimewait=1 - отключаем TIMEWAIT для локальных сокетов. sysctl net.inet.ip.portrange.first=1024 sysctl net.inet.ip.portrange.last=65535 sysctl net.inet.ip.portrange.randomized=0
Дальше резали на уровне pf - загружали в таблицу IP с которых приходило слишком много хитов. PF с таблицами работает очень быстро. Исходники парсера логов есть на http://www.comsys.com.ua/files
Категория: Безопасность | Добавил: oleg (10.01.2008) | Автор: Alex Vorona
Просмотров: 1803 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]