DDOS, UDP-flood (базовая защита iptables)

Сообщения
401
Реакции
113
Помог
2 раз(а)
Отключаем ufw: sudo ufw disable

Устанавливаем сохранение правил iptables: sudo apt-get install iptables-persistent

Открываем файл: sudo nano /etc/iptables/rules.v4 и копируем туда это содержимое:

Код:
# Generated by xtables-save v1.8.2 on Wed Mar 22 04:26:21 2023
*filter
:INPUT DROP [29642:1924036]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [476991:74006316]
:udp-flood - [0:0]
:port-scanning - [0:0]

# ALLOW LOOPBACK TRAFFIC
-A INPUT -i lo -j ACCEPT

# DROP PEDIKS
#-A INPUT -s x.x.x.x -j DROP
#-A INPUT -s x.x.x.0/22 -j DROP

# ALLOW DNS-ANSWER
-A INPUT -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# ALLOW SSH WITH RATE-LIMIT 10/MIN
-A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set
-A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 10 -j DROP
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT


# ALLOW FTP
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

# ALLOW HTTP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

# ALLOW MYSQL
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

# ALLOW TRUST IP
# -------------------- MONITORING_CS --------------------------
# XXX.RU
#-A INPUT -s x.x.x.x -p udp -m udp --dport 27015 -j ACCEPT
# -------------------- MONITORING_CS --------------------------
# NEXT THERE...
# -------------------- MONITORING_CS --------------------------

# UDP-FLOOD (DDOS#1) RATE-LIMIT
# THIS ROW ENABLE ONLY ANDER HARD DDOS
#-A INPUT -p udp -m udp --dport 27015 -m length --length 53 -j udp-flood
-A INPUT  -p udp -m udp --dport 27015 -m length --length 37 -j udp-flood
-A INPUT -p udp -m udp --dport 27015 -m length --length 35 -j udp-flood

# ALLOW ICMP REQUEST AND ANSWER
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT

# ALLOW HLDS
-A INPUT -p udp -m udp --dport 27015 -j ACCEPT

# ALLOW HLTV
#-A INPUT -p udp -m udp --dport 27030 -j ACCEPT

# ALLOW ALL ESTABLISHED CONNECTIONS
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# UDP-FLOOD CHAIN
-A udp-flood -m limit --limit 10/s --limit-burst 30 -j RETURN
-A udp-flood -j DROP

# PORT SCANNING CHAIN
-A port-scanning -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/s --limit-burst 2 -j RETURN
-A port-scanning -j DROP

COMMIT
# Completed on Wed Mar 22 04:26:21 2023
# Generated by xtables-save v1.8.2 on Wed Mar 22 04:26:21 2023
*nat
:PREROUTING ACCEPT [31020:1818600]
:INPUT ACCEPT [4663:254293]
:POSTROUTING ACCEPT [560:34739]
:OUTPUT ACCEPT [560:34739]

COMMIT

# Completed on Fri Mar 24 10:46:27 2023
# Generated by xtables-save v1.8.2 on Fri Mar 24 10:46:27 2023
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# BLOCK INVALID PACKETS
-A PREROUTING -m conntrack --ctstate INVALID -j DROP

# BLOCK NEW PACKETS THAT ARE NOT SYN
-A PREROUTING -p tcp ! --syn -m conntrack --ctstate NEW -j DROP

# BLOCK SYN PACKETS WITH SUSPICIOUS MSS VALUE
-A PREROUTING -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP

# BLOCK PACKETS WITH BOGUS TCP FLAGS
-A PREROUTING -p tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
-A PREROUTING -p tcp --tcp-flags FIN,ACK FIN -j DROP
-A PREROUTING -p tcp --tcp-flags ACK,URG URG -j DROP
-A PREROUTING -p tcp --tcp-flags ACK,FIN FIN -j DROP
-A PREROUTING -p tcp --tcp-flags ACK,PSH PSH -j DROP
-A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP
-A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
-A PREROUTING -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP
-A PREROUTING -p tcp --tcp-flags ALL SYN,FIN,PSH,URG -j DROP
-A PREROUTING -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP

