Como faço para desligar as portas remotamente sem me desligar?

2

Eu tenho um servidor Ubuntu 11.04 em um local remoto em outro continente, então não tenho acesso físico a ele. Eu só interajo com ele por ssh (e scp ), e pretendo interagir sempre com isso dessa maneira.

Por motivos de segurança, quero garantir que absolutamente todas as portas do servidor estejam fechadas, exceto ssh .

Meu entendimento ainda é vago, apesar de ter tentado encontrar instruções na web. O que eu tenho recolhido até agora é que eu preciso "liberar" o "iptables", e também que eu preciso editar alguns arquivos ( /etc/hosts , talvez?), E reinicie a máquina.

Obviamente, porém, eu quero ser muito cuidadoso com isso, porque se eu fizer isso errado, eu poderia acabar acidentalmente desligando a porta ssh, tornando o servidor inacessível para mim. Se isso acontecer, tenho que ir ao administrador do servidor, que irá reinstalar o servidor e tirar sarro de mim no processo.

Eu não sou um guru de administração de servidores, estou procurando estabelecer um conjunto de etapas à prova de erros antes de fazer isso.

Então, como faço para desligar todas as portas enquanto ainda preservo meu acesso?

Pergunta bônus: Enquanto faço isso, posso e posso alterar a ssh port de 22 para uma não-padrão? Isso realmente faz diferença?

    
por Questioner 27.04.2012 / 08:00

1 resposta

5

Primeiro, escreva um pequeno script para liberar as regras do iptables:

#!/bin/bash
echo "Stopping firewall and allowing everyone..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

(Você provavelmente não precisa dos comandos 'nat' e 'mangle'). Chame de 'flush.sh' e coloque o script no diretório '/ root'. Lembre-se de 'chmod + x flush.sh'.

Teste o script adicionando uma regra de iptables inofensiva, como

iptables -A INPUT -p tcp -j ACCEPT

e, em seguida, executando o script a partir da linha de comando. Verifique se a regra que você adicionou desapareceu.

Adicione o script ao crontab do root para executar a cada dez minutos:

*/10 * * * * /root/flush.sh

Adicione novamente a regra iptables inofensiva que você usou para testar o script. Aguarde dez minutos e verifique se sua tarefa do cron foi executada com êxito e removeu a regra.

Neste ponto, você deve poder depurar seu conjunto de regras iptables com a rede de segurança flush.sh em execução a cada dez minutos. Quando terminar de depurar suas regras, comente a linha no crontab que executa o script flush.sh.

Onde você coloca suas regras é um pouco dependente da distribuição. Para o Ubuntu, dê uma olhada em este link . No final, você verá duas opções para configurar permanentemente as regras de firewall - / etc / network / interfaces e usando a configuração do Network Manager. Como você está executando um servidor, a primeira opção provavelmente é melhor.

Você não deve precisar reinicializar para alterar ou liberar suas regras de iptables, a menos que você se bloqueie.

É melhor configurar o sshd para permitir somente o login de raiz usando autenticação de chave pública em vez de senha.

Se você tiver um gateway seguro disponível com um endereço IP fixo, como um servidor em seu escritório, em que você possa fazer login de qualquer lugar, seria bom ter uma regra iptables no servidor remoto para permitir o SSH somente desse gateway .

A alteração da porta SSH de 22 para outra é de valor muito limitado, pois a maioria dos scanners de portas encontrará a nova porta SSH rapidamente.

    
por 27.04.2012 / 12:27