Aula 8.2 - Iptables Impasses e Scripts

24
Firewall Iptables - Impasses Prof. Andrei Carniel Universidade Tecnológica Federal do Paraná – UTFPR E-mail: [email protected] / [email protected]

description

Principais erros durante a criação de regras para o Iptables e geração de scripts

Transcript of Aula 8.2 - Iptables Impasses e Scripts

Page 1: Aula 8.2 - Iptables Impasses e Scripts

Firewall Iptables - ImpassesProf. Andrei Carniel

Universidade Tecnológica Federal do Paraná – UTFPR

E-mail: [email protected] / [email protected]

Page 2: Aula 8.2 - Iptables Impasses e Scripts

Impasses

• Um dos principais motivos de invasões, é erro humano na configuração do firewall.

• Más que também pode gerar bloqueios inesperados na rede interna.

• Vamos estudar algumas maneiras de gerar bloqueios.

2

Page 3: Aula 8.2 - Iptables Impasses e Scripts

Impasses

• Por exemplo:

• Ao se fazer determinadas regras, devemos prever o retorno. Assim, digamos que exista a seguinte situação:

▫ #iptables -P FORWARD DROP

▫ #iptables -A FORWARD -s 10.0.0.0/8 -d 172.29.0.0/16 -j

ACCEPT

• Neste caso estamos permitindo somente o tráfego entre 2 sub-redese bloqueando o resto. Certo?

3

Page 4: Aula 8.2 - Iptables Impasses e Scripts

Impasses

• Com as regras anteriores, fechamos todo o FORWARD e depois abrimos da sub-rede 10.0.0.0 para a sub-rede 172.29.0.0.

• No entanto, não tornamos possível a resposta da sub-rede172.29.0.0 para a sub-rede 10.0.0.0.

• O correto, então, seria:

▫ #iptables -P FORWARD DROP

▫ #iptables -A FORWARD -s 10.0.0.0/8 -d 172.29.0.0/16 -j

ACCEPT

▫ #iptables -A FORWARD -d 10.0.0.0/8 -s 172.29.0.0/16 -j

ACCEPT

4

Page 5: Aula 8.2 - Iptables Impasses e Scripts

Exemplos de Regras de Firewall (1/4)

• Exemplos:

▫ #iptables -A FORWARD -s 172.29.0.0/16

-d www.chat.com.br -j DROP

• Os pacotes oriundos da sub-rede 172.29.0.0 (máscara 255.255.0.0) e destinados ao host www.chat.com.br deverão ser descartados.

▫ #iptables -A FORWARD -d 172.29.0.0/16

-s www.chat.com.br -j DROP

• Os pacotes destinados à sub-rede 172.29.0.0/16 e oriundos do host www.chat.com.br deverão ser descartados.

5

Page 6: Aula 8.2 - Iptables Impasses e Scripts

Exemplos de Regras de Firewall (2/4)

▫ #iptables –L -n

• Lista todas as regras existentes.

▫ #iptables -F

• Apaga todas as regras sem alterar a política.

▫ #iptables -P FORWARD DROP

• Estabelece uma política de proibição inicial de passagem de pacotes entre sub-redes.

6

Page 7: Aula 8.2 - Iptables Impasses e Scripts

Exemplos de Regras de Firewall (3/4)

▫ #iptables -A FORWARD -s 172.29.150.100 -p icmp -j

ACCEPT

• Os pacotes icmp oriundos do host 172.29.150.100 e destinados a qualquer lugar deverão ser aceitos.

▫ #iptables -A FORWARD -s 172.29.150.123 -p tcp --sport

80 -j LOG

• O tráfego de pacotes TCP oriundos da porta 80 do host 172.29.150.123 e destinados a qualquer lugar deverá ser gravado em log. No caso /var/log/messages.

▫ #iptables -A FORWARD -p tcp --dport 25 -j ACCEPT

