Como posso bloquear todas as portas, exceto algumas?

3

Estou tentando usar iptables , mas não entendo a documentação, mesmo assim, já me tranquei do servidor duas vezes enquanto tentava implementá-la.

Estas são as regras simples que eu quero implementar:

  • Permitir as portas 80, 6667 e 6697 para todos
  • Permitir a porta 22 apenas para o meu IP, por exemplo 10.10.10.10

Por favor alguém pode me ajudar a implementar essas regras simples, sem me prender?

    
por user6888062 02.12.2016 / 09:49

3 respostas

3

Eu aconselharia jogar diretamente com iptables se você não estiver pronto para aprender o básico sobre redes, TCP (ICMP / UDP / SCTP ...) / IP, o netfilter do Linux e como fazer o firewall apropriado primeiro.

Aqui, como você está no Debian, eu instalaria algo como ufw , uma camada de gerenciamento muito simples em cima de iptables .

Define uma política padrão de ACCEPT para o tráfego de saída e DROP para o tráfego de entrada ou de encaminhamento. Ele cuidará de não fotografar em seus pés, não bloqueando a necessidade de tipos de tráfego ICMP / DHCP / broadcast / multicast e lidará com IPv4 e IPv6 conforme necessário.

Então, tudo o que resta para você fazer é abrir os buracos para os serviços que você deseja. Alguns pacotes também instalam arquivos em /etc/ufw/applications.d/ para ajudá-lo a analisar por aplicativo, em vez de precisar especificar as portas manualmente (você também pode criar suas próprias).

ufw app list

fornece uma lista desses aplicativos suportados. Então você pode fazer:

ufw allow from 10.10.10.10 app OpenSSH
ufw allow from any app WWW
ufw allow ircd/tcp # by service name (from /etc/services...)
ufw allow 6697/tcp # by explicit port number
ufw enable

Você pode executar iptables-save para ver quais regras ele gerou. Ele também ajustará algumas configurações da pilha de IP. Veja também a configuração extra em /etc/ufw .

    
por 02.12.2016 / 11:22
3

Use a tabela de filtros em iptables e adicione a regra desejada primeiro liberar todas as regras na tabela de filtros em iptables :

sudo iptables -t filter -F

adicione a regra para permitir a conexão ESTABLISHED, RELACIONADA:

sudo iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

depois, para permitir que as portas 80, 6667 e 6697 para tcp sejam adicionadas a todos:

sudo iptables -t filter -A INPUT -p tcp -m multiports --dports 80,6667,6697 -j ACCEPT

e para permitir a porta 22 apenas para o seu ip add:

sudo iptables -t filter -A INPUT -s <your ip address> -p tcp --dport 22 -J ACCEPT

depois, para bloquear qualquer outra coisa, adicione:

sudo iptables -t filter -A INPUT -j DROP

FEITO.

    
por 02.12.2016 / 10:19
1

Se você estiver interessado em aprender como usar o iptables, eu recomendaria não tentar configurá-lo em um servidor, mas instalar o iptables em uma máquina local (por exemplo, uma VM ou sua laptop) e experimentando lá. Dessa forma, se você cometer um erro, você não ficará trancado fora do seu sistema.

Pessoalmente, mesmo depois de quinze anos administrando servidores Linux e escrevendo manualmente scripts do iptables, eu nunca atualizo a configuração do firewall, a menos que eu tenha uma maneira de reinicializar imediatamente o servidor caso eu cometa um erro (seja através de um sistema KVM, painel de controle do hoster, ou por ser capaz de caminhar fisicamente até a máquina). Afinal de contas, erros são sempre possíveis, e você não quer se desligar do seu próprio servidor por sete horas por causa de um simples erro de digitação.

    
por 02.12.2016 / 11:34