Escolar Documentos
Profissional Documentos
Cultura Documentos
Netfilter/Iptables - Parte 3
Avalie este Post de Blog
0 Trackbacks 0 Comentários
por
PEdroArthurJEdi
em 11-01-2009 às 14:57 (1992 Visualizações)
Continuando mais uma vez...
Novamente, foram atingidos(sic) os 10000 caracteres. Vamos continuar com as
matchs...
state
Verifica, usado em conjunto com o módulo nf_conntrack(ip_conntrack), o estado da
conexão para um pacote. Os seguintes estados são válidos:
• NEW
Verifica se o pacote é relacionado com uma nova conexão. Não
necessariamente o pacote precisa ter somente a flag SYN setada.
• RELATED
Verifica se o pacote está relacionado a uma conexão já iniciada porém não
estabelecida. Esse estado ocorre no segundo pacote relacionado com uma
conexão, no caso um pacote TCP com SYN+ACK.
• ESTABLISHED
Verifica se o pacote está relacionado com uma conexão já estabelecida.
Ocorre após o processo do three way handshake (RFC 793).
• INVALID
Verifica se o pacote é inválido. Ocorre, por exemplo, no caso de um pacote
com o flag RST setado sem estar relacionado a uma conexão estabelecida.
Para ativa-lo, o parâmetro -m state deve ser especificado. A seguinte
funcionalidade é adicionada:
--state state
Verifica o estado do pacote. state deve ser especificado como uma lista separada
por virgulas.
8 - Target Extensions
Assim como as match extensions, as target extensions vem para aumentar a
funcionalidade do filtro de pacotes. Com elas podemos fazer diversos tipos de ações
nos pacotes tais quais definir sua prioridade, marcá-lo, inserir uma entrada no log
do sistema, dentre outras.
CLASSIFY
Essa extensão possibilita definir a classe do pacote. As classes estão relacionadas
com as disciplinas de enfileiramento baseadas em classe, como o CBQ e o HTB. Por
exemplo, se temos a hierarquia de classes 10 10:100 10:1000, a seguinte regra
colocaria os pacotes SYN em estado de conexão nova com destino a máquina
10.2.0.1 na classe 10:100
iptables -t mangle -A FORWARD -p tcp --syn -m state --state NEW -d 10.2.0.1 -j
CLASSIFY --set-class 10:100
Para um melhor entendimento das disciplinas de enfileiramento recomendo a
leitura do http://lartc.org e da apresentação do presente em http://eriberto.pro.br.
DNAT
Esse target está presente na maioria das dúvidas presentes no fórum do Under-
Linux. Ela basicamente modifica o endereço de destino do pacote e de todos os
pacots associados. Seu principal parâmetro é mostrado a seguir:
--to-destination ip[-ip][:port[-port]]
O endereço de destino será alterado para o IP definido em ip, ou o range de
endereços ip-ip e a porta será modificada para port ou para o range de portas port-
port.
LOG
Essa chain permite registrar os dados do pacote no sistema de logs. Esse tipo de
regra é conhecida como não terminativa, ou seja, após casar com o pacote e
realizar a ação de logging o processamento das regras do Netfilter/iptables irá
continuar.
--log-level level
Nível de logging que se deseja usar. Veja os detalhes no manual do syslog.
--log-prefix prefix
Prefixo a ser inserido para facilitar a identificação da regra
--log-tcp-sequences
Registra as informações de sequencia do cabeçalho TCP
--log-tcp-options
Registra o campo de opções do cabeçalho TCP
--log-ip-options
Registra o campo de opções do cabeçalho IP
--log-uid
Registra o UID do usuário. Somente útil se o pacote for originado do host ao qual se
encontra o filtro de pacotes.
Recomenda-se sempre usar um mecanismo que limite a escrita de registros no
sistema. Portanto, não se admire se todas as regras de logging que encontr na
Internet esteja associada a macth extension limit. Segue um exemplo abaixo:
iptables -P INPUT DROP
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -j inputeth0
iptables -A INPUT -p tcp -i eth1 -j inputeth1
iptables -A INPUT -m limit --limit 10/m -j LOG --log-prefix "[BAD PORT]"
|
\-> A primeira regra define a política padrão da chain INPUT, que, em nosso caso,
foi definida para DROP. A segunda regra permitirá a passagem de pacotes que já
tenham sido aceitos. inputeth0 e inputeth1 são chains personalizadas para verificar
os pacotes que estão entrando na interface eth0 e eth1, respectivamente. Caso os
pacotes não se enquadrem nas regras anteriores, ele será logado com o prefixo
"[BAD PORT]". Para evitar uma negação de serviço que poderia ser gerada pela
inundação dos logs, nos utilizamos a match limit para permitir apenas 10 registros
por minuto.
Tags: Nenhum
Categorias
Dicas