# SET TOS
-A PREROUTING -p udp -m udp --sport 27015 -j TOS --set-tos 0x10/0x3f
-A OUTPUT -p udp -m udp --sport 27015 -j TOS --set-tos 0x10/0x3f

# BLOCK SPOOFED PACKETS
-A PREROUTING -s 224.0.0.0/3 -j DROP
-A PREROUTING -s 169.254.0.0/16 -j DROP
-A PREROUTING -s 172.16.0.0/12 -j DROP
-A PREROUTING -s 192.0.2.0/24 -j DROP
-A PREROUTING -s 192.168.0.0/16 -j DROP
-A PREROUTING -s 10.0.0.0/8 -j DROP
-A PREROUTING -s 0.0.0.0/8 -j DROP
-A PREROUTING -s 240.0.0.0/5 -j DROP
-A PREROUTING -s 127.0.0.0/8 ! -i lo -j DROP

# BLOCK FRAGMENTS IN ALL CHAINS
#-A PREROUTING -f -j DROP

COMMIT
Загружаем новые правила: sudo iptables-restore /etc/iptables/rules.v4

:ok:
Базовый вариант правил на одноядерном процессоре 2,4GHz рядового VDS хостинга выдерживает атаки до 5М пакетов в минуту. Чем выше частота и больше ОЗУ, тем легче переносится DDOS. Также все упирается в пропускную способность самого интернет канала - если его весь "выберут", сервер "пропадет", однако отказа в обслуживании на самом сервере не произойдет.

Для владельцев 2CPU, 2GB RAM (и более), рекомендую загрузить вот эти параметры ядра:
kernel.printk = 4 4 1 7
kernel.panic = 10
kernel.sysrq = 0
kernel.shmmax = 4294967296
kernel.shmall = 4194304
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
vm.swappiness = 20
vm.dirty_ratio = 80
vm.dirty_background_ratio = 5
fs.file-max = 2097152
net.core.netdev_max_backlog = 262144
net.core.rmem_default = 31457280
net.core.rmem_max = 67108864
net.core.wmem_default = 31457280
net.core.wmem_max = 67108864
net.core.somaxconn = 65535
net.core.optmem_max = 25165824
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 8192
net.ipv4.neigh.default.gc_thresh3 = 16384
net.ipv4.neigh.default.gc_interval = 5
net.ipv4.neigh.default.gc_stale_time = 120
net.netfilter.nf_conntrack_max = 10000000
net.netfilter.nf_conntrack_tcp_loose = 0
net.netfilter.nf_conntrack_tcp_timeout_established = 1800
net.netfilter.nf_conntrack_tcp_timeout_close = 10
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 10
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 20
net.netfilter.nf_conntrack_tcp_timeout_last_ack = 20
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 20
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 20
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 10
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.ip_no_pmtu_disc = 1
net.ipv4.route.flush = 1
net.ipv4.route.max_size = 8048576
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_congestion_control = htcp
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.tcp_mem = 65536 131072 262144
net.ipv4.udp_mem = 65536 131072 262144
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.udp_rmem_min = 16384
net.ipv4.tcp_wmem = 4096 87380 33554432
net.ipv4.udp_wmem_min = 16384
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 65535
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_ecn = 2
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.tcp_orphan_retries = 0

Посмотреть как работают правила можно командой: iptables -nvL
 
Последнее редактирование:
Сообщения
313
Реакции
21
Помог
7 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Каждое правило расшифровать, не? Или принцип работы хотя бы знаешь того, что озвучил?
От запросов A2S и вообще в принципе от игровых методов по типу VSE | VALVE | FIVEM - это не поможет, также и от всяких tcp reflection | tcp bgp.
Синтаксис и написание правил уж сильно устаревшее, и лимиты слабые (получается всего лишь 83к запросов в секунду и вся тачка тупо отвалится). Ты от куда это понабирал то? И на какой ОС это всё тестировал и тестировал ли вообще?
 
