Permitir o acesso ao servidor Ubuntu apenas de IP's específicos

4

Como posso permitir que apenas o meu próprio ip faça o login no meu servidor Ubuntu? Ontem recebi 1500 tentativas de login não desejadas.

Permitir apenas o meu próprio IP, pode ser o mais seguro contra hackers? Eu uso o Postfix apenas para envio, de modo que não precisa permitir conexões de entrada.

    
por batersi 28.04.2015 / 15:10

2 respostas

2

Se você não usar (ou não quiser usar) ufw e precisar de uma resposta iptables , aqui está a essência de como fazer isso. Observe que você também precisa se adaptar ao IPv4 e ao IPv6.

IPv4

Primeiro, examine suas regras iptables ( iptables -L -n ). Supondo uma instalação padrão, você não terá regras.

iptables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT é a sintaxe geral para adicionar uma regra ao final da tabela INPUT , declarando especificamente que "Eu quero permitir o endereço IP de origem (e o intervalo de IPs, se um sufixo CIDR for fornecido - é não necessário) acesso ao meu servidor quando as solicitações chegam a porta PORTNUM via TCP ". Se você quiser permitir somente um endereço IP, omita a parte /CIDR com SOURCEIP .

Se você tiver alguma regra na tabela INPUT para negar acesso (no final), precisará usar iptables -I INPUT RULENUMBER (onde RULENUMBER é o número da linha na tabela INPUT em que você deseja inserir esta regra ).

Certifique-se, no entanto, de adicionar regras como estas:
iptables -A INPUT -i lo -j ACCEPT - Aceite qualquer coisa sobre o loopback do host local (127.0.0.1, etc.)
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - Aceite o tráfego relacionado a conexões já estabelecidas (necessário para garantir que a comunicação volta ao seu servidor e ao seu cliente remoto)

Depois que a configuração estiver concluída, você precisará adicionar uma regra para negar todas as outras conexões. Essa regra seria essa, adicionada ao final da tabela INPUT :
iptables -A INPUT -j REJECT --reject-with icmp-host-unreachable .

IPv6

Primeiro, examine suas regras ip6tables ( ip6tables -L -n ). Supondo uma instalação padrão, você não terá regras.

ip6tables -A INPUT -s SOURCEIP/CIDR -p tcp --dport PORTNUM -j ACCEPT é a sintaxe geral para adicionar uma regra ao final da tabela INPUT , declarando especificamente que "Eu quero permitir o endereço IP de origem (e o intervalo de IPs, se um sufixo CIDR for fornecido - é não necessário) acesso ao meu servidor quando as solicitações chegam a porta PORTNUM via TCP ". Se você quiser permitir somente um endereço IP, omita a parte /CIDR com SOURCEIP .

Se você tiver alguma regra na tabela INPUT para negar acesso (no final), precisará usar ip6tables -I INPUT RULENUMBER (onde RULENUMBER é o número da linha na tabela INPUT em que você deseja inserir esta regra ).

Certifique-se, no entanto, de adicionar regras como estas:
ip6tables -A INPUT -i lo -j ACCEPT - Aceite qualquer coisa sobre o loopback do host local (127.0.0.1, etc.)
ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT - Aceite o tráfego relacionado a conexões já estabelecidas (necessário para garantir que a comunicação volta ao seu servidor e ao seu cliente remoto)

Além disso, com o IPv6, você precisa aceitar praticamente todos os pacotes ICMPv6, já que é muito mais necessário do que no IPv4. Isso alcançaria isso: ip6tables -A INPUT -p ipv6-icmp -j ACCPET

Depois que a configuração estiver concluída, você precisará adicionar uma regra para negar todas as outras conexões. Essa regra seria essa, adicionada ao final da tabela INPUT :
ip6tables -A INPUT -j REJECT --reject-with icmp6-addr-unreachable .

Torne essas regras persistentes (as únicas soluções do iptables precisam disso)

Hora de fazer as regras persistirem. Vamos instalar iptables-persistent . apt-get install iptables-persistent .

A instalação perguntará se você deseja salvar suas regras atuais. Diga "sim" para prompts IPv4 e IPv6. O conjunto de regras que acabamos de "adicionar" ou criado agora estará permanentemente disponível.

(Se você usar ufw em vez de iptables , não precisará instalar este pacote)

Embora ufw gerencie automaticamente o conjunto de regras para garantir que esteja na ordem correta, iptables é o modo 'sysadmin' de fazer o firewall avançado. O UFW apenas faz regras e funções fáceis - as complexas que você tem a ver com iptables ou adiciona manualmente aos arquivos de configuração da sintaxe ufw with iptables .

    
por Thomas Ward 28.04.2015 / 15:34
3

Você pode usar ufw

Quando você habilita ufw com quaisquer regras para permitir algum tráfego, tudo está em estado de negação.

sudo ufw enable

com este comando você ativará Ubuntu Firewall

Para ver o status use

sudo ufw status

Status: active

To                         Action      From
--                         ------      ----
69                         ALLOW       Anywhere
53                         ALLOW       Anywhere
22                         ALLOW       213.xxx.xxx.xxx
80/tcp                     ALLOW       194.247.xxx.xxx
21/tcp                     ALLOW       194.247.xxx.xxx
69 (v6)                    ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)

Essas regras aceitam qualquer% em port 69 , qualquer em port 53 , ssh de 213.xxx.xxx.xxx , 80 e 21 de 194.247.xxx.xxx ... e negarão qualquer outro tráfego de entrada

O comando completo para regra no ufw é

sudo ufw [--dry-run] [delete] [insert NUM]  allow|deny|reject|limit  [in|out on INTERFACE] [log|log-all] [proto protocol] [from ADDRESS [port PORT]][to ADDRESS [port PORT]]

Com base nesse modelo de regra, você pode allow from xxx.xxx.xxx.xxx on port 80 com esta regra

para host específico

sudo ufw allow proto tcp from xxx.xxx.xxx.xxx to any port 80

se você quiser permitir que alguém acesse seu servidor da web

sudo ufw allow proto tcp from any to any port 80

se você deseja permitir o acesso de uma rede específica

sudo ufw allow proto tcp from xxx.xxx.xxx.xxx/yy to any port 80

onde

xxx.xxx.xxx.xxx - representa o ip da rede

yy - representa a máscara de rede

    
por 2707974 28.04.2015 / 15:18

Tags