Instalando o iptables-persistent
Neste tutorial, utilizaremos a aplicação iptables-persistent
, ele realizará a carga das regras do iptables sempre que o host for iniciado. Para instalar a aplicação podemos utilizar o seguinte comando:
Comando
sudo apt install iptables-persistent
Removendo o arquivo de regras
Depois de instalar o iptables-persistent , devemos renomear o arquivo /etc/iptables/rules.v4
. Este arquivo conterá as regras de filtragem que serão carregadas e aplicadas pelo iptables
Comando
sudo mv /etc/iptables/rules.v4 /etc/iptables/rules.v4.original
Ajustando as regras Básicas
Após remover o arquivo original devemos criar um novo arquivo:
Comando
sudo nano /etc/iptables/rules.v4
E neste novo arquivo diremos adicionar as nossas regras default
Configurações
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 | ###-------------------------------------------------------------------------------------------------------####
# Servidor: nome do servidor <-- Indicar o nome da maquina
###-------------------------------------------------------------------------------------------------------####
# Historico *1:
# - [data da criacao do arquivo] - [login do admin] - versao original
#
# *1: Nesta seção iremos controlar as versões deste arquivo
###-------------------------------------------------------------------------------------------------------####
# Tabela Filter
###-------------------------------------------------------------------------------------------------------####
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
###///////////////////////////////////////////////////////////////////////////////////////////////////////###
###-------------------------------------------------------------------------------------------------------###
# Declaracao das Cadeira
###-------------------------------------------------------------------------------------------------------###
###\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\###
####### Cadeias Básicas
:ALLOW_ICMP - [0:0]
:ALLOW_SSH_65222 - [0:0]
:LOGDROP - [0:0]
####### Cadeias Adicionais
###///////////////////////////////////////////////////////////////////////////////////////////////////////###
###-------------------------------------------------------------------------------------------------------###
# Regras das Cadeira
###-------------------------------------------------------------------------------------------------------###
###\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\###
###-------------------------------------------------------------------------------------------------------####
# Libera a interface Loopback e o retorno de conexões estabelecidas a partir da maquina
###-------------------------------------------------------------------------------------------------------####
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
###-------------------------------------------------------------------------------------------------------####
## CADEIA: ALLOW_ICMP
## >> Libera o protocolo ICMP
###-------------------------------------------------------------------------------------------------------####
-A INPUT -p icmp -j ALLOW_ICMP
#-A INPUT -p icmp --icmp-type 8 -j ALLOW_ICMP
###-------------------------------------------------------------------------------------------------------####
# Libera o ICMP originado na rede interna
-A ALLOW_ICMP -s 10.10.30.0/24 -m comment --comment "ICMP:Rede:30" -j ACCEPT
###-------------------------------------------------------------------------------------------------------####
## Registra e Bloqueia as demais mensagens
###-------------------------------------------------------------------------------------------------------####
-A ALLOW_ICMP -m limit --limit 5/min -j LOG --log-prefix "DROP:IMCP " --log-level 7
-A ALLOW_ICMP -j DROP
###-------------------------------------------------------------------------------------------------------####
###-------------------------------------------------------------------------------------------------------####
## CADEIA: ALLOW_SSH_6522
## >> Liberando acesso ao serviço SSH que está escutando na porta 65222
###-------------------------------------------------------------------------------------------------------####
-A INPUT -p tcp -m tcp -m multiport --dports 65222 -j ALLOW_SSH_65222
###-------------------------------------------------------------------------------------------------------####
# Libera acesso originado na rede interna
-A ALLOW_SSH_65222 -s 10.10.30.0/24 -m comment --comment "SSH:Rede:30" -j ACCEPT
###-------------------------------------------------------------------------------------------------------####
## Registra e Bloqueia as demais mensagens
###-------------------------------------------------------------------------------------------------------####
-A ALLOW_SSH_65222 -m limit --limit 5/min -j LOG --log-prefix "DROP:SSH_65222 " --log-level 7
-A ALLOW_SSH_65222 -j DROP
###///////////////////////////////////////////////////////////////////////////////////////////////////////###
###-------------------------------------------------------------------------------------------------------###
# Fim Fluxo Principal
###-------------------------------------------------------------------------------------------------------###
###\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\###
###-------------------------------------------------------------------------------------------------------####
## CADEIA: LOGDROP
## Registra e descarta todos os pacotes que não foram tratados anteriormente
###-------------------------------------------------------------------------------------------------------####
-A INPUT -j LOGDROP
###-------------------------------------------------------------------------------------------------------####
-A LOGDROP -p tcp -m limit --limit 5/min -j LOG --log-prefix "Denied TCP: " --log-level 7
-A LOGDROP -p tcp -j DROP
###-------------------------------------------------------------------------------------------------------####
-A LOGDROP -p udp -m limit --limit 5/min -j LOG --log-prefix "Denied UDP: " --log-level 7
-A LOGDROP -p udp -j DROP
###-------------------------------------------------------------------------------------------------------####
-A LOGDROP -m limit --limit 5/min -j LOG --log-prefix "Denied ICMP: " --log-level 7
-A LOGDROP -p icmp -j DROP
###-------------------------------------------------------------------------------------------------------####
-A LOGDROP -j DROP
###-------------------------------------------------------------------------------------------------------####
# Finalizando e aplicando as regras
###-------------------------------------------------------------------------------------------------------####
COMMIT
###-------------------------------------------------------------------------------------------------------####
|
Carregando as novas regras
Depois que adicionamos as regras no arquivo de configuração, precisamos carrega-las, para tal utilizaremos o seguinte comando:
Comando
sudo netfilter-persistent reload
Para verificar se as regras foram carregadas podemos utilizar o seguinte comando:
Comando
Este comando deve gerar uma saída semelhante à:
Saída
# Generated by iptables-save v1.8.4 on Mon Jun 22 19:36:36 2020
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [5:592]
:ALLOW_ICMP - [0:0]
:ALLOW_SSH_65222 - [0:0]
:LOGDROP - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ALLOW_ICMP
-A INPUT -p tcp -m tcp -m multiport --dports 65222 -j ALLOW_SSH_65222
-A INPUT -j LOGDROP
-A ALLOW_ICMP -s 10.10.30.0/24 -m comment --comment "ICMP:Rede:30" -j ACCEPT
-A ALLOW_ICMP -m limit --limit 5/min -j LOG --log-prefix "DROP:IMCP " --log-level 7
-A ALLOW_ICMP -j DROP
-A ALLOW_SSH_65222 -s 10.10.30.0/24 -m comment --comment "SSH:Rede:30" -j ACCEPT
-A ALLOW_SSH_65222 -m limit --limit 5/min -j LOG --log-prefix "DROP:SSH_65222 " --log-level 7
-A ALLOW_SSH_65222 -j DROP
-A LOGDROP -p tcp -m limit --limit 5/min -j LOG --log-prefix "Denied TCP: " --log-level 7
-A LOGDROP -p tcp -j DROP
-A LOGDROP -p udp -m limit --limit 5/min -j LOG --log-prefix "Denied UDP: " --log-level 7
-A LOGDROP -p udp -j DROP
-A LOGDROP -m limit --limit 5/min -j LOG --log-prefix "Denied ICMP: " --log-level 7
-A LOGDROP -p icmp -j DROP
-A LOGDROP -j DROP
COMMIT
# Completed on Mon Jun 22 19:36:36 2020
Com isto finalizamos o processo de configuração no firewall da maquina. Em outros tutoriais realizaremos alguns ajustes no arquivo de configuração e novos serviços serão liberados.
Última atualização: 2 de novembro de 2020