• Os pacotes TCP destinados à porta 25 de qualquer host deverão ser aceitos.

7

Page 8: Aula 8.2 - Iptables Impasses e Scripts

Exemplos de Regras de Firewall (4/4)

▫ #iptables -A FORWARD –m iprange –-src-range

172.29.150.100-172.29.150.150 -p icmp -j ACCEPT

• Os pacotes icmp oriundos do faixa 172.29.150.100 a 172.29.150.150 e destinados a qualquer lugar deverão ser aceitos.

▫ #iptables -A FORWARD –m iprange –-dst-range

172.29.150.100-172.29.150.150 -p icmp -j ACCEPT

• Os pacotes icmp destinados do faixa 172.29.150.100 a 172.29.150.150 e destinados a qualquer lugar deverão ser aceitos.

8

Page 9: Aula 8.2 - Iptables Impasses e Scripts

Extensões (1/4)

• As extensões permitem filtragens especiais, principalmente contra ataques de hackers. Quando necessárias, devem ser as primeiras linhas do firewall. As mais importantes são:

• Contra Ping▫ #iptables -A FORWARD -p icmp --icmp-type echo-request

-j DROP

• Contra Ping of Death▫ #iptables -A FORWARD -p icmp --icmp-type echo-request

-m limit --limit 1/s -j ACCEPT

• Logo em seguida:▫ #iptables -A FORWARD -p icmp --icmp-type echo-request

-j DROP

9

Page 10: Aula 8.2 - Iptables Impasses e Scripts

Extensões (2/4)

• Contra ataques Syn-flood▫ #iptables -A FORWARD -p tcp -m limit --limit 1/s -j

ACCEPT

• Contra Port scanners avançados (nmap)▫ #iptables -A FORWARD -p tcp --tcp-flags ALL

SYN,ACK,FIN,RST -m limit --limit 1/s -j ACCEPT

• Lembre-se de usar a linha de bloqueio após os 2 exemplos.

• Mais proteção

• Existe, ainda, uma regra muito importante que não é extensão mas também pode ser utilizada como segurança. É a proteção contra pacotes danificados ou suspeitos.

▫ #iptables -A FORWARD -m unclean -j DROP

10

Page 11: Aula 8.2 - Iptables Impasses e Scripts

Extensões (3/4)

• Logando tentativa de acesso a determinadas portas

▫ #iptables -A INPUT -p tcp --dport 21 -i eth0 -j LOG --

log-level 6 --log-prefix “FIREWALL:ftp: “

▫ #iptables -A INPUT -p tcp --dport 23 -i eth0 -j LOG --

log-level 6 --log-prefix “FIREWALL:telnet: “

▫ #iptables -A INPUT -p tcp --dport 110 -i eth0 -j LOG -

-log-level 6 --log-prefix “FIREWAL:pop3: “

11

Page 12: Aula 8.2 - Iptables Impasses e Scripts

Extensões (4/4)

• --log-level, define um nível para o log, seguido de um número

de nível ou nome.

▫ Os nome válidos (sensíveis a maiúsculas/minúsculas) são `debug', `info', `notice', `warning', `err', `crit', `alert' and `emerg',

correspondendo a números de 7 até 0.

• --log-prefix, define um prefixo para o log de até 29 caracteres.

12

Page 13: Aula 8.2 - Iptables Impasses e Scripts

Scripts

• O Iptables não salva em nenhum local as regras.

• Ou seja se reiniciarmos o servidor as regras criadas não estarão mais ativas.

• Para resolver essa situação teremos de usar um script.

• Exemplo:

13

Page 14: Aula 8.2 - Iptables Impasses e Scripts

Scripts - Firewall

#! /bin/sh

regras(){iptables -A INPUT -p TCP -s 192.168.4.6 - -dport 22 -j ACCEPTiptables -A INPUT -p TCP --dport 22 -j DROP

}

case "$1" instart)

