Introdução à utilização de iptables
Índice
Vantagens e desvantagens
- Grande estabilidade, confiabilidade e escalável.
- Económicas tanto monetariamente como em termos de recursos computacionais.
- Mais eficazes.
- Maior liberdade de configuração.
- Necessário vasto conhecimento do funcionamento interno do Linux.
- Não é uma solução rápida de implementar.
- Não possui grandes ferramentas gráficas nativas de configuração (excepto de terceiros).
- Configurações perdidas após reiniciar o sistema.
Exemplos
iptables -A INPUT -p tcp -s 192.168.219.0/255.255.255.0 -j ACCEPT
Todas as configurações de regras da firewall são aplicadas através do comando “iptables”.
Em seguida vem uma condição, indicada pela opção "-A".
As opções “INPUT -p tcp -s 192.168.219.0/255.255.255.0", aplicam-se a qualquer pacote de entrada (INPUT), utilizando o protocolo TCP (-p tcp), proveniente dos computadores da rede local (192.168.200.0/255.255.255.0).
O "-j ACCEPT" indica que ação deve ser tomada e, neste caso, diz que estes pacotes devem ser aceites.
Criação de um cenário prático
- Instalar e configurar máquina virtual com o ubuntu server:
- Actualizar a máquina virtual (apt-get update && apt-get upgrade)
- Activar utilizador root (sudo passwd root)
- Instalar o seguintes serviços:
- Apache
- apt-get install lamp-server^
- SSH
- apt-get install ssh
- FTP
- apt-get install vsftpd
- Apache
Instalação de serviços para testes
Configuração de uma página
cd /var/www/html
cp index.html index_old.html
nano index.html
<html>
<body>
Escrever texto aqui….
</body>
</html>
service apache2 restart (se necessário)
- Aceder ao IP da máquina no browser
Configuração do vsftpd
cp /etc/vsftpd.conf /etc/vsftpd_back.conf
adduser teste
mkdir /home/teste/ftp
chown nobody:nogroup /home/teste/ftp
chmod a-w /home/teste/ftp (as permissões atribuídas são 555)
ls –la /home/teste/ftp
touch /home/teste/ftp/test.txt
echo “teste de acesso” > /home/teste/ftp/test.txt
nano /etc/vsftpd.conf (ou vi)
Descomentar a linha write_enable=YES Descomentar a linha chroot_local_user=YES Adicionar as linhas no fim do ficheiro
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=40000
pasv_max_port=50000
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
touch /etc/vsftpd.userlist
echo “teste” > /etc/vsftpd.userlist
service vsftpd restart
ftp –p <ip do servidor>
Efectuar o login ls quit
Portos utilizados pelos serviços
- HTTP – 80
- SSH – 22
- FTP – 20 e 21
Regras
Limpar todas as regras
iptables –F INPUT iptables –F OUTPUT iptables –F FORWARD
Bloquear pacotes mal formados
iptables -A INPUT -m state --state INVALID -j DROP
Permitir ligações para o endereço de loopback
iptables -A INPUT -i lo -j ACCEPT
Bloquear uma ligação FTP a um IP especifico
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport 21 –j REJECT
Abrir as portas para o servidor FTP
iptables –A INPUT –p tcp –m multiport --dport 80, 20, 21, 40000, 50000 –j ACCEPT
Permitir uma ligação SSH a um IP especifico
iptables –A INPUT –p tcp –s <IP_A_PERMITIR> --dport 22 –j ACCEPT
Rejeitar as portas para o serviço SSH
iptables –A INPUT –p tcp --dport 22 –j REJECT
Bloquear network flood na porta 80
iptables –A INPUT –p tcp --dport 80 –m limit --limit 100/minute --limit-burst 200 –j ACCEPT
Bloquear o acesso ssh de uma máquina em especifica
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport ssh –j DROP
Permitir o acesso a um IP à página web
iptables –A INPUT –p tcp –s <IP_A_PERMITIR> --dport 80 –j ACCEPT
Bloquear a toda a rede o acesso à página web
iptables –A INPUT –p tcp –s <IP_REDE> --dport 80 –j DROP
Permitir o ping request de uma máquina especifica
iptables –A INPUT –s <IP_MAQUINA> –p icmp --icmp-type echo-request –j ACCEPT
Bloquear ping request
iptables –A INPUT –p icmp --icmp-type echo-request –j DROP
Bloquear o acesso telnet
iptables –A INPUT –p tcp –s <IP_A_BLOQUEAR> --dport telnet –j REJECT
Permitir a rede local
iptables –A INPUT –p tcp –syn –s <IP_REDE_LOCAL> -j ACCEPT
Protecção contra MAC Spoofing
iptables –A INPUT –s <IP_MAQUINA> -m mac --mac-source <MAC_MAQUINA> –j ACCPET