Introdução à utilização de iptables

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

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