Este é o meu /etc/sysconfig/iptables
:
Possui duas portas abertas 80 apache e 22 para ssh.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
Para a porta 22 (SSH), quero garantir que ninguém possa se conectar a essa porta, exceto por um endereço IP específico.
exemplo ip:
1.2.3.4
Por favor, desconsidere qualquer supervisão / preocupação em relação a se o meu ip mudar e eu não puder mais fazer o SSH no meu servidor.
iptables
suporta inversão com o operador bang, caso você queira fazer uma segmentaçãoDROP
. Exemplo:iptables -I INPUT -p tcp ! -s <permittedIP> -j DROP
DROP
não são realmente necessários, você pode simplesmente definir a política padrão no firewalliptables -P INPUT DROP
e deixar para lá. Você provavelmente também deseja fazê-los como um acréscimo, se assim for, caso contrário, todo o tráfego será capturado pelaDROP
e nunca alcançará suaACCEPT
regra.iptables -I INPUT 3 -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
eiptables -I INPUT 3 -p udp -s 0.0.0.0/0 --dport 53 -j DROP
"3" após INPUT significa inserir como regra 3 de entrada (supondo que você esteja inserindo dois ACEITOS, caso contrário, se apenas um ACEITAR usar o "2" para INPUT), #-I
irá inserir as novas regras do iptables na parte superior. Como tal, você pode acabar inserindo sua gota antes de permitir. Sugiro usar em-A
vez dissoEmbora eu recomende o uso de chaves SSH, vou lhe dar uma explicação.
Você não precisa usar as tabelas IP para o que está tentando alcançar, existem várias maneiras. Esta é a maneira IPtables:
[YOUR_HOME_IP]
= O seu IP residencial (bastante direto)[SSH_PORT]
= A porta na qual você executa o SSH (por padrão 22)Isso garante que ninguém, exceto o seu IP, possa efetuar login no SSH.
Existe outra maneira, que é adicionar algo ao
sshd_config
.Adicione o seguinte:
Isso permite que você efetue login no SSH como
root
usuário do seu IP sem solicitar uma senha.Lembre-se de que um cronjob com
pode ser inteligente, para que você não fique bloqueado no servidor com SSH (o cronjob redefinirá as tabelas de IP para que você tenha acesso novamente). Se você ainda tiver acesso, poderá remover o cronjob e configurar suas tabelas de IP novamente.
fonte
iptables
em primeiro lugar? Alguma forma de acesso fora da banda é o método usual.knockd
é outro.at
faz isso.Without-Password
significa que a autenticação por senha não é permitida, então você terá que usar a autenticação por chave SSH. Na verdade, é um nome pouco claro para esse método de autenticação. Mas isso não significa que você não precisa de uma senha para fazer login como root. No entanto, um método mais seguro é o de definirPermitRootLogin no
e utilizar uma conta sudo diferente para o login, como raiz é um alvo comumOutras respostas estão sendo
iptables -I
usadas em seus exemplos, o que geralmente não é o que você deve usar.O iptables executará a primeira regra que corresponder, portanto a ordem das regras é muito importante.
-I
é o comando "inserir" e deve ser usado com um parâmetro de índice para especificar onde uma determinada regra pertence à lista.-A
é o comando "acrescentar", que adicionará a regra ao final da lista.Em algumas distrobuções (talvez todas), o uso
-I
sem um parâmetro de índice adicionará a regra ao índice um, tornando-a a primeira regra verificada. Nesse cenário, se o último comando que você executar foriptables -I INPUT -s tcp 0.0.0.0/0 -j DROP
, o iptables eliminará todo o tráfego, independentemente de você ter ou nãoACCEPT
regras mais tarde na cadeia.Aqui está um exemplo de como configurar uma regra que permite apenas SSH a partir de um único IP:
Começando sem regras:
Adicione uma nova regra "allow SSH from 1.2.3.4":
#>iptables -A INPUT -p tcp -s 1.2.3.4 --dport 22 -j ACCEPT
Bloqueie o SSH de todos os outros IPs:
#>iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j DROP
Agora sua cadeia de entrada será semelhante a:
Mais tarde, se você precisar colocar um segundo IP na lista de permissões, use o
-I
parâmetro para colocá-lo antes da regra da lista negra.#>iptables -I INPUT 2 -p tcp -s 4.3.2.1 --dport 22 -j ACCEPT
Observe que o uso
-I INPUT 2
da nova regra como regra número 2 e a regra DROP foram adicionadas ao número 3.fonte