Когда я начал знакомится с системным администрированием, я столкнулся с распространенной проблемой, когда большое количество зараженных или скомпрометированных компьютеров участников ботнета, пыталось получить доступ к моему серверу. Спустя какое то время у меня возник вопрос — как забанить много IP адресов при помощи файервола. Как защититься от брутфорса сервера ботнетом. Как предотвратить простейшие DDOS атаки на него.
Вводная часть
Изначально я решал эту проблему с помощью стандартного фаервола в Linux — iptables. Смотрел логи авторизации сервера и банил всех гадов, которые ломились по ssh.
Затем к фаерволу добавился fail2ban, который сам выявлял попытки брутфорса на 22 и другие порты и сам заносил IP адреса в iptables. Но ботов было очень много и постепенно правила фаера росли, что начало грузить нехило процессор.
Покурив гугл я узнал про ipset. Этакая надстройка к iptables. Хотя, скорее это не надстройка, ipset работает в паре с iptables. В результате такого союза процессор напрягается значительно меньше чем просто с iptables. Впоследствии я упростил задачу выявления и блокировки самих ботов.
КАК защитить СЕРВЕР от БОТОВ в майнкрафт! | анти-бот для сервера! / АТЕРНОС
Меняем порт SSH
Для начала нам понадобится сменить порт ssh. Зачем? Вы сразу обезвредите большую часть ботов, т.к. после попытки законнектится на стандартный порт они обломаются и скорее всего занесут вас в какой нибудь блэклист, мол, сюда больше не ходим.
Редактируем конфиг ssh сервера:
sudo nano /etc/ssh/sshd_config
В строчке Port меняем 22 на любой другой, например 1422 и сохраняемся.
Чтобы изменения вступили в силу перезапускаем SSH сервер:
sudo /etc/init.d/ssh restart
Теперь для того чтобы зайти на сервер по SSH нужно в команде дополнительно указывать ключ -p со значением измененного порта например:
В качестве бонуса порт ssh теперь не будет палиться при самом элементарном nmap yourserver.com
Установка fail2ban
Для большей уверенности было бы неплохо предотвращать любую попытку брутфорса. Тут нам поможет fail2ban
sudo apt-get install fail2ban
Теперь в конфиге /etc/fail2ban/jail.conf необходимо изменить пару правил на свое усмотрение:
ignoreip = 127.0.0.1 xxx.xxx.xxx.xxx (вместо xxx вписываем свой ip чтобы fail2ban не забанил нас после неправильно введенного пассворда)
bantime = 600 (время действия бана в секундах, можно указать -1 то есть навсегда)
maxretry = 3 (количество неправильных попыток, после которых сработает правило блокировки)
ищем строку [ssh] и сменим стандартный 22 порт на измененный нами 1422
Сохраняем и перезагружаем fail2ban
sudo /etc/init.d/fail2ban restart
Устанавливаем IPset
Переходим к установке виновника торжества. Рассмотрим установку ipset на Debian.
sudo apt-get install module-assistant xtables-addons-source
sudo module-assistant prepare
sudo module-assistant auto-install xtables-addons-source
sudo depmod -a
В самом начале мы будем соблюдать технику безопасности. Если по ошибке добавить свой ip в список правил блокировки, то мы не сможем зайти на собственный сервер. Поэтому сделаем запись в планировщике CRON, который будет удалять все правила каждые N минут. Для этого выполним
и добавляем туда
*/40 * * * * ipset -F
Такой манёвр будет обнулять правила каждые 40 минут. Поэтому даже если вы тренируясь, случайно добавите свой ip или ip сервера в блэклист, то все обнулится через 40 минут. Когда приноровитесь — конечно же отключайте данное правило иначе придется каждые 40 минут все повторять.
Теперь нам нужно создать 2 списка правил и подружить их с iptables:
ipset -N dropip iphash (данный список предназначен для блокировки одиночных IP плохишей)
ipset -N dropnet nethash (а в этом списке будем складывать подсети плохишей)
ipset -A dropip 46.32.74.8 (мы добавили данный ip в список для блокировки одиночных IP)
ipset -A dropnet 219.84.0.0/15 (мы добавили подсеть ip адресов c 219.84.0.0 по 219.85.255.255 в сумме 131,072 ip адресов)
В любой момент мы можем посмотреть все заблокированные ip командой ipset -L (если нужен только 1 список то после -L вписываем его название)
Подружим IPset с IPtables:
iptables -A INPUT -m set —match-set dropip src -j DROP
iptables -A INPUT -m set —match-set dropnet src -j DROP
-m set — используем модуль ipset
—match-set — dropip, dropnet задаем какой список будем использовать.
src — список сверяется с ip адресом источника
dst — список сверяется с ip адресом назначения
Сохранение правил
Важным шагом будет сохранение списка, иначе после ребута все правила пропадут.
создаём папку и фаил для сохранения правил:
sudo mkdir /etc/ipsetsave touch /etc/ipsetsave/ipset-save
sudo ipset -S > /etc/ipsetsave/ipset-save
Тоже самое делаем с iptables. Создаем фаил для сохранения правил:
sudo touch /etc/ipsetsave/iptables-save
sudo iptables-save > /etc/ipsetsave/iptables-save
Добавляем ipset и iptables в автозагрузку
sudo nano /etc/rc.local
и перед exit 0 вставляем
cat /etc/ipset/ipset-save | /usr/sbin/ipset -R
cat /etc/ipset/iptables-save | iptables-restore
Рассмотрим как заблокировать весь траффик из отдельной страны
Предположим нам нужно заблокировать весь траффик из Китая. Создаем правило и сразу дружим его с iptables
ipset -N chinasubnet nethash
iptables -A INPUT -m set —match-set chinasubnet src -j DROP
Скачиваем список всех подсетей китая в формате CIDR например отсюда и сохраняем в /home/china.txt
Выполняем в терминале:
for i in $( cat /home/china.txt ) ; do ipset -A chinasubnet $i ; done
И сохраняем новые правила
ipset -S > /etc/ipsetsave/ipset-save
Небольшое дополнение:
Вы наверное спросите, а как мне заблокировать эту подсеть? Или как подсчитать маску подсети? А ничего считать и не нужно, все уже за нас давным давно придумали. Заходим на сайт countryipblocks в поле вписываем неугодный IP и получаем информацию о подсети включая маску, которая нам нужна для списка dropnet.
Немного про dos и ddos
Теперь смоделируем ситуацию. Вы заходите на сервер и обнаруживаете подозрительную загруженность процессора, будем предполагать, что веб сервер вы более менее настроили. Скорее всего кто то решил побаловаться с F5, создавая большое количество воркеров веб сервера которые начинают отьедають драгоценную ОЗУ и Мегагерцы процессора. А может кто то решил уронить ваш сервер slowlories атакой на апач? К слову до сих пор не зашитой. Тогда вам вероятно пригодится такая вот команда, которая посчитает и выведет самое большое количество подключений с одного ip
sudo netstat -ntu | awk ‘
‘ | cut -d: -f1 | sort | uniq -c | sort -n
Еще бывает полезно посмотреть рефереров в аксесс логе. Например когда кто то натравил на ваш ресурс парсер контента в несколько сотен потоков с помощью прокси:
cat access.log | grep «GET» | awk -F ‘»‘ » | cut -d » » -f1 | grep -E ‘^[[:alnum:]]’ | sort | uniq -c | sort -rn
Находим вредителя и заносим его в бан навсегда. Автоматизировать процесс можно, но это тема отдельной статьи, если интересно более подробно можно почитать тут.
Источник: antoshabrain.blogspot.com
Ядро BotFilter — Защита сервера от ботов на BungeeCrod #177 (1.8-1.19.4)
- 1.8.+
- 1.9.+
- 1.10.+
- 1.11.+
- 1.12.+
- 1.13.+
- 1.14.+
- 1.15.+
- 1.16.+
- 1.17.+
- 1.18+
- 1.19.+
- BungeeCord
BotFilter — это защитный плагин против ботов для вашего сервера, он встроен в BungeeCord (плагин позволяющий соединять несколько серверов), плагин позволит достаточно эффективно проверять входящих игроков по нескольким параметрам, в том числе заставит их ввести капчу (код проверки с картинки).
Защита от ботов встроенная в BungeeCord
- Защита встроена в BungeeCord.
- Три типа проверки — Проверка на падения, проверка с помощью капчи, проверка с помощью капчи и падения.
- Минимальная нагрузка во время бот атаки!
- Более лучшая производительность и меньше потребления ОЗУ, чем у стандартной банджи.
- Есть возможность включить GeoIp во время бот атаки
- Автоматическое чистка игроков из датабазы если они не заходили очень долго
Автор mcdev Скачивания 46 Просмотры 134 Первый выпуск 5 Апр 2023 Обновление 5 Апр 2023 Оценка 0.00 звёзд 0 оценок
Источник: mcdev.su
ПЛАГИН НА ЗАЩИТУ ОТ БОТОВ | TrustAntiBots | БЕСПЛАТНО
Мы теперь в Discord Мы рады объявить, что теперь у нас есть сервер Discord. В честь этого мы проводим розыгрыш!
Теперь вы можете легко связаться с нами и другими участниками сообщества,
обмениваться идеями и получать обновления о нашей деятельности. Присоединиться
Мы рады сообщить вам о нашей весенней распродаже, которая уже началась!
Улучшайте свой сервер, только лучшими, качественными плагинами и приватными сборками.
Купон для самых быстрых на 20%, для улучшения вашего аккаунта. (Действие купона ограничено.)
Источник: mineleak.pro