Firewall Iptables
O objetivo deste tutorial é ensinar os comandos básicos do Iptables, mas, de modo a proporcionar uma configuração satisfatória dos Serviços.
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
O
firewall Iptables é instalado por padrão no Ubuntu Linux. Sua configuração
default permite todo e qualquer tráfego, o tornando ineficaz.
O objetivo deste tutorial é ensinar os comandos básicos do Iptables, mas, de modo a proporcionar uma configuração satisfatória dos Serviços.
Log no Terminal como Administrador
Sudo –s
Senha root
Em
seguida digite o comando:
sudo iptables –L
Lembre-se que o Linux
faz reconhecimento entre maiúscula e minúscula, (L). Este comando irá mostrar as regras em funcionamento no
Iptables. Caso a instalação do sistema
seja padrão, você verá a seguinte informação:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD
(policy ACCEPT)
target prot
opt source destination
Chain OUTPUT
(policy ACCEPT)
target prot opt source destination
Agora Permita as Sessões Estabelecidas
Com o
comando a seguir, permitimos que todas as sessões estabelecidas recebam
tráfego:
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Liberando Tráfego de Entrada em Portas Específicas
O próximo passo (deve) ser permitirmos
SSH antes de aplicarmos qualquer tipo de bloqueio.
Como
é do conhecimento de qualquer técnico Linux (tradicionalmente o SSH usa a porta
22). Então podemos dizer ao Iptables para permitir todo tráfego TCP na porta 22
do adaptador de rede com o comando:
# iptables -A INPUT -p
tcp -i eth0 --dport ssh -j ACCEPT
Agora liste o
Iptables para ver se as regras implantadas foram aplicadas corretamente:
Nas
primeiras linhas, que é o exemplo que uso aqui, será mostrado algo semelhante
a:
# iptables -L
Chain INPUT
(policy ACCEPT)
target prot opt source destination
ACCEPT all
-- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp --
anywhere anywhere tcp dpt:ssh
O próximo
passo será liberarmos todo o tráfego da web:
# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
Analisando novamente as regras temos
algo como:
# iptables -L
Chain INPUT
(policy ACCEPT)
target prot opt source destination
ACCEPT all
-- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp
-- anywhere anywhere tcp dpt:ssh
ACCEPT tcp --
anywhere anywhere tcp dpt:www
Permitimos
o tráfego TCP ao SSH e portas WEB, mas como não bloqueamos nada, todo o tráfego
continua chegando.
Bloqueando Tráfego
Como
nossas regras permitindo SSH e tráfego WEB vêm primeiro, e como nossa regra
para bloquear todo o tráfego vêm depois delas, nós podemos permanecer aceitando
o tráfego que queremos.
Tudo
que precisamos fazer é colocar a regra para bloquear todo o tráfego no fim. O
comando -A diz ao Iptables para adicionar a regra no final, então nós usaremos
isso outra vez.
# iptables -A INPUT -j DROP
# iptables -L
Chain INPUT
(policy ACCEPT)
target prot opt source destination
ACCEPT all
-- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp
-- anywhere anywhere tcp dpt:ssh
ACCEPT tcp
-- anywhere anywhere tcp dpt:www
DROP all
-- anywhere anywhere
Por não
especificarmos uma interface ou protocolo, qualquer tráfego de qualquer porta
em qualquer interface está bloqueado, exceto para a WEB e SSH.