Сообщения
401
Реакции
113
Помог
2 раз(а)
Иди в игнор тоже :rofl: С расшифровкой #12 строке
 
Последнее редактирование:
Сообщения
313
Реакции
21
Помог
7 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Refresh, странный ты, критику не воспринимаешь от слова совсем, так ещё и оскорбляешь просто так, вкинул вброс какой-то и всё. Тебе указали на то что где-то у тебя некорректно, и то что лимиты можно сделать жёстче, ну а на счёт A2S тут даже модуль был от этих запросов, ну и хулиган вроде чем то подобным занимался по защите, был бы он, он бы написал кто прав или нет.
Всего хорошего.
 
Сообщения
401
Реакции
113
Помог
2 раз(а)
kto-to, критика, в моем понимании, это что-то конкретное относящееся к теме публикации. Если ты что-то не понимаешь, или считаешь, что автор допустил ошибку - ты пишешь, для начала, личное сообщение. Если хочешь в чем-то помочь или дополнить информацию - я рад любому сотрудничеству.

Я не вижу смысла вступать в дискуссию с людьми, обделенными интеллектом и манерами, которые публично пускают пузыри в лужу или плюют на экран своего монитора обрывками фраз или, только им понятного, сленга. Тебе и некоторым другим, подобным тебе, очевидно кажется, что человек делящийся информацией, тебе чем-то сильно обязан. У меня на этот счет другое мнение. Если они не совпадают, не нужно утомлять друг друга, можно просто тихо игнорировать. Вот этот весь "лай", "слюни" и хамское поведение по отношению к топикстартерам мне кажется неправильным.

Обращаясь к человеку, нужно априори исходить из уважения и равенства, а не начинать диалог в стиле: "УАся, ты гооонишь!". У всех разный возраст, опыт и образование, кто-то в этой "теме" трется всю жизнь, а для кого-то это первый месяц отпуска...
 
Сообщения
80
Реакции
30
Помог
2 раз(а)
Refresh, странный ты, критику не воспринимаешь от слова совсем, так ещё и оскорбляешь просто так, вкинул вброс какой-то и всё. Тебе указали на то что где-то у тебя некорректно, и то что лимиты можно сделать жёстче, ну а на счёт A2S тут даже модуль был от этих запросов, ну и хулиган вроде чем то подобным занимался по защите, был бы он, он бы написал кто прав или нет.
Всего хорошего.
Хулиган это ты ? :smile3:
 
Сообщения
365
Реакции
9
Помог
5 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
irinaxariton, алексееч говорил, что по ip адресу не совпадают
 
Сообщения
509
Реакции
111
Помог
16 раз(а)
irinaxariton, я когда прочитал первый пост,и в целом о чем речь,так и понял что хулиган не смог бы устоять что бы не высказаться.

Администрация проверьте на мультиак)
 
Сообщения
313
Реакции
21
Помог
7 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
irinaxariton, я уже отвечал на этот вопрос в другом топике.
 
Сообщения
57
Реакции
10
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
r1nk0, поддерживаю )
 
Сообщения
313
Реакции
21
Помог
7 раз(а)
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Refresh, ну так ведь я и указал, что лимиты очень слабые, ведь посчитай сам и подумай… что такое 5м в 1 минуту? Понимал бы что 5м в 1 секунду, тогда ды да, космолёт было дело бы, а так каких-то 83к в секунду, это уж очень-таки слабо. Ну а на что ты обижаешься, если помимо атак tcp|udp есть ещё и другие запросы? О которых я выше упомянул. Ведь не спроста ж, для меня все правила понятны, а для остальных нет или совсем от слова нет, посмотрел разделы тут что связанные с вдс, так и все таки никто не отписывал никогда ничего по правилам iptables, к тому же обычно используют все ufw. Я ведь о людях сидящих тут забочусь и думаю, чтобы не только тебе|мне и ещё парочку было понятно, а также и остальным что для чего и как.
Считай просто описания не хватает с подробной информацией, что и для чего служит. А то ведь люди сделают как ты сказал, а потом и полетят всякие вопрос в теме по типу - а у меня это не работает или то не работает или что то не соединяется|не отображается где-либо. Ситуации разные же бывают, ведь также как и моменты.
 
