Отключаем ufw:
Устанавливаем сохранение правил iptables:
Открываем файл:
Загружаем новые правила:
Базовый вариант правил на одноядерном процессоре 2,4GHz рядового VDS хостинга выдерживает атаки до 5М пакетов в минуту. Чем выше частота и больше ОЗУ, тем легче переносится DDOS. Также все упирается в пропускную способность самого интернет канала - если его весь "выберут", сервер "пропадет", однако отказа в обслуживании на самом сервере не произойдет.
Для владельцев 2CPU, 2GB RAM (и более), рекомендую загрузить вот эти параметры ядра:
Посмотреть как работают правила можно командой:
sudo ufw disable
Устанавливаем сохранение правил iptables:
sudo apt-get install iptables-persistent
Открываем файл:
sudo nano /etc/iptables/rules.v4
и копируем туда это содержимое:[email protected]:~# cat /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
Базовый вариант правил на одноядерном процессоре 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
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
Последнее редактирование: