Alguém pode me ajudar??
O iptables me retorna um erro quando tento usar a seguinte regra:
# iptables -A INPUT -i eth0 --syn -j DROP
iptables v1.2.11: Unknown arg `--syn'
Try `iptables -h' or 'iptables --help' for more information.
Obrigado
Alguém pode me ajudar??
O iptables me retorna um erro quando tento usar a seguinte regra:
# iptables -A INPUT -i eth0 --syn -j DROP
iptables v1.2.11: Unknown arg `--syn'
Try `iptables -h' or 'iptables --help' for more information.
Obrigado
Ninguém usa esse comando?? "--syn" ???
Será que é problema da minha instalação??
Extensões TCP
As extensões TCP são automaticamente carregadas se é especificada a opção `-p tcp'. Elas provêm as seguintes opções (nenhuma associa-se com fragmentos).
--tcp-flags
seguida por uma opcional `!', e por duas strings indicando flags, permite que sejam filtradas flags TCP específicas. A primeira string de flags é a máscara: uma lista de flags que serão examinadas. A segunda string diz quais flags devem estar ativas para que a regra se aplique. Por exemplo:
# iptables -A INPUT --protocol tcp --tcp-flags ALL SYN,ACK -j DROP
Essa regra indica que todas as flags devem ser examinadas (`ALL' é sinônimo de `SYN,ACK,FIN,RST,URG,PSH'), mas apenas SYN e ACK devem estar ativadas. Também há um argumento `NONE' que significa nenhuma flag.
--syn
opcionalmente precedido por `!', é um atalho para `--tcp-flags SYN,RST,ACK SYN'.
iptables -A INPUT -i eth0 -p tcp -m tcp --tcp-flags SYN,ACK -j DROP
ou
iptables -A INPUT -i eth0 -p tcp -m tcp --syn -j DROP
ASSYN deve funcionar !
Muito obrigado pela ajuda
Funcionou o comando sim, mas ainda não consegui fazer o que eu quero.
Montei um script no iptables bloqueando tudo por padrão e vou liberando as portas que vão ser usadas, como esta abaixo:
iptables -t filter -A FORWARD -p icmp -j ACCEPT #Pacotes ICMP
iptables -t filter -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP
iptables -t filter -A FORWARD -p tcp --sport 80 -j ACCEPT
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
iptables -t filter -A FORWARD -p udp --sport 53 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 110 -j ACCEPT #POP
iptables -t filter -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -t filter -A FORWARD -p tcp --dport 25 -j ACCEPT #SMTP
iptables -t filter -A FORWARD -p tcp --sport 25 -j ACCEPT
#iptables -t filter -A FORWARD -p tcp ! --syn -j ACCEPT
#iptables -t filter -A INPUT -i eth0 -p tcp -m tcp ! --syn -j ACCEPT
#iptables -t filter -A FORWARD -m state --state ESTABLISHED -j ACCEPT
Desse jeito funciona, ó que tenho que fazer duas regras para cada porta, queria deixar só uma regra liberando a porta de destino e uma regra no final que libere todos conexões estabelecidas por isso to tentando usar esse --syn
Quero deixar mais ou menos assin:
iptables -t filter -A FORWARD -p icmp -j ACCEPT #Pacotes ICMP
iptables -t filter -A FORWARD -p tcp --dport 80 -j ACCEPT #HTTP
iptables -t filter -A FORWARD -p udp --dport 53 -j ACCEPT #DNS
iptables -t filter -A FORWARD -p tcp --dport 110 -j ACCEPT #POP
iptables -t filter -A FORWARD -p tcp --dport 25 -j ACCEPT #SMTP
iptables -t filter -A FORWARD -p tcp --dport 443 -j ACCEPT #SSL
iptables -t filter -A FORWARD -i eth0 -p tcp ! --syn -j ACCEPT
Mais assim não funcionou direito, o que estou fazendo de errado???
Meu pequeno padawan vc tem que criar uma chain para isso exemplo:
#!/bin/sh
iptables -N validar_input # ==> nova chain que vai validar conexoes
iptables -N validar_forward # ==> nova chain que vai validar conexoes
iptables -N validar_output # ==> nova chain que vai validar conexoes
iptables -N log-drop # ==> nova chain que vai logar e dropar
#FAZENDO A CHAIN LOG DROP
#CRIANDO NA REGRA LOG-DROP COLOCANDO SEUS PROCEDIMENTOS
iptables -A log-drop -j LOG #logou
iptables -A log-drop -j DROP #dropou
#CRIANDO A REGRA DE VALIDACAO DA ENTRADA E SEUS PROCEDIMENTOS
iptables -A validar_input -p tcp --tcp-flags SYN,FIN SYN,FIN -j log-drop #PORT SCCANER
iptables -A validar -p tcp_input --tcp-flags SYN,RST SYN,RST -j log-drop #PORT SCANNER
iptables -A validar_input -p tcp --tcp-flags ACK,FIN FIN -j log-drop #FIN
iptables -A validar_input -p tcp --tcp-flags ACK,URG URG -j log-drop #URG
iptables -A validar_input -p tcp --dport 80 -i eth0 -m state --state NEW -j ACCEPT #VALIDANDO ACESSO EXTERNO AO WEBSITE HOSPEDADO NO FIREWALL
iptables -A validar_input -p tcp -s 192.168.1.0/24 -i eth1 -m state --state NEW -j ACCEPT #VALIDANDO REDE LOCAL ENTRANDO PELA ETH1
#CRIANDO A REGRA DE VALIDACAO DA TRANSICAO (forward) E SEUS PROCEDIMENTOS
iptables -A validar_forward -p tcp -s 192.168.1.0/24 -i eth1 -j log-drop #PACOTES COM ENDERECO DA REDE LOCAL ENTRANDO PELA ETH1 SPOOFING
iptables -A validar_forward -p tcp -s 192.168.1.0/24 -m state --state NEW -j ACCEPT #VALIDANDO PASSAGEM DE PACOTES DA REDE LOCAL
#MUDANDO A POLITICA PARA DROPAR TUDO
#POR DEFINICAO SE O PACOTE CHEGAR NO FINAL DA CHAIN SEM SER AVALIADO POR NEHUMA CONDIÇÃO ELE TERÁ O DESTINO DA POLITICA !!!!
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
#FAZENDO ACOMPANHAMENTO DO PACOTE (state fulllllll)!
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
#COLOCANDO CADA PACOTE EM SUA CHAIN
iptables -A INPUT -j validar_input
iptables -A OUTPUT -j validar_output
iptables -A FORWARD -j validar_forward
Dessa forma vai funcionar assim:
Chain input
\ --> SE O PACOTE ESTIVER ESTABILIZADO E RELATADO ACEITA
\ --> SE O PACOTE NAO ESTIVER ESTABILIZADO E RELATADO CAI PARA DENTRO DA CHAIN valida_input
\ --> dentro da chain faz as chegagens para dropar/aceitar se passar por tudo e nao "bater" com nenhum a POLICE dropa o pacote POLICE == politica ! nao policia !
Espero ter ajudado
Valeu mesmo a ajuda.
Agora vou estudar um pouco esse código pra poder entender direito e arrumar o meu.
Valeu