É um dispositivo de segurança (podendo ser um ser um hardware ou software) que monitora e controla o tráfego de rede, permitindo ou bloqueando ( o tráfego de pacotes de dados ou em portas) com base em regras predeterminadas, ele atua como uma barreira de segurança.
Escolher uma distribuição Linux e uma solução gratuita de Firewall para cumprir os requisitos:
- Bloqueio de site adulto
- Bloqueio de site específico
- Bloqueio de ataque DDOS
- Fazer a configuração de rede local
Aplicativo para simular uma máquina virtual: VirtualBox
Distribuição linux: Debian
Firewall: Iptables
Solução de Firewall que monitora o tráfego de rede decidindo quais conexões/ pacotes serão permitidos e/ou bloqueados, sua particularidade é que ele faz isso utilizando tabelas com conjunto de regras chamadas cadeias (chains).
Filtrar o tráfego de pacotes com base em regras definidas.
usada para realizar a tradução de endereços de rede, geralmente usada para redirecionamento.
usada para modificar os cabeçalhos dos pacotes. É usada principalmente para marcação de pacotes para posterior manipulação por outras regras ou ferramentas.
Essa tabela é usada para controle e rastreamento de conexões.
Usada para Manipular pacotes de entrada antes de qualquer roteamento, esta cadeia é utilizada logo que um pacote entra no sistema, normalmente usada para alterar o destino de pacotes (Destination NAT ou DNAT) na tabela nat.
Controla o tráfego de pacotes que estão tentando entrar no sistema.
Controla o tráfego que está passando pelo sistema, mas não é destinado a ele, e o sistema está atuando como um roteador, repassando pacotes de uma rede para outra.
Controla o tráfego de pacotes que estão tentando sair do sistema, sempre que o sistema envia um pacote de dados para fora, ele passa por esta cadeia.
Usada para manipular pacotes de saída após o roteamento ter sido decidido sem antes sair do sistema, também utilizada na tabela nat.
iptables -A (chain) -i (interface) -p (protocol) (tcp/udp) -s (source) --dport (port) -j (target)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P INPUT DROP
iptables -A INPUT -s 203.0.113.0 -j DROP
iptables -A INPUT -j LOG --log-prefix "Pacote descartado: " --log-level 4
iptables -A INPUT -s 203.0.113.0 -j DROP
Solução dos desafios propostos
A forma mais rápida de fazer isso é utilizando de servidores DNS de que já possuem esse bloqueio, os mais utilizados são o Family shield e o da cloudflare:
Basta configurar o DNS direto na placa de rede do computador, dessa forma:
mas utilizando o iptables o fica dessa forma:
Para cumprir com esse requisito, após muitas pesquisas consegui achar um artigo que fala sobre bloqueio a determinados serviços com o Iptables:
De exemplo iremos bloquear o acesso ao TikTok
Segue os comandos:
iptables -I FORWARD -m string --algo bm --string "tiktok.com" -j DROP
iptables -I OUTPUT -m string --algo bm --string "tiktok.com" -j DROP
para bloquear o acesso a outros serviços basta trocar o nome dentro das aspas duplas, exemplo de bloqueio do facebook:
iptables -I FORWARD -m string --algo bm --string "facebook.com" -j DROP
iptables -I OUTPUT -m string --algo bm --string "facebook.com" -j DROP
Peculiaridade: Se no navegador já tenha acessado serviço antes de aplicar as regras, o bloqueio não irá funcionar, entretanto isso é facilmente resolvido apagando o histórico do navegador, isso ocorre devido a memória cache do navegador.
Vamos lá, como o Iptables atuaria como um firewall na rede?
A ideia da utilização de um firewall seria de que todo o tráfego da rede passe por ele antes de ir para a rede interna ou seja encaminhado para a internet. No meu exemplo optei por utilizar uma VM, então eu teria uma máquina como cliente e um servidor que estaria hospedando o meu firewall, a topologia nesse caso ficaria assim:
o meu servidor deverá ter duas placas de rede uma para se comunicar com a rede interna (Lan | com ip fixo) e outra para se comunicar com a rede externa (Wan | internet | DHCP ativo).
No VirtualBox após habilitar a segunda placa de rede, é necessário configura-las a LAN como Host only e a WAN como bridge.
Também há a necessidade de realizar algumas configurações no servidor linux, são elas:
Após essas configurações no servidor vamos partir para a máquina do cliente, na configuração de rede iremos configurar o gateway com o IP do servidor, a marcara de sub-rede como pardrão 255.255.255.0
e o IP como um endereço dentro da faixa especificada.