14 августа 2011 г.

#6986: А логи-то — вот они

#6986: А логи-то — вот они: "Пару лет назад, пока ещё не обзавелся собственным жильём, бомжевал по съёмным квартирам. Квартиры выбирал меблированные; из личных вещей был небольшой тюк одежды и пять коробок компьютерного барахла.

Очередной переезд. Бывший «элитный» райончик: в 70-х — 80-х здесь выдавали квартиры работникам партийной номенклатуры. Сегодня он населён оставшимися за бортом «бывшими», в основном на пенсии. Вносим моё барахло с коллегой в подъезд. На лавочке сидят несколько старушек и пристально нас рассматривают.

2 августа 2011 г.

Ограничение числа одновременных подключений с одного IP в Nginx

Используйте ngx_http_limit_zone_module следующим образом прописав директив limit_zone и limit_conn в конфигурационном файле nginx.conf
http {
....
    limit_zone one $binary_remote_addr 1m;
    limit_conn one 8;
...
}
Ограничили число подключений до 8 с одного IP-адреса и выделили под это кэш размером в 1 мб. В кеше размером 1 мегабайт может разместиться до 32000 состояний размером по 32 байта. Подробнее тут http://sysoev.ru/nginx/docs/http/ngx_http_limit_zone_module.html

Защита ssh и ftp от брутфорса (подбора паролей) с помощью iptables

Хорошая альтернатива использования различных приложений по типу denyhosts и Fail2Ban, это  Iptables, он хорошо справляется с защитой от брутфорса, только нужно, чтоб в ядре был подключен модуль recent (ipt_recent).
Однако iptables не спасает от подбора паролей, например на защищаемые apache`ем разделы или где проверка пароля осуществляется на PHP или PERL, но там можно использовать свои скрипты, либо настроить на сканирование соответствующих логов скрипт Fail2Ban.

Создаем цепочку для подсчета попыток соединений  
# iptables -N ssh_brute_check
Если за последние 10 минут (600 секунд) с одного адреса было 5 или более новых соединений — блокируем этот адрес
# iptables -A ssh_brute_check -m recent --update --seconds 600 --hitcount 5 -j DROP
В противном случае — разрешаем, и при этом заносим в список
# iptables -A ssh_brute_check -m recent --set -j ACCEPT
Все попытки открыть новое соединение по SSH направляем на проверку
# iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ssh_brute_check