regras

echo "Iniciando firewall!!";;stop)

echo "Parando o serviço de firewall"echoiptables -F

;;status)

iptables -L -n;;*)

echoecho "Uso: firewall (restart|stop|status)"

;;

esac

exit 0

14

Page 15: Aula 8.2 - Iptables Impasses e Scripts

Scripts

• Esse script deve ser colocado dentro da pasta usr/bin, dessa forma

você poderá executar o mesmo de qualquer diretório da máquina.

• Obs: lembre de mudar a permissão do arquivo (chmod 755).

• Logo em seguida crie um novo script chamado inicializar dentro da pasta usr/bin.

• Dentro desse arquivo coloque os serviços que deseja inicializar no boot do sistema.

15

Page 16: Aula 8.2 - Iptables Impasses e Scripts

Scripts - Inicializar

#! /bin/sh

firewall start

# colque nesse arquivo o que deseja inicializar no

boot do sistema

16

Page 17: Aula 8.2 - Iptables Impasses e Scripts

Scripts

• Depois de criarmos o script inicializar devemos criar um link simbólico para a pasta /etc/init.d, que o local que ficam os

serviços que devem ser inicializados no boot da máquina.

▫ #ln -s /usr/bin/inicializar /etc/init.d

• Para ativar o script inicializar na inicialização do sistema agora devemos utilizar o comando:

▫ #update-rc.d -f inicializar defaults

17

Page 18: Aula 8.2 - Iptables Impasses e Scripts

Dúvidas?

18

Page 19: Aula 8.2 - Iptables Impasses e Scripts

Exercício

19

Page 20: Aula 8.2 - Iptables Impasses e Scripts

Exercício

• 1 - Considere o seguinte esquema.

20

Page 21: Aula 8.2 - Iptables Impasses e Scripts

Exercício

a) Crie regras para R (policy = ACCEPT).

• 1 – Proibir a utilização do DNS 8.8.8.8 somente para as máquinas das sub-redes.

• 2 – A rede 172.29/16 só poderá enviar e-mails.

• 3 – A rede 192.168/24 só poderá receber e-mails.

• 4 – Só será possível efetuar telnet pela máquina B e somente para o Servidor S. Todos os outros devem estar bloqueados.

iptables -A FORWARD -s 192.168.0.0/24 -d 8.8.8.8 -p udp --dport 53 -j DROP

iptables -A FORWARD -s 172.29.0.0/16 -d 8.8.8.8 -p udp --dport 53 -j DROP

iptables -A FORWARD -d 172.29.0.0/16 -p tcp --dport 110 -j DROP

iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 25 -j DROP

iptables -A FORWARD -s 192.168.0.0/24 -p tcp --dport 587 -j DROP

iptables -A FORWARD ! -s 172.29.0.3 -d 200.143.81.25 -p tcp --dport 22 -j DROP

21

Page 22: Aula 8.2 - Iptables Impasses e Scripts

Exercício

b) Crie regras para S (policy = DROP).

• 1 – Permita conexões via telnet de B.

• 2 – Liberar conexões de SSH somente para as sub-redes e o IP 182.29.10.30.

• 3 – Permitir somente o envio de e-mails.

• 4 – Permitir o funcionamento do protocolo FTP.

iptables -A INPUT -p TCP --dport 23 - j ACCEPT

iptables -A INPUT-s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT-s 172.29.0.0/16 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT-s 182.29.10.30 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -p tcp --dport 587 -j ACCEPT

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT

22

Page 23: Aula 8.2 - Iptables Impasses e Scripts

Exercício

• 2 - Criar um script com as regras anteriores e testar seu funcionamento.

23

Page 24: Aula 8.2 - Iptables Impasses e Scripts

Firewall Iptables - ImpassesProf. Andrei Carniel

Universidade Tecnológica Federal do Paraná – UTFPR

E-mail: [email protected] / [email protected]