Diferenças entre edições de "Introdução à utilização de iptables"
|  (Criou a página com "= Vantagens e desvantagens =  * Grande estabilidade, confiabilidade e escalável. * Económicas tanto monetariamente como  em termos de recursos computacionais. * Mais efica...") |  (→Regras) | ||
| (Há 4 edições intermédias do mesmo utilizador que não estão a ser apresentadas) | |||
| Linha 37: | Linha 37: | ||
| == Instalação de serviços para testes == | == Instalação de serviços para testes == | ||
| + | |||
| ===Configuração de uma página=== | ===Configuração de uma página=== | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | cd /var/www/html | |
| − | + | cp index.html index_old.html | |
| + | nano index.html | ||
|   <html> |   <html> | ||
|     <body> |     <body> | ||
| Linha 46: | Linha 48: | ||
|     </body> |     </body> | ||
|   </html> |   </html> | ||
| − | + | service apache2 restart (se necessário)</syntaxhighlight> | |
| * Aceder ao IP da máquina no browser | * Aceder ao IP da máquina no browser | ||
| ===Configuração do vsftpd=== | ===Configuração do vsftpd=== | ||
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | 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 | ||
| + | </syntaxhighlight> | ||
| − | + | <syntaxhighlight lang="bash">nano /etc/vsftpd.conf (ou vi)</syntaxhighlight> | |
| Descomentar a linha write_enable=YES | Descomentar a linha write_enable=YES | ||
| Descomentar a linha chroot_local_user=YES | Descomentar a linha chroot_local_user=YES | ||
| Adicionar as linhas no fim do ficheiro | Adicionar as linhas no fim do ficheiro | ||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
|    user_sub_token=$USER |    user_sub_token=$USER | ||
|    local_root=/home/$USER/ftp |    local_root=/home/$USER/ftp | ||
| Linha 72: | Linha 78: | ||
|    userlist_file=/etc/vsftpd.userlist |    userlist_file=/etc/vsftpd.userlist | ||
|    userlist_deny=NO |    userlist_deny=NO | ||
| − | + | </syntaxhighlight> | |
| + | |||
| + | |||
| + | <syntaxhighlight lang="bash"> | ||
|   touch /etc/vsftpd.userlist |   touch /etc/vsftpd.userlist | ||
|   echo “teste” > /etc/vsftpd.userlist |   echo “teste” > /etc/vsftpd.userlist | ||
|   service vsftpd restart |   service vsftpd restart | ||
| + | </syntaxhighlight> | ||
| − | + | ||
| + | <syntaxhighlight lang="bash">ftp –p <ip do servidor></syntaxhighlight> | ||
|    Efectuar o login |    Efectuar o login | ||
|    ls   |    ls   | ||
| Linha 112: | Linha 123: | ||
|   iptables –A INPUT –p tcp –s <IP_A_PERMITIR> --dport 22 –j ACCEPT |   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 | ||
Edição atual desde as 16h12min de 7 de junho de 2018
Í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
