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