• Nenhum resultado encontrado

SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra- CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS

N/A
N/A
Protected

Academic year: 2021

Share "SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra- CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS"

Copied!
7
0
0

Texto

(1)

1

SEGURANÇA INFORMÁTICA E DAS COMUNICAÇÕES - Ficha de Apoio Extra-

CAPÍTULO 3. SEGURANÇA EM REDES E SISTEMAS Introdução ao IPTables

O iptables é utilizado para configurar, manter e inspecionar as tabelas de regras de filtragem de pacotes IPv4 no kernel do Linux. Várias tabelas diferentes podem ser definidas. Cada tabela contém um número de chains (correntes, cadeias) internas e também pode conter chains definidas pelo usuário. Cada chain é uma lista de regras que podem combinar com um conjunto de pacotes. Cada regra especifica o que fazer com um pacote que combina com a regra. Isto é chamado de target, que pode ser um salto na mesma tabela para uma chain definida pelo utilizador.

Sinopse:

iptables [-t table] {-A|-D} chain rule-specification iptables [-t table] -I chain [rulenum] rule-specification iptables [-t table] -R chain rulenum rule-specification iptables [-t table] -D chain rulenum

iptables [-t table] -S [chain [rulenum]]

iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options...] iptables [-t table] -N chain

iptables [-t table] -X [chain] iptables [-t table] -P chain target

iptables [-t table] -E old-chain-name new-chain-name rule-specification = [matches...] [target]

match = -m matchname [per-match-options] target = -j targetname [per-target-options] Alvos (Targets)

Uma regra de firewall específica os critérios para um pacote é um alvo. Se o pacote não corresponder, a regra seguinte na chain é examinada e, se o pacote for igual, então a próxima regra é especificada pelo valor do alvo, o que pode ser o nome de uma chain definida pelo utilizador ou por um dos valores especiais ACCEPT, DROP, QUEUE ou RETURN:

 ACCEPT: significa deixar o pacote passar.  DROP: significa descartar o pacote.

