Авторизация

IT технологии

Бюджетный веб сервер на orange pi. Часть 4. Защищаем сервер от ботов и взломщиков

Все было замечательно, пока в один прекрастный день я не обнаружил притормаживание сервера. Списал это на подглючивание из-за экспериментов с настройками и тестированием различных CMS. Тупо сделал ребут и успокоился. Через пару дней тормоза вернулись с новой силой. Пробежав по процессам беглым взглядом заметил, что MySQL ест память. Опять все списал на глюки и уже стал задумываться о причинах и над стабильностью работы самого orange pi. Но я устал и очень хотелось спать, поэтому опять тупой ребут.

Но чуда не произошло и на следующий день все стало совсем печально. Делать нечего, надо разбираться. И полез изучать логи. Статистика посещений сайтов явно не клеилась с количеством открытых соединений, поэтому причину нашел быстро. Логи посещений были забиты практически одними и теми же ip долбящим по одним и тем же адресам. Лишь один пытался побороть капчу дабы наспамить в комментах. Остальные практически круглые сутки с упорством бились в админку явно перебирая пароли. Самое интересное, что память была занята лишь наполовину, а процессор и вовсе работал "на холостых оборотах". Видимо тормоза были из-за постоянного чтения/записи порожденных запросами MySQL. Думаю это были не волонтеры... Ну так и делать им у меня нечего. Но мое словестное указание направление движения они яво не услышали. Пошел расспрашивать умного гугля.

Гугл сказал, что у меня есть два пути. Первый прописывать блокировку по ip в файле htachess. Второй прописать блокировку в iptables. Первый путь у меня не заработал. Вроде как из-за связки apache с nginx надо настраивать конфиги nginx, а как я толком до конца и не понял. К тому же этот путь требует отдельно прописывать блокировку для каждого сайта отдельно, что для данной ситуации неудобно.

Второй путь как оказалось более правильны, простой и меньше кушает ресурсы. Вот о нем и поподробнее. Идем в лог посещений нашего сайта и смотрим какой ip часто повторяется, по какому адресу ходит и главное хорошенько проверяем чей это ip. Заблокировать боты яндекса или гугла, а так же свой ip будет плохой затеей. Выяснили проблемные адреса. Теперь идем а терминал и пишем:

sudo iptables -I INPUT -s XXX.XXX.XXX.XXX -j DROP

где XXX.XXX.XXX.XXX - наш адрес, доступ с которого надо заблокировать.

И так повтояем для всех адресов. Забили ip всех злодеев. Теперь можем вздохнуть. Больше эти горе-хакеры наш сайт не побеспокоят, сервер будет просто блокировать их входящие запросы.

Посмотреть список заблокированых ip можно так:

sudo iptables -L -v

Если мы все же ошибочно заблокировали не тот адрес, то удалить из списка можно так:

sudo iptables -D INPUT -s XXX.XXX.XXX.XXX -j DROP

Теперь вы сможете дать отпор мелким сетевым хулиганам и паразитным ботам.

И напоследок повторюсь - внимательно изучите хозяина ip. Им может оказаться хоть и не знакомый вам, но крайне полезный бот.

Комментарии   

0 # RE: Бюджетный веб сервер на orange pi. Часть 4. Защищаем сервер от ботов и взломщиковДмитрий 18.06.2016 17:21
Думаю над бы какой скрипт который банит если ктото спамит ..
то есть если запросов много допустем в течение 2-5 минут то сразу банит допустим на 24 часа или на пожизнено ...
так как один ип забанишь , не факт что второй и третий появится потом ...
Сообщить модератору
0 # RE: Бюджетный веб сервер на orange pi. Часть 4. Защищаем сервер от ботов и взломщиковadmin 04.07.2016 13:26
Это гораздо лучший вариант. Когда дойдут руки - настрою именно так и сделаю описание. Хотя читая логи заметил, что некоторые роботы делают 1-3 запроса в минуту, таких отсеить куда сложнее.
Сообщить модератору

You have no rights to post comments

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