Сообщения
401
Реакции
113
Помог
2 раз(а)
kto-to, смотри.. давай определимся с исходными данными.

Итак, 5М пакетов в минуту, при среднем размере пакета используемого в типовой атаке на усиление - 35 байт. ИТОГО: 5*35*10^6/(1024*1024*60) = 2,8МБайт в секунду (Б - большое) или около 25Мбит (+-):blush2: Мне сложно судить, много это или мало, для VDS на 1CPU (обычно это 0,5 от реального ядра). Но при такой вредоносной активности, можно вполне комфортно играть на сервере. Без этого фаервола, аналогичный по мощности сервер не выдержит и 300 запросов в секунду, а потребление CPU подскочит до 100% уже при 50 запросах в секунду.:mosking: Поэтому все относительно.

На 3CPU (1,5 от реального) и 4GB ОЗУ мы вполне комфортно играли с небольшими лагами, при наличии вредоносного трафика на уровне 48ГБ в час, у меня даже где-то скрины есть, т.е. на пределе полосы пропускания в 100Мбит. Самой КС на 32 игрока нужно всего 4Мбита.

Также нужно понимать, что никто не атакует игровой сервер "просто так".

Во-первых мощный DDOS - это всегда очень дорого, и обычному "нищеброду", которого забанили на сервере это просто недоступно (атака с 1-10 IP или через strcmd, это не DDOS), и в конечном счете не выгодно.

Во-вторых, не получив желаемого усиления атаки (именно поэтому вас и атакуют, они отправляют вам 35 байт, а ваш сервер в ответ 1,2КБ - и, подменяя адрес отправителя, они получают желаемое и деньги за свои услуги, а вы лаги и шиш с маслом) - операторы бота, гарантированное вас занесут в черный список, потому, что это время и деньги, и на измор вас никто брать не будет.

Конфиги фаервола и ядра, которые я дал позволяют нивелировать 3 типа атак среднестатистическому игровому сервису поддерживающему (A2S_*), которые мы фиксировали.

Без каких-либо обязательств или гарантий с моей стороны. Те кто понимает, что там написано - это поможет, кто НЕ понимает - лучше ничего не трогать.
 
Последнее редактирование:
Сообщения
3,582
Реакции
1,570
Помог
137 раз(а)
Я ведь о людях сидящих тут забочусь
Опять как в соседнем топике пустые слова? Знаешь как лучше? Молодец, поделись этим с сообществом. Напиши свой гайд. Не хочешь делиться? Тогда зачем ты вообще это пишешь?
 

Garey

ninjaCow
Сообщения
422
Реакции
1,056
Помог
10 раз(а)
kto-to,
Автор статьи показал примеры iptables которые можно самому настроить, а от твоих сообщений в данной теме смешно. Сам просишь расписать принцип работы при этом ссылаясь на какие-то странные методы и термины, честно звучит то как-будто ты поверхностно знаешь что-то о сетевой защите и просто пытаешься докопаться с ничего на ТСа.

  • Что такое "VSE | VALVE | FIVEM"? Звучит как ANTI HPP BLOCKER by васян, серьёзно...
  • К чему претензия за A2S если в фильтре есть уже правила для UDP?
  • Что такое TCP Reflection? Если ты про атаку с амплификацией, то опять же причем тут IPTABLES?
  • TCP BGP? Офигеть, теперь протокол динамической маршрутизации и есть метод атаки?
  • Синтаксис iptables "устарел"? Вот с этого вообще офигел, как синтаксис может устареть?
 
