Olá galera primeiramente, eu venho falar que andei pesquisando muito ,e vi varias regras e resolvi fazer uma compilação, uma coisa eu ja digo de cara, nunca ta 100% a regra iptables, sempre fica uma brecha ou outra , um ataque bem planejado nao a dedicado que aguente,sim ate softlayer cai,servidores de tibia global etc,bom enfim nao vo ensinar como derrubar servidores, mais vo mostrar como se prevenir internamente,(externamente) algumas regras e so no roteador com gateway isso é avançado quem tem que oferecer e o seu servidor dedicado.
bom enfim vamos as regras iptables.
primeiro vo comentar sobre um ataque muito chato de conter, o tal syn flood eu posso falar 1001 maneiras de como esse ataque pode ser feito,e como seu firewall jamais vai se defender dele,porem vo apenas por uma linha abaixo que não é solução mais ameniza o problema,e vo falar a vantagem e desvantagem de usar ela.
por um dellay no seu servidor exemplo aceitar 1 conexão por segundo.
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT
qual a vantagem de usar essa regra?
se protege até de ip spoof e grandes inundação.
qual a desvantagem?
se alguem realizar o ataque quem ta online no seu servidor(jogo) vai permanecer
mais quem for tentar fazer login nao vai conseguir, pode até conseguir mais vai ser mais dificil
e o site provavelmente fica fora do ar quando o cara realizar o ataque, porem ao usar essa regra e bom ter o site em hospedagem.
não importa se você tem muita memoria ou processador banda entre outros,os recursos nao são infinitos,uma hora vai acabar e seu computador vai travar, quanto mais banda sua rede tiver OTIMO mais dados entra pra travar seu processador/memoria, e quanto mais memoria/processador mais connections seu servidor vai aceitar ou seja é uma questão que nunca ta 100% seguro.
regras arp spoof/ip spoof são bem planejada se baseia em clonar ips falsos por tanto nao adianta limitar numero de conexão por ip,
pois ela gera milhares de ips falsos e envia a connection a maquina acredite 1 so maquina atacando um servidor dedicado com tecnica arp spoof/ip spoofing bem planejado derruba um softlayer.
a então como resolver?
e como eu falei nunca ta 100%, mais existe servidores gateway e regras a ser aplicadas abaixo vo por algumas regras iptables compiladas por eu mesmo.
regra recomendada por min
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done
iptables -A FORWARD -p tcp --syn --dport 22 -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 1 -j REJECT
end
regra bruta
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/s -j ACCEPT
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 3 -j REJECT
end
regra forte
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST -m limit --limit 1/s -j ACCEPT
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT
end
regra itermediaria
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
iptables -A INPUT -p tcp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP
iptables -A INPUT -p udp -m multiport --dports 135,137,138,139,445,1433,1434 -j DROP
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $i; done
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT
end
(essa regra abaixo e pra bloquear ip spoofing no momento por tanto nao adianta aplicar ela,
por exemplo se tu sabe que o cara ta usando a classe ips que começa com 60 ou 50
se bloqueia essa classe e o ataque para,eu recomendo bloquear as seguintes classes
assim seu servidor nao vai ser atacado por outro servidor.
pois hackers de verdade geralmente usa servidor pra atacar servidor com scripts e as vezes varios servidor e as classes abaixo e de servidores mais pode bloquear algumas redes privadas tambem.
iptables -A ext-int -s 127.0.0.0/8 -j DROP
iptables -A ext-int -s 172.16.0.0/16 -j DROP
iptables -A ext-int -s 192.168.0.0/24 -j DROP
iptables -A INPUT -s 0.0.0.0/7 -j DROP
iptables -A INPUT -s 2.0.0.0/8 -j DROP
iptables -A INPUT -s 5.0.0.0/8 -j DROP
iptables -A INPUT -s 7.0.0.0/8 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 23.0.0.0/8 -j DROP
iptables -A INPUT -s 27.0.0.0/8 -j DROP
iptables -A INPUT -s 31.0.0.0/8 -j DROP
iptables -A INPUT -s 36.0.0.0/7 -j DROP
iptables -A INPUT -s 39.0.0.0/8 -j DROP
iptables -A INPUT -s 42.0.0.0/8 -j DROP
iptables -A INPUT -s 49.0.0.0/8 -j DROP
iptables -A INPUT -s 50.0.0.0/8 -j DROP
iptables -A INPUT -s 77.0.0.0/8 -j DROP
iptables -A INPUT -s 78.0.0.0/7 -j DROP
regra bloquear classes ips
iptables -A ext-int -s 10.0.0.0/8 -j DROP
iptables -A ext-int -s 127.0.0.0/8 -j DROP
iptables -A ext-int -s 172.16.0.0/16 -j DROP
iptables -A ext-int -s 192.168.0.0/24 -j DROP
iptables -A INPUT -s 0.0.0.0/7 -j DROP
iptables -A INPUT -s 2.0.0.0/8 -j DROP
iptables -A INPUT -s 5.0.0.0/8 -j DROP
iptables -A INPUT -s 7.0.0.0/8 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -s 23.0.0.0/8 -j DROP
iptables -A INPUT -s 27.0.0.0/8 -j DROP
iptables -A INPUT -s 31.0.0.0/8 -j DROP
iptables -A INPUT -s 36.0.0.0/7 -j DROP
iptables -A INPUT -s 39.0.0.0/8 -j DROP
iptables -A INPUT -s 42.0.0.0/8 -j DROP
iptables -A INPUT -s 49.0.0.0/8 -j DROP
iptables -A INPUT -s 50.0.0.0/8 -j DROP
iptables -A INPUT -s 77.0.0.0/8 -j DROP
iptables -A INPUT -s 78.0.0.0/7 -j DROP
iptables -A INPUT -s 92.0.0.0/6 -j DROP
iptables -A INPUT -s 96.0.0.0/4 -j DROP
iptables -A INPUT -s 112.0.0.0/5 -j DROP
iptables -A INPUT -s 120.0.0.0/8 -j DROP
iptables -A INPUT -s 169.254.0.0/16 -j DROP
iptables -A INPUT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -s 173.0.0.0/8 -j DROP
iptables -A INPUT -s 174.0.0.0/7 -j DROP
iptables -A INPUT -s 176.0.0.0/5 -j DROP
iptables -A INPUT -s 184.0.0.0/6 -j DROP
iptables -A INPUT -s 192.0.2.0/24 -j DROP
iptables -A INPUT -s 197.0.0.0/8 -j DROP
iptables -A INPUT -s 198.18.0.0/15 -j DROP
iptables -A INPUT -s 223.0.0.0/8 -j DROP
iptables -A INPUT -s 224.0.0.0/3 -j DROP
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT
end
regra media
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 7 -j REJECT
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
end
regra anti-brute force no ssh
iptables -A FORWARD -p tcp --syn --dport 22 -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 2 -j REJECT
end
regra disconnect invalid
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH SYN -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP
iptables -A INPUT -m conntrack --ctstate INVALID -p tcp --tcp-flags ! SYN,RST,ACK,FIN,URG,PSH SYN,RST,ACK,FIN,URG,PSH -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP
end
regra simples
iptables -N conn-flood
iptables -I INPUT 1 -p tcp --syn -j conn-flood
iptables -A conn-flood -m limit --limit 7/s --limit-burst 20 -j RETURN
iptables -A conn-flood -j DROP
iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
end
Proteção contra ip spoofing
# iptables -A INPUT -s 10.0.0.0/8 -i Interface da NET -j DROP
# iptables -A INPUT -s 172.16.0.0/16 -i Interface da NET -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -i Interface da NET -j DROP
Bom créditos 70% meu(renansmith/kpdo) pelas pesquisas e 30% ao google claro, muitas pesquisas.
Vale ressaltar que um ataque bem planejado DDOS, não a nada que segura, o que vai te proteger e os recursos de hardware,e configuração no roteador(gateways) hubs entre outros adicionais de reredicionamentos,e isso é caro acho raro ter servidor de open tibia que tenha isso,e boa parte por ae ta vulneravel e continua sendo vulneravel.