QUEUE: significa passar o pacote para o userspace - espaço do usuário - (o modo como o pacote será recebido por um processo de userspace difere de acordo como determinada fila é manipulada. Os kernels 2.4.x e 2.6.x até 2.6.13, incluem o manipulador de fila "ip_queue". Kernels 2.6.14 e posteriores, incluem o manipulador de fila "nfnetlink_queue". Pacotes com um alvo de fila serão enviados para a fila número '0'. Consulte também o alvo NFQUEUE.

(2)

2

RETURN: significa parar de atravessar a chain e continuar na próxima regra da chain anterior. Se o final de uma chain "built-in" (embutida) for alcançado ou uma regra de uma chain "built-in" com alvo RETURN for correspondida, o alvo especificado pela política da chain determina o destino do pacote.

Tabelas (Tables)

Geralmente, há três tabelas independentes (as tabelas que estão presentes em qualquer momento dependem das configurações do kernel e dos módulos que estão presentes).

-t, --table table : Esta opção especifica a tabela correspondente ao pacote que o comando deve executar. Se o kernel estiver configurado com módulo de carga automático, uma tentativa será feita para carregar o módulo apropriado para essa tabela, se ele já não estiver carregado.

As tabelas são, como se segue:

filter :: Esta é a tabela padrão (se a opção "-t" não definir outra tabela, será utilizada esta tabela). Ela contém a chain "built-in INPUT" (entrada - para pacotes destinados a sockets locais, pacotes destinados para a própria máquina), FORWARD (para pacotes sendo roteados através da máquina, pacotes que passam pela máquina) e OUTPUT (para pacotes gerados localmente, pacotes oriundos da própria máquina com destino para fora dela).

O iptables lê as regras de cima para baixo, de acordo com cada tabela, ou seja, se uma regra bloquear tudo numa determinada tabela, as exceções (libertadas) devem ser colocadas acima desta regra. Exemplo:

iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j REJECT iptables -A INPUT -p tcp --dport 443 -j DROP

A primeira regra liberta, a segunda rejeita e a terceira regra, nega o acesso. A primeira regra é que terá o privilégio, então, o acesso na porta 443 será libertado para todos, mesmo rejeitando e negando o acesso nas regras subsequentes.

Caso queiramos negar o acesso à porta 443 somente para alguns IPs, por exemplo, devemos colocar essas regras ACIMA da primeira regra.

Lembrar que nas regras acima não foi determinada nenhuma tabela (-t), então, elas serão aplicadas somente na tabela padrão, a filter, e, no caso, somente na chain INPUT.

Lembrar também, que o iptables é um módulo do kernel do Linux, portanto, deve estar sendo executado pelo sistema para que possa funcionar. Ou seja, no início do script do iptables deve constar modprobe: "e_o_nome_do_módulo_o_qual_se_quer_levantar".

(3)

3

Caso compilar um novo kernel, uma boa prática é colocar o módulo "IP:netfilter configuration" e suplementares (IPv4 NAT, MASQUERADE target support, NETMAP target support, REDIRECT target support etc) como "built-in (*)".

As chains devem ser sempre colocadas em letras maiúsculas.

nat :: Esta tabela é consultada quando for encontrado um pacote que criou uma nova conexão. É composta de três built-ins: PREROUTING (para alterar pacotes no momento que eles chegam, antes do roteamento ou compartilhamento.), OUTPUT (para alterar pacotes gerados localmente antes do roteamento ou compartilhamento), POSTROUTING (para alterar pacotes quando eles estão prestes a sair, depois do roteamento ou compartilhamento).

mangle :: Esta tabela é usada para a alteração especializada do pacote. Até o kernel 2.4.17 tinha duas chains: PREROUTING (para alterar pacotes recebidos antes do roteamento) e OUTPUT (para alterar pacotes gerados localmente antes do roteamento). Desde o kernel 2.4.18, outras três chains embutidas também são suportadas: INPUT (para pacotes entrando na própria máquina), FORWARD (para alterar pacotes sendo roteados/compartilhados através da máquina), POSTROUTING (para alterar pacotes quando eles estão prestes a sair depois do roteamento/compartilhamento).

raw :: Esta tabela é usada principalmente para a configuração de isenções de rastreamento de conexões em combinação com o alvo NOTRACK. Ela registra os ganchos netfilter com maior prioridade e é chamada pelo ip_conntrack, ou quaisquer outras tabelas IP.

Ela oferece as seguintes chains:

 PREROUTING: Para pacotes que chegam através de qualquer interface de rede.  OUTPUT: Para pacotes gerados por processos locais.

Opções: As opções que são reconhecidas pelo iptables, podem ser divididas em vários grupos diferentes. Comandos

Estas opções especificam a acção que se quer executar. Apenas uma delas pode ser especificada na linha de comando, a menos que seja indicado de outra forma abaixo no script do iptables.

Para versões longas dos nomes de comandos e opções, você precisa usar apenas letras suficientes para garantir que o iptables pode diferenciá-los de todas as outras opções.

(4)

4

e/ou nomes de destino resolverem mais de um endereço, uma regra será adicionada para cada combinação de endereços possíveis.

-D, --delete chain rule-specification

-D, --delete chain rulenum :: Exclui uma ou mais regras da chain especificada. Existem duas versões deste comando: a regra pode ser especificada como um número na chain (rulenum - começando em 1 para a primeira regra) ou o nome da regra para combinar (rule-specification).

-I, --insert chain [rulenum] rule-specification :: Insere uma ou mais regras na chain especificada, pode ser um número para determinada regra. Assim, se o número da regra é um, a regra ou as regras serão inseridas no topo da chain. Este é o padrão se nenhum número de regra for especificado.

-R, --replace chain rulenum rule-specification :: Substitui uma regra na chain especificada. Se a fonte e/ou nomes de destino resolvem vários endereços, o comando irá falhar. As regras são numeradas a partir de 1.

-L, --list [chain] :: Lista todas as regras da chain especificada. Se nenhuma chain for especificada, todas as chains serão listadas. Como qualquer outro comando iptables, é aplicado na tabela especificada (a tabela filter é o padrão).

Então, as regras NAT serão listadas por: # iptables -t nat -n -L

Note que é geralmente usado com a opção "-n" a fim de evitar longas consultas de DNS reverso. É interessante especificar a opção "-Z" (zero), daí a(s) chain(s) serão atomicamente listadas e zeradas. A saída exata é afetada pelos outros argumentos utilizados.

As regras exatas são então suprimidas até utilizar: # iptables -L -v

-S, --list-rules [chain] :: Mostra todas as regras da chain especificada. Se nenhuma chain for especificada, todas as chains serão mostradas como o comando iptables-save. Como qualquer outro comando iptables, é aplicado na tabela especificada (a tabela filter é a padrão).

-F, --flush [chain] :: Limpa a chain especificada (limpa todas as chains da tabela se não for passado nenhum argumento). Isto é equivalente a apagar todas as regras, uma por uma.

-Z, --zero [chain [rulenum]] :: Apaga os contadores de pacotes e bytes em todas as chains, ou apenas na chain de dados, ou apenas na regra dada em uma chain. É aconselhável usar a opção -L, --list para ver os contadores imediatamente antes das regras serem apagadas (veja acima).

(5)

5 o mesmo nome.

-X, --delete-chain [chain] :: Elimina uma específica chain criada pelo usuário. Não deve haver referências na chain. Se houver, você deve excluir ou substituir as regras referentes antes da chain ser excluída. A chain deve estar vazia, ou seja, não pode conter quaisquer regras. Se nenhum argumento for passado, o comando tentará apagar cada chain não embutida na tabela.

-P, --policy chain target

Define a política da chain para o alvo especificado. Veja seção TARGETS para os alvos possíveis. Apenas chains "built-in" (não definidas pelo usuário) podem ter políticas. Chains definidas pelo usuário não podem ser alvo de políticas.

-E, --rename-chain old-chain new-chain :: Muda o nome da chain especificada pelo usuário para um novo nome. Trata-se de uma perfumaria e não tem efeito sobre a estrutura da tabela.

-h :: Ajuda. Dá uma descrição (geralmente muito breve) da sintaxe do comando. Parâmetros

Os parâmetros a seguir, constituem uma especificação de regras (são utilizados como os comandos: add, delete, insert, replace e append).

[!] -p, --protocol protocol :: Especifica o protocolo da regra ou do pacote. O protocolo especificado pode ser:  tcp,  udp,  udplite,  icmp,  esp,  ah,  sctp,  all.

Ou, pode ser um valor numérico representando um destes protocolos ou um outro protocolo. Um nome de protocolo do arquivo /etc/protocols também é permitido. O argumento "!", antes do protocolo, inverte a regra. O número zero é equivalente a "all". O protocolo "all" combina todos os protocolos e é tomado como padrão quando esta opção for omitida.

[!] -s, --source address[/mask][,...] :: Especificação da origem. "Address" pode ser um nome de rede, um host, um endereço IP de rede (com "/mask", máscara), ou um endereço IP simples.

(6)

6

Os hostnames serão resolvidos apenas uma vez antes da regra ser apresentada ao kernel. Note que especificar qualquer nome a ser resolvido com uma consulta remota, como ao DNS, é uma ideia muito ruim. A máscara pode ser uma máscara de uma rede ou um número simples especificando o número no lado esquerdo da máscara de rede. Assim, uma máscara "/24" é equivalente a 255.255.255.0.

O argumento "!" antes da especificação de endereço, inverte a regra. A flag "--src" é um alias para esta opção. Vários endereços podem ser especificados, mas isso vai se expandir para várias regras (quando for acrescentado "-A") ou causará várias regras a serem excluídas (com "-D").

[!] -d, --destination address[/mask][,...] :: Especificação do destino. Ver a descrição do sinalizador "-s" (source, origem) para uma descrição detalhada da sintaxe. A flag (bandeira) "-dst" é um alias para essa opção.

-j, --jump target :: Especifica o alvo da regra, isto é, o que fazer se o pacote combinar com a regra. O alvo pode ser uma chain definida pelo usuário, pode ser um dos alvos embutidos especiais (chains que vem por padrão) que decidem o destino do pacote imediatamente ou pode ser uma extensão (ver EXTENSIONS abaixo).

Se esta opção for omitida em uma regra (e "-g" não for usado com a regra) não terá efeito sobre o destino do pacote, mas os contadores sobre a regra serão incrementados.

-g, --goto chain :: Especifica que o processamento deve continuar em uma chain especificada. Ao contrário da opção jump", não vai continuar o processamento nesta chain, mas sim na chain que chamou via "--jump".

[!] -i, --in-interface name :: Nome de uma interface através da qual um pacote foi recebido (somente para pacotes que entram nas chains INPUT, FORWARD e PREROUTING). Quando o argumento "!" for utilizado antes do nome da interface, o sentido é invertido. Se o nome da interface termina em "+", então qualquer interface que começa com o mesmo nome irá corresponder. Se esta opção for omitida, qualquer nome de interface irá corresponder.

Nota do tradutor: "eth+" refere-se a eth0, eth1, eth2, etc. Ou seja, a todas as placas de rede da máquina que começam com eth. Wireless seria "wlan+".

[!] -o, --out-interface name :: Nome de uma interface através da qual um pacote vai ser enviado (para pacotes que entram nas chains OUTPUT, FORWARD e POSTROUTING). Quando o argumento "!" for utilizado antes do nome da interface, o sentido é invertido. Se o nome da interface termina em "+", então qualquer interface que começa com este nome irá corresponder. Se esta opção for omitida, qualquer nome de interface irá corresponder.

(7)

7

[!] -f, --fragment :: Significa que a regra se refere ao segundo fragmento em diante dos pacotes fragmentados. Como não há maneira de dizer as portas de origem ou destino de um tal pacote (tipo ICMP), tal pacote não irá corresponder a todas as regras especificadas.

Quando o argumento "!" precede a flag "-f", a regra só vai coincidir com o cabeçalho dos fragmentos ou dos pacotes não fragmentados.

-c, --set-counters packets bytes :: Isso permite que o administrador inicialize os contadores de pacotes e os bytes de uma regra (durante as operações INSERT, APPEND e REPLACE).

Referências

Documentos relacionados

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

QUANDO TIVER BANHEIRA LIGADA À CAIXA SIFONADA É CONVENIENTE ADOTAR A SAÍDA DA CAIXA SIFONADA COM DIÂMTRO DE 75 mm, PARA EVITAR O TRANSBORDAMENTO DA ESPUMA FORMADA DENTRO DA

A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se A espectrofotometria é uma técnica quantitativa e qualitativa, a qual se baseia no fato de que uma

“Uma vez realizada uma generalização, somente pode ser descrita como boa ou má, não como certa ou errada, uma vez que as alterações introduzidas na informação têm

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

Os caçadores tinham estendido uma grossa corda ligada a uma rede, no caminho por onde o leão costumava passar, de maneira que, quando o leão tropeçou na corda, a rede caiu-- lhe em