Последнее редактирование модератором:
Сообщения
273
Реакции
2
Автору респект - правда я фаервол на rocky 9 Юзаю про него бы тоже статейку и его правила плз )
А да проверьте типа этого очень похожа писанина его на хулигана так же 0 импакта то срач разводит + деньги наверно по просит )
16 Май 2023
и вот хотел спросить у автора если несколько серверов будет и тачка дедик с гигом канал + ядер больше 6 на каждый сервер будет по 5 мб или как
можно по подробнее про метод если ксго ещё стоять будет и svencoop и тд
 
Сообщения
401
Реакции
113
Помог
2 раз(а)
1337322228, я не работал с CS:GO, но все атаки UDP-flood штатно мониторятся tcpdump-ом, например, tcpdump -nn -XX "dst port 27015", будет флуд определенного размера:

Код:
03:16:22.245535 IP 213.230.102.154.50659 > 93.85.88.50.27015: UDP, length 7
        0x0000:  5257 001f edd4 40a6 7742 93f0 0800 4500  [email protected].
        0x0010:  0037 6839 0000 7311 ed74 d5e6 669a 5d55  .7h9..s..t..f.]U
        0x0020:  5832 c5e3 6987 0023 555b 8c41 0000 f23c  X2..i..#U[.A...<
        0x0030:  0080 2361 0e8e 468c 0394 51fe a2e5 9ecd  ..#a..F...Q.....
        0x0040:  0815 0004 f2                             .....
Там будет много строк, заканчивающихся (length XX), добавляете к этим цифрам размер заголовков IP+UDP (20+8) получаете размер пакета который нужно ограничивать по рейту: -A INPUT -p udp -m udp --dport 27015 -m length --length 35 -j udp-flood

Это простейший метод сработает в 99% случаев. В случае с игровыми протоколами формат пакета и его "заголовки" фиксированы, например, форматом A2S, поэтому даже если атакующий добавляют "соль" (произвольное количество байт) к вредоносным пакетам, для обхода статических правил фильтрации - то на помощь придет блокировка по содержимому - ищется HEX вариант заголовка пакета (все тем же tcpdump) и добавляется в фильтр. Но таких сложных атак я не встречал на игровые серверы, и отбиться от них на 1СPU (0,5) не получится...

Что касается защиты - Linux не предназначена для работы с сетью, в принципе. Для фильтрации сетевых соединений нет ничего лучше FreeBSD. Поэтому для серьезных проектов роль фильтрации трафика нужно отдавать более специфическим программным продуктам и реальному железу (минимум 2 ядра и серверные сетевые карты), linux и iptables для этого не подходит по ряду причин, основная - работа в userspace.

На 6-8 современных ядрах Intel с HT (реальных, не VDS) можно крутить около 50 серверов HLDS на 32 слота и 1000 FPS :mosking: Полный сервер CS 1.6 потребляет канал в 4-5Мбит... Можно для оценки, с запасом, брать 10Мбит.. 1Гбит канала вам хватит на 100 серверов HLDS, можно открывать вторую Арену...
 
Последнее редактирование:
Сообщения
1,042
Реакции
206
Предупреждения
1
Помог
6 раз(а)
Refresh, увидел 80 порт, но нет 443 https
 
Сообщения
673
Реакции
242
Помог
11 раз(а)
ChatGPT рулит😎

Код:
# Очистка всех цепочек и установка политики по умолчанию
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT


# Разрешение ответов DNS
iptables -A INPUT -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT

# Блокировка неверных пакетов
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Разрешение SSH с ограничением скорости 10 соединений в минуту
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 --name SSH -j DROP
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Разрешение FTP
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# Разрешение HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Разрешение MySQL
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

# Разрешение доступа с доверенных IP
iptables -A INPUT -s <trusted_ip> -j ACCEPT

