Olá pessoal! Com esse post eu vou iniciar um curso sobre Firewall no Linux. Nesta primeira parte eu mostro os conceitos, pacotes necessários e tipos de Firewall.
O que é Firewall?
Uma proteção da rede local, ou seja: isola a rede da internet e tem a função de verificar o que entra e sai da rede local, bloqueando tráfegos de dados proibidos, através de regras.
Podemos dividir um Firewall, filtro de pacotes e servidor proxy, como apresentarei logo mais.
No Linux utilizamos um pacote de dados chamado IPTABLES, para configurar e gerenciar o Firewall… normalmente já vem instalado na maioria das distribuições do Linux, mas caso não venha, podemos instalar através do comando: apt-get install iptables
OBS: Este comando é de instalação no Ubuntu, mas segue a mesma lógica em outras distribuições.
O que é IPTABLES?
Um serviço que trabalha com filtragem de pacotes através de tabelas. A filtragem de pacotes é um dos principais mecanismos que mediante regras definidas pelo administrador em um firewall, permite ou não a passagem de datagramas IP em uma rede. Poderíamos filtrar pacotes para impedir o acesso a vários serviços da rede.
O modelo mais simples de Firewall é conhecido como o dual homed system, ou seja, um sistema que interliga duas redes distintas. Esse sistema possui um servidor com duas placas de rede, que faz com que os usuários possam falar entre si. O exemplo clássico é um firewall entre uma Intranet e a Internet.
Podemos dividir o IPTABLES entre as tabelas FILTER, NAT e MANGLE.
- Tabela Filter: Verifica todo o fluxo de dados da rede e é dividida em três partes – INPUT, OUTPUT e FORWARD. Esta tabela verifica nas regras do firewall o que pode ou não ser transmitido, mas não bloqueia nada.
Ex:
1 2 3 4 5 6 7 |
# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination |
- Tabela NAT: É utilizada para alterar o endereçamento ou porta de destino de um determinado pacote e é dividida : PREROUTING (pré-roteamento), POSTROUTING (pós-roteamento) e OUTPUT (saída).
O prerouting identifica a origem do pacote, IP , nome da máquina e para onde vai e altera o roteamento para o servidor. O posrouting identifica a porta ou IP de destino e altera para o servidor e o output analisa e libera a saída do pacote.
Ex:
1 2 3 4 5 6 7 |
# iptables -L -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination |
- Tabela Mangle: Define e memoriza as regras que o firewall deve seguir. Exemplo: pacotes que podem ou não sair e entrar.
Ex:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
iptables -h iptables v1.3.3 Usage: iptables -[AD] chain rule-specification [options] iptables -[RI] chain rulenum rule-specification [options] iptables -D chain rulenum [options] iptables -[LFZ] [chain] [options] iptables -[NX] chain iptables -E old-chain-name new-chain-name iptables -P chain target [options] iptables -h (print this help information) Commands: Either long or short options are allowed. --append -A chain Append to chain --delete -D chain Delete matching rule from chain --delete -D chain rulenum Delete rule rulenum (1 = first) from chain --insert -I chain [rulenum] Insert in chain as rulenum (default 1=first) --replace -R chain rulenum Replace rule rulenum (1 = first) in chain --list -L [chain] List the rules in a chain or all chains --flush -F [chain] Delete all rules in chain or all chains --zero -Z [chain] Zero counters in chain or all chains --new -N chain Create a new user-defined chain --delete-chain -X [chain] Delete a user-defined chain --policy -P chain target Change policy on chain to target --rename-chain -E old-chain new-chain Change chain name, (moving any references) Options: --proto -p [!] proto protocol: by number or name, eg. `tcp' --source -s [!] address[/mask] source specification --destination -d [!] address[/mask] destination specification --in-interface -i [!] input name[+] network interface name ([+] for wildcard) --jump -j target target for rule (may load target extension) --match -m match extended match (may load extension) --numeric -n numeric output of addresses and ports --out-interface -o [!] output name[+] network interface name ([+] for wildcard) --table -t table table to manipulate (default: `filter') --verbose -v verbose mode --line-numbers print line numbers when listing --exact -x expand numbers (display exact values) [!] --fragment -f match second or further fragments only --modprobe=<command> try to insert modules using this command --set-counters PKTS BYTES set the counter during insert/append [!] --version -V print package version. |
Esse foi mais um post do Blog do Curso de Hardware Microcamp.
Faça um curso completo na melhor escola do Brasil >> microcamp.com.br