IPTables: permite acesso SSH apenas, nada mais dentro ou fora

10

Como você configura o IPTables para que ele apenas permita o SSH e não permita outro tráfego em ou fora ?

Quaisquer precauções de segurança que alguém possa recomendar?

Eu tenho um servidor que eu acredito foi migrado do GoDaddy com sucesso e eu acredito que não está mais em uso.

Mas eu quero ter certeza só porque ... você nunca sabe. :)

Note que este é um servidor dedicado virtual da GoDaddy ... Isso significa que não há backup e virtualmente nenhum suporte.

    
por Disco 21.12.2010 / 21:12

2 respostas

12

Você precisa definir a política padrão como DROP nas cadeias INPUT e OUTPUT.

Para permitir o SSH, você precisa dos seguintes comandos:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Os dois últimos comandos permitem o tráfego de loopback, pois isso é requerido por alguns aplicativos para funcionar corretamente. Você pode restringir o acesso SSH de um IP específico usando a opção -s source_ip .

Executar os comandos na ordem mostrada acima fará com que sua sessão SSH atual seja interrompida. Isso ocorre porque os comandos do iptables entram em vigor imediatamente. Você precisa executá-los em um shell script para evitar perder a capacidade de se conectar à sua máquina ao executá-los remotamente.

    
por 21.12.2010 / 21:23
4

Algo parecido com isto:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP
    
por 21.12.2010 / 21:24