IPtables bloqueando site permitindo apenas SSH

4

Escrevi meu primeiro arquivo de regras de IPtables para tentar proteger meu servidor em todas as portas, exceto o SSH e as portas necessárias para a Web.

Isso é o que eu sugeri:

i=/sbin/iptables

# Flush all rules
$i -F
$i -X

# Setup default filter policy
$i -P INPUT DROP
$i -P OUTPUT DROP
$i -P FORWARD DROP

# Allow unlimited traffic on loopback
$i -A INPUT -i lo -j ACCEPT
$i -A OUTPUT -o lo -j ACCEPT

# Open up ports for nginx
$i -A INPUT -p tcp --dport 443 -j ACCEPT
$i -A INPUT -p tcp --dport 80 -j ACCEPT
$i -A INPUT -p tcp --dport 22 -j ACCEPT

# Make sure nothing comes or goes out of this box
$i -A INPUT -j DROP
$i -A OUTPUT -j DROP

Eu sei que há um pouco de arte negra quando se trata de tabelas IP, então eu queria saber se alguém poderia participar e ver se esta é a abordagem correta para proteger um servidor web.

    
por Jimmy 06.06.2014 / 11:37

3 respostas

6

Você provavelmente não deseja descartar todas as conexões de saída.

Você pode querer adicionar uma regra desde o início para permitir conexões ESTABLISHED e, se estiver usando protocolos como ftp, você pode adicionar RELATED à regra também, por exemplo,

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

lembre-se de questões de ordem de regra - a primeira partida vence.

Provavelmente, você deve dar uma olhada nas perguntas e respostas que temos sobre como proteger um servidor da web Dicas para Proteger um Servidor LAMP ele tem muita informação excelente.

    
por 06.06.2014 / 11:45
1

Você está perdendo -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT em algum lugar. Além disso, eu não descartaria todos os pacotes de saída.

    
por 06.06.2014 / 11:44
0

cadeia de ENTRADA

Permite que novas sessões sejam criadas. Resposta de @ Lain tem um pequeno problema, não executar inspeção com informações de estado. Isso pode ser feito fazendo o seguinte:

-A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT

Permitir sessões estabelecidas

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Cadeia de SAÍDA

Opção nº 1

Permitir todo o tráfego de saída

-P OUTPUT ACCEPT

Opção nº 2

Permitir somente o tráfego de saída que responde à entrada de entrada. Isso pode ser útil se você quiser impor o tráfego de saída.

-P OUTPUT DROP
-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

E uma regra de exemplo para tráfego de saída aceito

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

. .

E uma nota final, mantenha as regras contendo "-m state -state ESTABLISHED, RELATED" perto do topo do conjunto de regras, pois elas geralmente serão comparadas. As regras que iniciam as sessões só serão usadas uma vez por sessão.

    
por 06.06.2014 / 19:27