• Nenhum resultado encontrado

q

1 -s ou --src <IP>[/bits] – casa com a origem do pacote. 1 -d ou --dst <IP>[/bits] – casa com o destino do pacote. 1 -i ou --in-interface <interface> – interface de entrada. 1 -o ou --out-interface <interface> – interface de saída. 1 Dica: use “!” para negar uma opção:

iptables -A INPUT -i eth0 ! -s 192.168.0.1 –j\ ALVO

São muitas as opções que definem o padrão de casamento (MATCH) de uma regra, como pode ser verificado a seguir (não estão listadas todas as opções):

Opção Opção (longa) Valor Significado

-s --src <IP>[/bits] Casa com o endereço de origem

do pacote.

-d --dst <IP>[/bits] Casa com o endereço de destino do pacote.

-i -in-interface <interface> Casa com a interface pela qual o pacote

chegou.

-o --out-interface <interface> Casa com a interface pela qual o pacote

vai sair.

-p --protocol tcp,udp,icmp Casa com o protocolo do pacote ou

datagrama.

--sport --source-port <porta>[:porta] Casa com a porta (ou intervalo) de

origem do pacote; precisa ser usado com a opção -p (tcp/udp).

--dport --destination-port <porta>[:porta] Casa com a porta (ou intervalo) de destino do pacote; necessita ser usado com a opção -p (tcp/udp).

--icmp -type <tipo/código> Casa com o tipo/código de um pacote icmp.

-m - -match <módulo> Habilita o modo de opções entendido.

q

1 p ou –protocol <tcp,udp,icmp> – protocolo do pacote.

1 --sport ou --source-port <porta>[:porta] – porta(s) de origem do datagrama. 1 --dport ou --destination-port <porta>[:porta] – porta(s) de destino do datagrama. Exemplo:

iptables -A FORWARD -p tcp --dst 192.168.0.1 --dport 80 -j ALVO 1 -m ou --match <módulo> – habilita novas opções.

Exemplo:

1 -m state – carrega o módulo de estados.

1 -m state --state <NEW, ESTABLISHED, RELATED,INVALID> – casa com o estado da conexão. Além das opções da tabela anterior, outras mais podem ser usadas ao se especificar a

Uma opção pode ser negada se a prece- dermos com um “!”. Assim, “! -s 192.168.0.1/32” casa com qualquer origem, menos com

192.168.0.1/32.

l

Ca pí tu lo 7 - S eg ur an ça – F ire w al l opção --match:

1 --limit (valor X/time): limita a média de matchs (o que exceder esse número é descar- tado). Time pode ser /second, /minute, /hour ou /day. Essa opção e a seguinte são, em geral, utilizadas com o alvo LOG, para limitar o número de pacotes logados.

1 --limit-burst (valor X): número máximo inicial de matchs. Esse valor é recarregado em 1

a cada intervalo de tempo em que o limite não foi alcançado, até chegar ao valor especifi -chegar ao valor especifi - ao valor especifi-

cado. Utilize essa opção para permitir rajadas.

1 --state (valores NEW, ESTABLISHED, RELATED, INVALID): casa com o estado de uma conexão (utilize com a opção -m state).

1 --tcp-flags (valor MASK FLAGS): examina as flags de um pacote TCP. MASK define o que deve ser examinado e FLAGS define quais bits devem estar ligados. Exemplo: SYN, ACK ACK = examina SYN e ACK, e casa com pacotes que tenham SYN desligado e ACK ligado. 1 --tos (valor name): casa com o campo “type of service”. Para ver os nomes e valores, use

o comando iptables -m tos –h.

1 --ttl: casa com o valor do campo TTL do pacote. 1 --syn: casa com pacotes do tipo SYN do protocolo TCP.

q

1 --tcp-flags <mask, flags> – examina as flags definidas em “mask” e casa com flags ligadas (bit 1).

2 Exemplo: iptables -A FORWARD -p tcp --tcp-flags SYN,ACK SYN -j ALVO 3 Examina as flags SYN e ACK. A flag SYN deve estar “ligada”. Definição de alvo de uma regra (exemplo tabela filter).

1 ACCEPT: aceita um pacote.

1 REJECT: rejeita um pacote e, opcionalmente, envia um ICMP tipo <type> para a origem do pacote.

1 DROP: descarta silenciosamente os pacotes. 1 LOG: registrar o pacote.

1 RETURN: reenvia o pacote para a sua chain de origem.

Por fim, devemos especificar o alvo de uma regra. Como cada tabela possui alvos diferentes e com opções diferentes, veremos apenas os alvos da tabela filter:

1 ACCEPT: aceita um pacote.

1 REJECT --reject-with <type>: rejeita um pacote e, opcionalmente, envia um ICMP tipo <type> para a origem do pacote.

1 DROP: descarta silenciosamente os pacotes.

1 LOG --log-level X –log-prefix Y: loga os headers de um pacote e, opcionalmente, utiliza o priority X (veja syslogd.conf) e o prefixo Y, que é uma string de até 29 letras utilizada para ajudar a identificar o pacote de regra.

1 <chain>: envia o pacote para uma chain do usuário. 1 RETURN: reenvia o pacote para a sua chain de origem.

Os dois últimos alvos (<chain> e RETURN) merecem uma explicação adicional. Suponha que foi criada uma chain para tratar apenas de pacotes ICMP, e que essa regra foi chamada de ICMP_FILTER. É possível ter, então, uma regra na chain FORWARD do tipo:

Ad m in is tr aç ão d e S is te m as L in ux : R ed es e S eg ur an ça

Pacotes que casem com a regra anterior seriam jogados na chain ICMP_FILTER. O alvo RETURN é usado para fazer com que um pacote retorne à chain de onde foi encaminhado. Por exemplo, para que os pacotes com origem em 192.168.1.1 retornem à chain FORWARD, basta criar a regra:

# iptables -A ICMP_FILTER -s 192.168.1.1 -j RETURN Outros exemplos de regras:

1 “Dropa” (DROP) tudo que chega ao firewall com destino ao host 192.168.0.3: # iptables -A FORWARD -d 192.168.0.3/32 -j DROP

1 Remove a regra anterior:

# iptables -D FORWARD -d 192.168.0.3/32 -j DROP

1 Bloqueia a porta 23 da máquina local para acessos vindos pela interface eth0: # iptables -A INPUT -i eth0 -p tcp --dport 23 -j REJECT

1 “Loga” (LOG) tentativas de acesso à porta 161 UDP vindas de fora da rede 192.168.0.0/24, limitando o número de match para não encher rapidamente o log:

# iptables -A FORWARD -p udp --dport 161 ! -s 192.168.0.0/24 -j LOG --limit 1/second

Observe que uma regra de LOG não é terminal, ou seja, o pacote continua a percorrer as regras da chain. As regras a seguir logam pacotes TCP SYN com destino à porta 445, acres- cendo o prefixo SCAN à entrada do log e, em seguida, descartam o pacote:

# iptables -A FORWARD -p tcp --dport 445 --syn -j LOG –log- prefix “SCAN”

# iptables -A FORWARD -p tcp --dport 445 --syn -j DROP