• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Мануал IP Tables и Защита от DDoS

Deversant

Знаменитый
Участник
Сообщения
18
Розыгрыши
0
Репутация
4
Реакции
6
Баллы
1 285
Внимание: работа с IPT на удаленной машине весьма опасна, не заблокируйте себе доступ к серверу

Вариант №1: Запрет захода со сторонних стран

Создаем скрипт count.sh с содержанием :
#!/bin/bash
###Запрет захождение на сервер из определенных стран
### ISO="af cn al dz as ad ao ai aq ag am aw au at az kh cm cv cf cg co in it zm zw"
### переменные среды, установите ваши если пути у вас иные
### IPT=/sbin/iptables WGET=/usr/bin/wget EGREP=/bin/egrep
### Не советую редактировать. ZONEROOT: папка куда установится скрипт, если ее нет сам создаст
### SPAMLIST="countrydrop" ZONEROOT="/root/ddos" DLROOT=" " [ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT $IPT -N $SPAMLIST for c in $ISO do tDB=$ZONEROOT/$c.zone $WGET -O $tDB $DLROOT/$c.zone BADIPS=$(egrep -v "^#|^$" $tDB) for ipblock in $BADIPS do $IPT -A $SPAMLIST -s $ipblock -j DROP done done $IPT -I INPUT -j $SPAMLIST $IPT -I OUTPUT -j $SPAMLIST $IPT -I FORWARD -j $SPAMLIST exit 0 Обязательно настройте страны внутри скрипта!
Создаем папку /root/ddos
Вводим: chmod +x count.sh
Можем настроить страны для которых мы запрещаем соединение, они настраиваются в самом файле, открываем и редактируем.
Вводим: cd /root/ddos && ./count.sh
Запустили,скрипт внес изменения в IPtables
Большинстве случаев ддосят из азии, в основном китай там самые дешевые сервера для ботнета

Вариант №2: Настройка соединений

Так как на одного пользователя приходится - одно соединение с сервером, логично сделать ограничение.
Для этого воспользуемся "connlimit" модом.
Вводим: apt-get install user-mode-linux
Теперь с помощью этого мода ограничим кол-во соединений на порт логина
Вводим: iptables -A INPUT -p tcp --syn --dport 2106 -m connlimit --connlimit-above 20 -j REJECT
--connlimit-above 20 - означает, что на логин приходится постепенно 20 соединений и не более
На гейм-сервер думаю не актуально ставить такое ограничение, при досе свободные места забьются и никто не зайдет
А вот на порт mysql я бы советовал поставить
Вводим: iptables -A INPUT -p tcp --syn --dport 3306 -m connlimit --connlimit-above 30 -j REJECT

Вариант №3: Установка правил

Правил для IP Tables в интернете много, но не все вам нужны.
Эти правила адаптированы под Lineage II сервера.
#!/bin/sh
IPT=/sbin/iptables
UNIPORTS="1024:65535"
INET_IFACE="eth0"

$IPT -F
$IPT -X
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o eth0 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 2106 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 7777 -j ACCEPT
$IPT -A INPUT -p ICMP -i eth0 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65353 --sport 53 -j ACCE
PT
$IPT -A INPUT -p tcp -m tcp -m multiport -i $INET_IFACE --dport 1024:65535 -j AC
CEPT --sports 80,443 ! --syn
$IPT -A INPUT -p tcp -m tcp -i $INET_IFACE --dport 1024:65535 --sport 21 -j ACCE
PT ! --syn
$IPT -A INPUT -i eth0 -p tcp --dport 2106 -m state --state NEW -m connlimit --connlimit-above 20 -j REJECT
$IPT -P INPUT DROP


Внимание: скрипт работает только для подключения eth0

Установим эти правила
Создаем файл .sh
Пусть он будет расположен здесь: /root/server/ipt.sh
Заполняем его нашими правилами(см. выше)
Выдаем ему права на выполнение:
Вводим: cd /root/server
Вводим: chmod +x ipt.sh
И запускаем:
Вводим: sh ./ipt.sh
Все, ваш сервер полностью готов.
 
блин клас пасиба теперь меня никто не пробьёт!
 
Может быть кому то пригодиться
 
Бесполезная вещь, совершенно, это даже не защита от DDoS, эту настройку должен иметь каждый сервер в сети интернет.
Что мешает изменить на любой другой интерфейс, например на ens123 ?
INET_IFACE="eth0"
Внимание: скрипт работает только для подключения eth0

Правил для IP Tables в интернете много, но не все вам нужны.
Эти правила адаптированы под Lineage II сервера.
#!/bin/sh
IPT=/sbin/iptables
UNIPORTS="1024:65535"
INET_IFACE="eth0"



Лучше уже так тогда.
 
Последнее редактирование:
Можно конечно любой только нужно указать какое именно подключение имеется
 
Может быть кому то пригодиться
К сожалению, Вы опоздали с этим гайдом лет на 10-15.
Уже в году 2010 (а то и раньше) были скрипты из г*вна и палок для syn spoof флуда, от которых нельзя было задефаться просто настройкой правил iptables, а включение syn cookies приводило к 100% утилизации CPU.
У меня, к примеру, было такое:


В то время выдавало около 160kpps
 
мне кажется 10 правил в CHR от микротыка больше профита даст чем это)))

А вообще без понимания OSI можно даже не писать подобное в 2021, потому что если будет понимание руки до написания такого не потянутся
 
От
Если подтюнить немного, то от школьников с софтом вполне защитит
А от DDOS защиты нет вринципе (если не иметь ввиду услуг третих лиц).
 
this is for vps with proxy reverse tcp?