Configuração e exemplos fáceis de IPTables no Ubuntu 16.04

Introdução

iptablesé uma ferramenta poderosa usada para configurar o firewall integrado do kernel do Linux. Ele vem pré-instalado na maioria das distribuições do Ubuntu; no entanto, se você estiver usando uma versão personalizada do Ubuntu ou executando dentro de um contêiner, provavelmente precisará instalá-lo manualmente.

sudo apt-get install iptables iptables-persistent

Após a instalação, se você for perguntado se deseja salvar suas regras atuais, isso não importa no momento, porque você removerá ou criará novas regras posteriormente.

Dicas

Você pode usar o netcatcomando (em um computador diferente do servidor) para testar quais portas estão abertas ou fechadas.

nc -z -w5 -v SERVER_IP PORT
  • nc é o comando netcat.
  • -z basta enviar um pacote sem carga útil.
  • -w5 aguarde até 5 segundos por uma resposta.
  • -v modo detalhado.
  • Substitua SERVER_IPpelo endereço do servidor.
  • Substitua PORTpela porta que você deseja testar se estiver aberta (por exemplo 22).

No seu servidor, você pode usar o netstatcomando para ver quais portas estão ouvindo conexões no momento.

sudo netstat -tulpn

Nota: Embora netstatseja útil encontrar as portas com as quais você deseja trabalhar, você deve estar ciente dos aplicativos que você instalou no momento no servidor e quais portas estão atendendo, não é necessário permitir todas as portas encontradas na netstatsaída .

Sintaxe

sudo iptables -A INPUT -p tcp -m tcp --dport 22 --m geoip --src-cc PE -j ACCEPT
  • -A INPUTadicionar uma regra para a INPUTcadeia, uma cadeia é um conjunto de regras, as que usamos mais sobre este guia vai ser INPUT, OUTPUTe PREROUTING.
  • -p tcpdefinido tcpcomo o protocolo ao qual esta regra se aplicará, você também pode usar outros protocolos como udp, icmpou all.
  • -m tcpuse o tcpmódulo iptablessuporta recursos adicionais por meio de módulos, alguns dos quais já vêm pré-instalados com iptablesoutros, como o geoipmódulo.
  • --dport 22os comandos iniciados com --indicam opções adicionais para o módulo usado anteriormente; nesse caso, tcpsolicitaremos que o módulo se aplique apenas à porta 22.
  • -m geoipuse o geoipmódulo Isso limitará os pacotes por país (mais informações na etapa 5).
  • --src-cc PEdiga ao geoipmódulo para limitar os pacotes recebidos aos que vêm do Peru. Para obter mais códigos de países, procure ISO 3166 country codesna internet.
  • -j ACCEPTo -jargumento diz iptableso que fazer se um pacote corresponder às restrições especificadas nos argumentos anteriores. Neste caso, será ACCEPTaqueles pacotes, outras opções são REJECT, DROPe muito mais. Você pode encontrar mais opções pesquisando iptables jump targetsna internet.

1. Noções básicas

Liste todas as regras.

sudo iptables -L

Liste todos os comandos que foram usados ​​para criar as regras usadas atualmente, úteis para editar ou excluir regras.

sudo iptables -S

Para excluir uma regra específica, escolha uma regra sudo iptables -Se substitua -Apor -D.

# -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

sudo iptables -D INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Liste todas as regras numeradas na INPUTcadeia.

sudo iptables -L INPUT --line-numbers

Exclua uma regra numerada.

sudo iptables -D INPUT 2

Para limpar todas as regras.

sudo iptables -F

Aviso: você pode perder a conexão se conectado por SSH .

Limpe apenas regras da OUTPUTcadeia.

sudo iptables -F OUTPUT

2. Crie regras iniciais

Permitir SSHna eth0interface

sudo iptables -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
  • -i eth0 aplique a regra a uma interface específica para permitir que, a partir de qualquer interface, remova esse comando.

Limitar pacotes recebidos a um IP específico (ou seja 10.0.3.1/32).

sudo iptables -A INPUT -i eth0 -s 10.0.3.1/32 -p tcp -m tcp --dport 22 -j ACCEPT
  • -s 10.0.3.1/32 especifica um IP / sub-rede da qual permitir conexões.

Defina regras de cadeia padrão.

Aviso: antes de continuar, verifique se você aplicou as regras SSH corretas se estiver trabalhando em um servidor remoto .

sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP 
sudo iptables -P OUTPUT ACCEPT 
  • -P INPUT DROP nega todos os pacotes recebidos (ou seja, ninguém será capaz de se conectar aos servidores em execução, como Apache, SQL, etc).
  • -P FORWARD DROP nega todos os pacotes encaminhados (ou seja, quando você estiver usando seu sistema como roteador).
  • -P OUTPUT ACCEPTpermite todos os pacotes de saída (ou seja, quando você executa uma HTTPsolicitação).

Permitir todo o tráfego na interface de loopback ( recomendado ).

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

3. Torne as regras persistentes

Salve as iptablesregras atuais .

sudo netfilter-persistent save
sudo netfilter-persistent reload

Se você estiver executando dentro de um contêiner, o netfilter-persistentcomando provavelmente não funcionará; portanto, é necessário reconfigurar o iptables-persistentpacote.

