Eu preciso de regras que:
Bloqueie todo o tráfego de entrada (internet > servidor), mas permita a saída (servidor > internet) e permita que os serviços locais também sejam executados
Aceito apenas o tráfego de entrada das portas que desejo.
Eu também preciso fazer isso durante uma sessão ssh (já estive bloqueado antes).
A razão pela qual estou perguntando é porque não consigo usar o UFW com meu provedor VPS... aparentemente porque seu kernel/OpenVZ...
Tentar aprender os comandos sozinho é como aprender a usar uma ferramenta e tentar construir uma casa. E seria muito bom se eu pudesse ter alguma produtividade hoje em vez de gastar horas e horas tentando consertar isso. Se alguém pudesse me ajudar eu realmente apreciaria.
Responder1
Primeiro permita sua porta específica e depois bloqueie todo o tráfego de entrada
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
onde 22 sua porta demo muda conforme sua demanda
Bloqueie todo o tráfego de entrada
# iptables -A INPUT -j REJECT
Permitir todos os pacotes de saída
# iptables -A OUTPUT -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT
Responder2
@Rakib forneceu uma ótima resposta e acho que deveria ser aceita. A resposta que estou dando apenas acrescenta à dele. Eu recomendo criar um script de shell para que você possa executá-lo automaticamente quando o sistema operacional for inicializado ou sob demanda, sem precisar digitar tudo novamente:
#!/bin/sh
IPT = iptables
#allowing the specific port
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
#block all incoming traffic
$IPT -A INPUT -j REJECT
#ALLOW ALL OUTGOING PACKETS
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
#same thing for ip6tables (IPv6)
IPT = ip6tables
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -j REJECT
$IPT -A OUTPUT -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
Além disso, o roteiro foi feito duas vezes, com a única diferença de quetabelas ip6foi incluído, para que também se aplique ao IPv6, como @Michael Mol disse em seu comentário na resposta de @Rakib