Não é a mesma coisa, mas dá pro gasto. O módulo unclean seria voltado pra pacotes usando opções inconsistentes, tipo um TCP SYN junto com um RST e/ou FIN.
Já o estado inválido do módulo state é para descartar qualquer pacote passando por conexões que não foram oficialmente abertas. Note que a conexão pode estar nesse estado simplesmente pq foi aberta antes do firewall ser ativado.
Lembro de ter visto um script aqui no fórum pra fazer liberação por MAC address. Dá uma pesquisada...
No seu não tem, ué. Nem todos os iptables implementam o módulo "unclean". Vida que segue, isso é detalhe.
Você não está baseando seu firewall todo na existência dessa regra, está? Esse módulo "unclean" era considerado experimental e não é obrigatório. E pra ser sincero, isso aí é apenas um detalhe, um pequeno plus. A influência dessa regra pra qualidade do firewall é zero.No seu não tem, ué. Nem todos os iptables implementam o módulo "unclean". Vida que segue, isso é detalhe.
Pois é, estou tentando saber o pq do erro, se é algo que mudou na versão atual do iptables, pq em termos de segurança não dá para deixar porisso e segue o baile.
Vamos lá então. E essa?O que vc já tem feito?
1 - Preciso de uma regra que bloqueie o acesso a internet para todas as máquinas da rede, exceto para o ip 192.168.0.55
O dhcp está pronto distribuindo na faixa 192.168.0.50 até 192.168.0.100Você não está baseando seu firewall todo na existência dessa regra, está? Esse módulo "unclean" era considerado experimental e não é obrigatório. E pra ser sincero, isso aí é apenas um detalhe, um pequeno plus. A influência dessa regra pra qualidade do firewall é zero.No seu não tem, ué. Nem todos os iptables implementam o módulo "unclean". Vida que segue, isso é detalhe.
Pois é, estou tentando saber o pq do erro, se é algo que mudou na versão atual do iptables, pq em termos de segurança não dá para deixar porisso e segue o baile.CitarVamos lá então. E essa?O que vc já tem feito?
1 - Preciso de uma regra que bloqueie o acesso a internet para todas as máquinas da rede, exceto para o ip 192.168.0.55
A influência dessa regra pra qualidade do firewall é zero.Era isso que eu queria ouvir..
authoritative;
default-lease-time 600;
max-lease-time 7200;
option domain-name-servers 192.168.0.1, 8.8.8.8;
option subnet-mask 255.255.255.0;
#COnfiguração do servidor dhcp
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.50 192.168.0.100;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
}
#Especificar edereçco ip para determinado host através do MAC
#host fantasia{
# hardware ethernet 08:00:07:04:c4:a3;
# fixed-address fantasia.fugue.com;
#}
#!/bin/sh
echo "Ativando o Firewall"
#carrega os modulos
modprobe ip_tables
modprobe iptable_nat
echo "Modulos carregados"
#compartilha a conexao
modprobe iptable_nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "Conexao ativada"
#Proxy transparente
#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
#echo "Proxy transparente ativado"
#Protegendo contra synflood
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
#protege contra pacotes danificados
#iptables -A FORWARD -m unclean -j DROP
#echo "Dropando pacotes danificados"
#Abrir portas
#iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
#Abre a internet para a rede local distribuida na eth1
iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
echo "Internet Ativa e compartilhada com eth1"
#Fecha o resto
iptables -A INPUT -p tcp --syn -j DROP
echo "Bloqueando tudo"
#Protecao contra ICMP Broadcasts - PC nao respondera a pings
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "PC nao respode a pings"
echo "Firewall ativo"
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet dhcp
#placa de saida
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
broadcast 192.168.0.255
Quero bloquear tudo para TODOS
CitarQuero bloquear tudo para TODOS
Isso é fácil:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Difícil é lidar com as consequências da política totalmente restritiva: somente os fluxos que vc liberar, explicitamente, em cada uma dessas cadeias, vão poder passar.
Na imagem abaixo tem exatamente o que eu preciso fazer. Se tiver algumas dicas de como fazer isso eu agradeço muito.Essa imagem não estava antes... isso seria fácil de fazer com um switch gerenciável (e VLANs). Como você não tem um, sugiro que use placas de rede adicionais em seu servidor/firewall.(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fwww.l9web.com.br%2F_PUB%2Frede1.png&hash=ea4f08f0e0bbe06767882cbca2fdafcddefb3a85)
Na imagem abaixo tem exatamente o que eu preciso fazer. Se tiver algumas dicas de como fazer isso eu agradeço muito.Essa imagem não estava antes... isso seria fácil de fazer com um switch gerenciável (e VLANs). Como você não tem um, sugiro que use placas de rede adicionais em seu servidor/firewall.(https://ubuntuforum-pt.org/proxy.php?request=http%3A%2F%2Fwww.l9web.com.br%2F_PUB%2Frede1.png&hash=ea4f08f0e0bbe06767882cbca2fdafcddefb3a85)
Outra coisa, não sei se vc percebeu, mas vc não tem 3 grupos, e sim dois. O grupo das estações LTSP não conta, porque elas não acessam a internet. Quem faz isso é o servidor LTSP. E se ele tem as mesmas permissões de acesso do grupo cabeado, então é o mesmo grupo, não?
Observo também que vc tem um roteador wireless oferecendo acesso pra um grupo de estações com menos privilégios. Já verificou se essas restrições que vc quer implantar não podem ser feitas no próprio roteador wireless?
Na verdade o que me impede de colocar 2 placas de rede é a estrutura física do local. O cabo que sai do Firewall liga a um Switch, que a partir dele saem cabos para os 2 grupos de usuários. O ideal seria separar em 2 ou talvez 3 sub-nets. Mas infelizmente não tenho como.Então não tem como você fazer o que quer.
CitarNa verdade o que me impede de colocar 2 placas de rede é a estrutura física do local. O cabo que sai do Firewall liga a um Switch, que a partir dele saem cabos para os 2 grupos de usuários. O ideal seria separar em 2 ou talvez 3 sub-nets. Mas infelizmente não tenho como.Então não tem como você fazer o que quer.
Você quer que os grupos não se enxerguem; mas a única forma de fazer isso é colocá-los em domínios de broadcast diferentes. Você pode até colocar os grupos pra usarem faixas de sub-rede diferentes, mas não vai impedir que as estações se comuniquem, e pior, o tráfego de um grupo vai interferir no tráfego do outro.
Outro problema q vai ter é q não vai ser possível usar dhcp nos grupos, pois o sistema não terá como distinguir um grupo do outro pelo domínio de broacast.
Separar as redes fisicamente.
Não, vc precisa separar as redes fisicamente. As duas placas de rede não podem ir para o mesmo switch, e não pode haver cabo ligando esses dois switches.
REDEMASQ=192.168.0.0/24
iptables -P FORWARD DROP
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -s $REDEMASQ -j ACCEPT
iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -o eth1 -p tcp -m multiport --dports 80,8080 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 445,139 -j ACCEPT
REDEMASQ=192.168.0.0/24
iptables -P FORWARD DROP
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -s $REDEMASQ -j ACCEPT
iptables -A FORWARD -j DROP
iptables -A INPUT -j DROP
iptables -A FORWARD -o eth1 -p tcp -m multiport --dports 80,8080 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 445,139 -j ACCEPT
A função das variáveis é pra vc poder ajustar o script pra tua configuração, sem ter que ficar fuçando em cada uma das regras.
Quanto ao erro, é um erro menor, comum: o endereço "0.0.0.0/0" significa "qualquer endereço". Quando vc filtra por "qualquer endereço", é a mesma coisa que "não filtrar". Então toda essa parte "-d 0.0.0.0/0" é desnecessária, basta retirar da linha.
Aliás, se isso aparecer no resto do script ("-d 0.0.0.0/0", "-d 0/0", "-s 0.0.0.0/0" ou "-s 0/0"), pode tirar também.
Sim, as variáveis eu uso também, na verdade não entendi o que colocar na variavel IP_EXTvoce precisa atribuir o endereco da tua interface de saida, deve ser um ip do teu modem ou que lhe foi fornecido pela operadora em caso de planos corporativos.
A internet fica liberada para as estações, mas não para o próprio servidor. Como eu libero também para o servidor
# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
IP_EXT parece ser o ip externo da conexão. Seria utilizado no caso de conexão com IP fixo. Mas não dá pra dizer qual seria o impacto de usar esse script numa conexão de IP dinâmico, sem ver o script completo.
Vou postar mesmo assim, pois o Zekkerj, postou antes de mim ..CitarSim, as variáveis eu uso também, na verdade não entendi o que colocar na variavel IP_EXTvoce precisa atribuir o endereco da tua interface de saida, deve ser um ip do teu modem ou que lhe foi fornecido pela operadora em caso de planos corporativos.CitarA internet fica liberada para as estações, mas não para o próprio servidor. Como eu libero também para o servidor
voce especificou os DNS da tua operadora no teu resolv.conf ?
vi /etc/resolv.conf
EX: DNS: nameserver 8.8.8.8Citar# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
esta linha esta no teu firewall, isso não protege contra synflood, com isso teu firewall poderá levar você a uma negação de serviço.
da uma olhada neste artigo sobre isto. Um excelente artigo do Elgio!
http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD/
#!/bin/bash
INTERNET="eth1"
REDELOCAL="eth0"
modprobe ip_tables
modprobe iptable_nat
# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
está ficando bloqueado por causa do INPUT DROP, gostaria de saber a regra para liberar, se eu colocar iptables -A INPUT ACCEPT funciona... mas quero que pro padrão seja drop...Inclui isto no teu firewall abaixo da politica padrão
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPTTransforma isso em uma regra apenas,
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
Citarestá ficando bloqueado por causa do INPUT DROP, gostaria de saber a regra para liberar, se eu colocar iptables -A INPUT ACCEPT funciona... mas quero que pro padrão seja drop...Inclui isto no teu firewall abaixo da politica padrão
Melhor especificar todas politicas DROP
e ir liberando o que precisa
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPTCitariptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPTTransforma isso em uma regra apenas,
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
#samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT
Nao estao saindo porque voce nao especificou as regras de FORWARD das portas que necessita sair
EX porta 80 HTTP:
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 80 -j ACCEPT
EX porta SSH 22
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
e assim por diante
Agora eu quero integrar com o squid. Já tenho o squid configurado (meia-boca). Vou optar por colocar nos navegadores o proxy manualmente. Gostaria que não funcionasse nada se o cara não tiver o proxy no navegador.insere esta regra antes dos FORWARD's
CitarAgora eu quero integrar com o squid. Já tenho o squid configurado (meia-boca). Vou optar por colocar nos navegadores o proxy manualmente. Gostaria que não funcionasse nada se o cara não tiver o proxy no navegador.insere esta regra antes dos FORWARD's
iptables -t nat -A PREROUTING -i $REDELOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128
#!/bin/bash
INTERNET="eth1"
REDELOCAL="eth0"
modprobe ip_tables
modprobe iptable_nat
# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# Politicas da rede ou pessoais
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Liberando http e https
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 8080 -j ACCEPT
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# Liberando a internet no servidor
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
Assim ele vai ficar transparente, eu quero que quem não colocar no navegador o proxy não consiga acessar a internet.
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
CitarAssim ele vai ficar transparente, eu quero que quem não colocar no navegador o proxy não consiga acessar a internet.
Isso você limita no teu proxy com parâmetros de AuthCitar# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
Simples:
Na cadeia FORWARD você especifica as conexoes que passam pelo teu firewall para fora ou para dentro
Na cadeia INPUT você aceita conexões diretamente ao teu host
CitarAssim ele vai ficar transparente, eu quero que quem não colocar no navegador o proxy não consiga acessar a internet.
Isso você limita no teu proxy com parâmetros de AuthCitar# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
Simples:
Na cadeia FORWARD você especifica as conexoes que passam pelo teu firewall para fora ou para dentro
Na cadeia INPUT você aceita conexões diretamente ao teu host
as regras de FORWARD da porta 80 e 8080 não funcionaram. Alguma dica?
FORWARD tem q vir antes do input ou depois, ou nao muda nada?
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 53,5353 -j ACCEPT
Esse trecho é fácil de consertar, pq a regra está bem próxima do aceitável. Da forma como está, o firewall só vai aceitar um pacote tcp por segundo, independente da origem, e independente do tipo de pacote. Precisamos melhorar essa regra:Citar# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
esta linha esta no teu firewall, isso não protege contra synflood, com isso teu firewall poderá levar você a uma negação de serviço.
da uma olhada neste artigo sobre isto. Um excelente artigo do Elgio!
http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD/
Somente a questão do SQUID ainda não está muito clara. Preciso que:Mole: Bloqueie tudo que vá passar da rede interna pra externa.
1 - Se o usuário não colocar o proxy no navegador, não consiga navegar nem em http e nem em https >:(
2 - Se o usuário não colocar o proxy no navegador, possa utilizar o compartilhamento samba da rede e o ssh normalmente ;DSeu script de firewall só vai controlar o que passar pelo firewall; compartilhamentos samba da rede não passam pelo firewall, a menos que o servidor de arquivos seja justamente o firewall. Nesse caso, é um tráfego que está entrando (INPUT), não atravessando (FORWARD). É só incluir a liberação na cadeia correta.
3 - Se o usuário colocar o proxy no navegador, todas suas requisições passem pelo SQUID, sem usuário e senha. ::)
Outra coisa que se pode fazer é aumentar o limite de conexões aceitas; uma máquina atual aceita facilmente centenas de conexões por segundo. Podemos então mudar esse limite de "1/s" para "10/s" ou "100/s" sem medo da máquina ficar sobrecarregada.
Bom dia. Meu servidor está rodando firewall + dhcp + proxy + samba + ssh.Somente a questão do SQUID ainda não está muito clara. Preciso que:Mole: Bloqueie tudo que vá passar da rede interna pra externa.
1 - Se o usuário não colocar o proxy no navegador, não consiga navegar nem em http e nem em https >:(
iptables -A FORWARD -p tcp -j DROP
Depois libere só os acessos legítimos, tipo, correio eletrônico:
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
Só tenha cuidado que, apesar de eu ter dito "depois", a regra de liberação tem que vir antes, no script.Citar2 - Se o usuário não colocar o proxy no navegador, possa utilizar o compartilhamento samba da rede e o ssh normalmente ;DSeu script de firewall só vai controlar o que passar pelo firewall; compartilhamentos samba da rede não passam pelo firewall, a menos que o servidor de arquivos seja justamente o firewall. Nesse caso, é um tráfego que está entrando (INPUT), não atravessando (FORWARD). É só incluir a liberação na cadeia correta.
Sobre o ssh... é pra liberar ssh no servidor, ou pra fora? ???Citar3 - Se o usuário colocar o proxy no navegador, todas suas requisições passem pelo SQUID, sem usuário e senha. ::)
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT ;)
Ah!!! Informe-se sobre o WPAD. Assim o usuário não vai precisar colocar o proxy no navegador: basta selecionar "detectar automaticamente".
No meio de um ataque DoS, um SynFlood, vc consegue diferenciar quem é legítimo, e quem não é?
Limitando a uma certa quantidade de tentativas de abertura de conexão por segundo da mesma origem, vc torna mais difícil bloquear sua máquina, e não impede máquinas legítimas de conectar
Então na verdade, se pensarmos bem, a regra de baixo não prevalece sobre a de cima, a de cima prevalece. É ao contrário de um css por exemplo.
Mas se e setar uma política padrão em cima, e uma liberaçao embaixo, ele libera, justamente ao contrario do exemplo anterior!!!!
iptables -P INPUT DROP
itables -A INPUT -p tcp --dport 80 -j ACCEPT
Outra dúvida. Tem alguma necessidade em trabalhar com a política iptables -P OUTPUT DROP?
Outra coisa, se eu quiser que um ip da rede, por exemplo 192.168.0.99 tenha tudo liberado e não precise passar pelo proxy, qual o regra e onde coloco ela?Duas formas:
CitarOutra coisa, se eu quiser que um ip da rede, por exemplo 192.168.0.99 tenha tudo liberado e não precise passar pelo proxy, qual o regra e onde coloco ela?Duas formas:
essa regra tu insere antes do redirecionamento pro proxy
IPTABLES -t nat -A PREROUTING -s 192.168.0.99 -p tcp --dport 80 -j ACCEPT
ou tu faz o redirecionamento assim:
iptables -t nat -A PREROUTING -i $REDELOCAL -s ! 192.168.0.99 -p tcp --dport 80 -j REDIRECT --to-port 3128
Não estou usando nada de PREROUTING no meu firewall.
Essa regra serve? iptables -A FORWARD -s 192.168.0.3 -j ACCEPT
Vou utilizar o sarg para analisar os logs do SQUID. Preciso ter um servidor web rodando na máquina para usar o sarg?
CitarOutra coisa que se pode fazer é aumentar o limite de conexões aceitas; uma máquina atual aceita facilmente centenas de conexões por segundo. Podemos então mudar esse limite de "1/s" para "10/s" ou "100/s" sem medo da máquina ficar sobrecarregada.
zekkerj, mas limitar não seria furada? pois quem for a conexão numero 2, 11 ou 101 estará sendo dropada, mesmo que seja legitima!
Esse trecho é fácil de consertar, pq a regra está bem próxima do aceitável. Da forma como está, o firewall só vai aceitar um pacote tcp por segundo, independente da origem, e independente do tipo de pacote. Precisamos melhorar essa regra:Citar# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT
esta linha esta no teu firewall, isso não protege contra synflood, com isso teu firewall poderá levar você a uma negação de serviço.
da uma olhada neste artigo sobre isto. Um excelente artigo do Elgio!
http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD/
1. Essencial: Só limitar os pacotes de abertura de conexão ("TCP Syn").
2. Opcional: Aumentar a quantidade de novas conexões aceitas.
3. Opcional: Controlar os pedidos de conexão vindos da mesma origem.
Ao só limitar os pacotes de abertura de conexão, a gente não interfere nas conexões que já estão abertas. Isso é feito observando se o segmento TCP tem o flag "Syn" ligado. [opções "-p tcp --syn" na linha do iptables]
Outra coisa que se pode fazer é aumentar o limite de conexões aceitas; uma máquina atual aceita facilmente centenas de conexões por segundo. Podemos então mudar esse limite de "1/s" para "10/s" ou "100/s" sem medo da máquina ficar sobrecarregada.
Controlando as novas conexões vindas da mesma máquina, fica mais difícil um ataque de DoS --- apesar de não proteger contra um DDoS (se bem que contra um DDoS, só o provedor pode te ajudar). Nesse caso as regras são um pouco diferentes, pq vão envolver um outro módulo ("recent").
Vc esqueceu a parte onde eu disse: "Essencial: só limitar os pacotes de abertura de conexão" ;)
A regra deveria ser "-A FORWARD -p tcp --syn -m limit --limit 100/s -j ACCEPT". ;)
################### Protegendo contra ataques ###############
# Syn Cookyes
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
# ICMP Broadcasts
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
# Mensagens falsas de icmp_error responses
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Anti-spoofings
iptables -A INPUT -j DROP -s 10.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 127.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 172.16.0.0/12 -i $INTERNET
iptables -A INPUT -j DROP -s 192.168.1.0/16 -i $INTERNET
# Syn Flood via modulo limit
iptables -A INPUT -p tcp --syn -m limit --limit 100/s -j ACCEPT