С недавних пор пошли жалобы мол мой игровой сервер кого-то атакует. Я в начале не придал этому значения. Всякое бывает сервер на 2 месте по Украине, могут наговаривать.
После нескольких жалоб решил покопаться, а действительно, может сервер ломанули, хотя он под Linux.
И действительно, сервер начал флудить пакетами на разные ip и порты. В основном страдали другие игровые сервера Counter-Strike, Lineage 2...
Вот пример атаки, присланный мне в письме:
18:45:57.364912 IP 93.126.64.206.28960 > 93.93.65.89.27025: UDP, length 962
18:45:57.366983 IP 93.126.64.206.28960 > 93.93.65.91.27019: UDP, length 962
18:45:57.406974 IP 93.126.64.206.28960 > 93.93.65.89.27029: UDP, length 962
18:45:57.407138 IP 93.126.64.206.28960 > 93.93.65.89.27025: UDP, length 962
18:45:57.415526 IP 93.126.64.206.28960 > 93.93.65.91.27019: UDP, length 962
18:45:57.430056 IP 93.126.64.206.28960 > 93.93.65.89.27025: UDP, length 962
18:45:57.438349 IP 93.126.64.206.28960 > 93.93.65.89.27029: UDP, length 962
18:45:57.449986 IP 93.126.64.206.28960 > 93.93.65.91.27019: UDP, length 962
18:45:57.474603 IP 93.126.64.206.28960 > 93.93.65.89.27025: UDP, length 962
18:45:57.475614 IP 93.126.64.206.28960 > 93.93.65.89.27029: UDP, length 962
18:45:57.497942 IP 93.126.64.206.28960 > 93.93.65.91.27019: UDP, length 962
18:45:57.512308 IP 93.126.64.206.28960 > 93.93.65.89.27025: UDP, length 962
18:45:57.512866 IP 93.126.64.206.28960 > 93.93.65.89.27029: UDP, length 962
18:45:57.529467 IP 93.126.64.206.28960 > 93.93.65.91.27019: UDP, length 962
далее я проверил командой tcpdump -n -nnn | grep 28960 какой трафик бегает на игровой порт:
12:11:02.023872 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023876 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023880 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023883 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023889 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023894 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023898 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023902 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023905 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023909 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023914 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023918 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023922 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023925 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023929 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023932 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023936 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023939 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023943 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023946 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
12:11:02.023951 IP 219.76.195.53.25 > 93.126.64.206.28960: UDP, length 14
В процессе выяснилось что злоумышленник шлет спуфф пакеты, на которые сервер отвечал. В этих пакетах он подставлял ip:port жертвы, куда собственно сервер и отвечал. Размер пакета
злодея составляет всего 14 байт и он их шлет тоннами, а сервер отвечла пакетами в районе 600-1000 байт в свою очередь получался неплохой флуд.
Решение следующее:
Конфигурируем поведение сетевого протокола IP v4:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 2800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 4280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "65535" > /proc/sys/net/ipv4/ip_conntrack_max
echo 30000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
прописываем в фаервол спрос пакетов размером 0 байт.
iptables -I INPUT -p udp -m length --length 0 -j DROP
iptables -A LENGTH -p udp --dport 28960 -m length --length :501 -j DROP
iptables -A LENGTH -p udp --dport 28960 -m length --length 14:14 -j DROP
да и еще пропатчил сам сервер Cod4 под Linux:
Вы не можете скачивать файлы с нашего сервераФлуд заметно уменьшился !!!!