sudo dpkg-reconfigure iptables-persistent

4. Permitir conexões de saída

Permitir consultas DNS.

sudo iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT

Use o statemódulo para permitir RELATEDe ESTABLISHEDenviar pacotes.

sudo iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Permita as portas desejadas; neste caso, HTTPportas.

sudo iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT

Mais portas que você pode querer usar.

  • FTP: tcp na porta 21
  • HTTPS: tcp na porta 443
  • DHCP: udp na porta 67
  • NTP: udp na porta 123

Nota: Se você deseja permitir apt-get, pode ser necessário permitir FTPeHTTPS .

Permitir o tráfego retornado apenas para RELATEDe já ESTABLISHEDconexões ( recomendado porque às vezes é necessária comunicação bidirecional).

sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Outras regras úteis

Permitir solicitações de ping de fora.

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Encaminhar tráfego na eth0porta 2200para 10.0.3.21:22(útil se você deseja expor um servidor SSH que está sendo executado dentro de um contêiner).

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-destination 10.0.3.21:22

Se você fizer login com sucesso no servidor usando SSH, uma conexão persistente será criada (ou seja, nenhuma conexão nova, mesmo se você estiver conectado por mais de 1 hora). Se você falhar e tentar fazer login novamente, uma nova conexão será criada. Isso bloqueará tentativas contínuas de login no SSH, limitando novas conexões por hora.

sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 3600 --hitcount 4 -j DROP

Redirecione todas as solicitações de porta 443em porta 4430(útil se você desejar ligar à porta 443sem root).

sudo iptables -t nat -A PREROUTING -i ens3 -p tcp --dport 443 -j REDIRECT --to-port 4430
sudo iptables -A INPUT -p tcp -m tcp --dport 4430 -m geoip --src-cc PE -j ACCEPT
  • ens3 a interface de rede.
  • -m geoip módulo de bloco do país (consulte a etapa 5).

Aviso: Não use lo, o sistema operacional descartará todos os pacotes redirecionados para a interface de loopback .

5. Permitir ou bloquear países inteiros

5.1 Instalação xtables-addons

Você pode instalar o xtables-addonsmódulo usando vários métodos, fique à vontade para usar o método de instalação que funciona melhor para você.

  • Instale usando apt-get.

    sudo apt-get install xtables-addons-common
    
  • Instale usando module-assistant.

    sudo apt-get install module-assistant xtables-addons-source
    sudo module-assistant --verbose --text-mode auto-install xtables-addons
    
  • Instale a partir da fonte.

    sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
    git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
    cd xtables-addons
    ./autogen.sh
    ./configure
    make
    sudo make install
    

Crie um banco de dados "países".

sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv

Reinicie seu sistema.

sudo reboot

Após a xtables-addonsinstalação bem-sucedida, após a primeira reinicialização, execute depmodcaso contrário, o bloqueio do país não funcionará corretamente (isso é necessário apenas pela primeira vez).

sudo depmod 

Crie um script em /etc/cron.monthly/geoip-updaterpara atualizar o geoipbanco de dados mensalmente.

#!/usr/bin/env bash
# this script is intended to run with sudo privileges

echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip

echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl

echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv

echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater

Tornar /etc/cron.monthly/geoip-updaterexecutável.

sudo chmod +x /etc/cron.monthly/geoip-updater

5.2 Exemplos de regras

_Nota: Se você estiver recebendo um iptables: No chain/target/match by that nameerro ao tentar aplicar uma geoipregra, é possível que xtables-addonsnão tenha sido instalado corretamente. Tente outro método de instalação.

Bloqueie todos os pacotes recebidos da China, Hong Kong, Rússia e Coréia.

sudo iptables -A INPUT -m geoip --src-cc CN,HK,RU,KR -j DROP

Permitir pacotes recebidos na porta 80de qualquer lugar, exceto os países acima.

sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

Permita pacotes recebidos na ens3interface 22apenas na porta do Peru (fique à vontade para escolher o código do país do qual deseja aceitar pacotes, por exemplo, USpara os Estados Unidos).

sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT

Permitir pacotes recebidos na porta 443apenas do Peru.

sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc PE -j ACCEPT


Leave a Comment

A IA pode lutar contra o aumento do número de ataques de ransomware

A IA pode lutar contra o aumento do número de ataques de ransomware

Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane

ReactOS: Este é o futuro do Windows?

ReactOS: Este é o futuro do Windows?

ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

Fique conectado por meio do aplicativo WhatsApp Desktop 24 * 7

O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+

Como a IA pode levar a automação de processos ao próximo nível?

Como a IA pode levar a automação de processos ao próximo nível?

Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

A atualização do suplemento do macOS Catalina 10.15.4 está causando mais problemas do que resolvendo

Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

13 Ferramentas de Extração de Dados Comerciais de Big Data

O que é um sistema de arquivos de registro no diário e como ele funciona?

O que é um sistema de arquivos de registro no diário e como ele funciona?

Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true

Singularidade tecnológica: um futuro distante da civilização humana?

Singularidade tecnológica: um futuro distante da civilização humana?

À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1

O impacto da inteligência artificial na saúde 2021

O impacto da inteligência artificial na saúde 2021

A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA ​​na área da saúde ainda está crescendo dia a dia.