Pára configurar um firewall ou firewall no Linux, podemos fazer uso de iptables, uma ferramenta poderosa que parece esquecida por muitos usuários. Embora existam outros métodos, como ebtables e arptables para filtrar o tráfego no nível do link, ou Squid no nível do aplicativo, o iptables pode ser muito útil na maioria dos casos, implementando boa segurança em nosso sistema no nível de tráfego e transporte da rede.
O kernel Linux implementa iptables, uma parte que cuida da filtragem de pacotes e que neste artigo ensinamos você a configurar de forma simples. Simplificando, o iptables identifica quais informações podem ou não entrar, isolando sua equipe de ameaças potenciais. E embora existam outros projetos como Firehol, Firestarter, etc., muitos desses programas de firewall usam iptables ...
Pois bem, Vamos trabalhar, com exemplos você entenderá tudo melhor (para esses casos é necessário ter privilégios, então use sudo antes do comando ou torne-se root):
A maneira geral de usar iptables criar uma política de filtro é:
IPTABLES -ARGUMENTS I / O ACTION
Onde -ARGUMENT está o argumento que usaremos, normalmente -P para estabelecer a política padrão, embora existam outras como -L para ver as políticas que configuramos, -F para excluir uma política criada, -Z para redefinir os contadores de bytes e pacotes, etc. Outra opção é -A para adicionar uma política (não por padrão), -I para inserir uma regra em uma posição específica e -D para excluir uma determinada regra. Haverá também outros argumentos para apontar para os protocolos -p, –sport source port, –dport para a porta de destino, -i interface de entrada, -o interface de saída, -s endereço IP de origem e -d endereço IP de destino.
Além disso, I / O representaria se a política aplica-se à entrada INPUT, à saída OUTPUT ou é um redirecionamento de tráfego FORWARD (existem outros como PREROUTING, POSTROUTING, mas não os utilizaremos). Por fim, o que chamei de ACTION pode assumir o valor ACCEPT se aceitarmos, REJECT se rejeitarmos ou DROP se eliminarmos. A diferença entre DROP e REJECT é que quando um pacote é rejeitado com REJECT, a máquina que o originou saberá que foi rejeitado, mas com DROP atua silenciosamente e o invasor ou origem não saberá o que aconteceu, e não saber se temos um firewall ou a conexão falhou. Existem também outros como o LOG, que mandam um follow-up do syslog ...
Para modificar regras, podemos editar o arquivo iptables com nosso editor de texto preferido, nano, gedit, ... ou criar scripts com regras (se quiser substituí-los, você pode fazer isso colocando um # na frente da linha para que seja ignorado como um comentário) por meio do console com comandos, conforme explicaremos aqui. No Debian e derivados, você também pode usar as ferramentas iptables-save e iptables-restore ...
A política mais extrema é bloquear tudo, absolutamente todo o tráfego, mas isso vai nos deixar isolados, com:
iptables -P INPUT DROP
Para aceitar tudo:
iptables -P INPUT ACCEPT
Se quisermos isso todo o tráfego de saída de nossa equipe é aceito:
iptables -P OUTPUT ACEPT
La outra ação radical seria apagar todas as políticas do iptables com:
iptables -F
Vamos para regras mais concretasImagine que você tenha um servidor web e, portanto, o tráfego pela porta 80 deve ser permitido:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
E se além da regra anterior, queremos uma equipe com iptables ser visto apenas por computadores em nossa sub-rede e isso passa despercebido por uma rede externa:
iptables -A INPUT -p tcp -s 192.168.30.0/24 --dport 80 -j ACCEPT
Na linha anterior, o que estamos dizendo ao iptables é adicionar uma regra -A, para que as entradas INPUT, e o protocolo TCP, através da porta 80, sejam aceitos. Agora imagine que você quer que eu navegação na web é rejeitada para máquinas locais passando pela máquina executando iptables:
iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 DROP
Acho que o uso é simples, levando em consideração para que serve cada parâmetro do iptables, podemos adicionar regras simples. Você pode fazer todas as combinações e regras que imaginarmos ... Para não me estender mais, é só acrescentar mais uma coisa, que se a máquina for reiniciada, as políticas criadas serão deletadas. As tabelas são reiniciadas e permanecerão como antes, portanto, uma vez que você tenha bem definido as regras, se você quiser torná-los permanentes, você deve fazê-los iniciar a partir de /etc/rc.local ou se você tiver um Debian ou derivados, use as ferramentas que nos são fornecidas (iptables-save, iptables-restore e iptables-apply).
Este é o primeiro artigo que vejo sobre IPTABLES que, embora denso -requer um nível de conhecimento médio-, VAI DIRETAMENTE PARA O GRÃO.
Recomendo a todos que o utilizem como um "manual de referência rápida", pois está muito bem condensado e explicado. 8-)
Eu gostaria que você falasse em um artigo futuro sobre se a mudança para o systemd na maioria das distribuições Linux, afeta de alguma forma a segurança do Linux em geral, e se esta mudança é para melhor ou pior no futuro e nas distribuições Linux. Eu também gostaria de saber o que se sabe sobre o futuro do devuan (debian sem systemd).
Muito obrigado por fazer artigos muito bons.
Você poderia fazer um artigo explicando a mesa de mangle?
Bloquear apenas o Facebook?