# Разрешаем локальный трафик
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Разрешаем входящие пакеты, установленные или существующие соединения
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Защита от DDoS-атак (UDP-флуд) с ограничением скорости
iptables -N udp-flood
iptables -A udp-flood -m limit --limit 100/s --limit-burst 100 -j RETURN
iptables -A udp-flood -j DROP
iptables -A INPUT -p udp -j udp-flood

# Разрешение ICMP-запросов и ответов
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT

# Разрешение всех установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Блокируем неправильные пакеты
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

# Блокируем новые пакеты, которые не являются SYN
iptables -A INPUT -p tcp ! --syn -m conntrack --ctstate NEW -j DROP

# Блокируем SYN пакеты с подозрительным значением MSS
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -m tcpmss ! --mss 536:65535 -j DROP

# Блокируем пакеты с неправильными флагами TCP
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# Устанавливаем TOS на 0x20
iptables -A INPUT -p tcp -j TOS --set-tos 0x20

# Блокируем поддельные пакеты
iptables -A INPUT -s 127.0.0.0/8 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -j DROP
iptables -A INPUT -s 224.0.0.0/4 -j DROP
iptables -A INPUT -d 224.0.0.0/4 -j DROP
iptables -A INPUT -s 240.0.0.0/5 -j DROP
iptables -A INPUT -d 240.0.0.0/5 -j DROP
iptables -A INPUT -s 0.0.0.0/8 -d 0.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -d 169.254.0.0/16 -j DROP
iptables -A INPUT -s 192.0.2.0/24 -j DROP
iptables -A INPUT -d 192.0.2.0/24 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -d 10.0.0.0/8 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -d 172.16.0.0/12 -j DROP
iptables -A INPUT -s 192.168.0.0/16 -j DROP
iptables -A INPUT -d 192.168.0.0/16 -j DROP
iptables -A INPUT -s 100.64.0.0/10 -j DROP
iptables -A INPUT -d 100.64.0.0/10 -j DROP

#Блокируем фрагментированные пакеты во всех цепочках
iptables -A INPUT -f -j DROP
iptables -A FORWARD -f -j DROP
iptables -A OUTPUT -f -j DROP

#Разрешаем входящие пакеты на порт HLDS (27015)
iptables -A INPUT -p udp --dport 27015 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 27015 -m conntrack --ctstate NEW -j ACCEPT
 
Последнее редактирование:
Сообщения
401
Реакции
113
Помог
2 раз(а)
Limbooc, аккуратнее с ним.. это полная каша:

100.64.0.0/10 это публичная сеть, установка TOS на входящий трафик (тем более на весь) не имеет смысла, он уже получен...

-A INPUT -d 192.168.0.0/16 -j DROP, это вполне легитимный трафик без указания сетевого интерфейса, фрагментацию пакетов лучше резать в PREROUTING.

HLDS не использует TCP - -A INPUT -p tcp --dport 27015 -m conntrack --ctstate NEW -j ACCEPT.

Это ограничения без burst -A udp-flood -m limit --limit 100/s --limit-burst 100.

При установке полики -P OUTPUT ACCEPT это вообще не нужно -A OUTPUT -o lo -j ACCEPT.

В любом конфиге loopback идет на 1 месте - всегда, следом за ним явные дропы и потом все остальное.

Это -A INPUT -s 0.0.0.0/8 -d 0.0.0.0/8 -j DROP является избыточным повторением второй строки абзаца -A INPUT -s 0.0.0.0/8 -j DROP

:rofl: это просто абра-кадабра...
 
Последнее редактирование:
Сообщения
273
Реакции
2
@Refresh,а можно конфиг под ксго и остальные игровые билды ?
вдруг ксго 2 люди поставят уже летом на своих дедиках или вдсках а там динамический тикрейт или как его субтик
Вот как правильно будет защитить себя и сделать игрокам норм геймплей без повышения пинга и без потери онлайна от данных правил ?

Я в этом не шарю (
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу