-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiptables.txt
306 lines (237 loc) · 11.5 KB
/
iptables.txt
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
IPTABLES - FRONT-END DO NETFILTER
iptables(8)
ip6tables(8)
Aplicada na terceira camada OSI (rede)
OSI TCP/IP
APLICAÇÃO
APRESENTAÇÃO
SESSÃO APLICAÇÃO
TRANSPORTE TANSPORTE
REDE <---> REDE
ENLACE ACESSO À REDE
FÍSICO
tables TABELAS do iptables:
FILTER
Tabela padrão para manipular pacotes de rede, usada para
configurar politicas para o tráfego que entra, atravessa
ou sai do computador.
NAT (network address translation)
Tabela de tradução de endereços.
permite que máquinas dentro de uma rede local se comuniquem
com outra rede superior como se estivessem aglomerados sob um
único IP (o do gateway/firewall/roteador).
MANGLE
Tabela usada para tipos específicos de alteração de pacotes,
que não devem ser manipulados pelo sistema de rastreamento de
conexões.
RAW
Marca pacotes que não devem ser manipulados pelo sistema de
rastreamento de conexões.
EXEMPLO VISUAL:
TABELAS
|_CADEIAS
|_REGRAS
EXEMPLO:
filter------------
INPUT
"regra"
FILTER Regras normais de entrada/saída de dados serão aplicadas na table padrão filter.
chain:
INPUT - Regras para pacotes que estão entrando no nosso servidor.
OUTPUT -Regras para pacotes que estão saindo do nosso servidor.
FORWARD - aplica rules aos pacotes de rede roteados através do
servidor(para outro servidor ou outra interface de rede do mesmo servidor)
(o que estiver passando pela máquina)
ações possíveis em cada chain de FILTER:
ACCEPT - O pacote pode ser aceito no nosso servidor
DROP - O pacote será dropado, isso é,descartado.
REJECT - O pacote será rejeitado, isso é, será enviado um
sinal para o cliente de que o pacote foi rejeitado.
NAT é usada para fazer tradução de endereços entre rede menor LAN e outra maior.
chain:
PREROUTING - Modifica o destino dos pacotes assim que chegam da LAN. (SNAT)
INPUT -
OUTPUT - Modificação de pacotes antes de saírem do sistema.
POSTROUTING - Modifica a origem LAN dos pacotes
antes de saírem. (DNAT, MASQUERADE)
ações possíveis em cada chain de NAT:
SNAT - source network address translation (para fora)
Alterar o IP de origem dos pacotes exientes da rede.
Útil em redes locais com gateway linux sendo o único
com IP público. aplicado em PREROUTING
DNAT - destiny network address translation (para dentro)
Alterar o endereço de destino de pacotes entrantes
permitindo acesso a um host da rede LAN pela rede externa
WAN. aplicado em POSTROUTING
MASQUERADE - Mascaramento (para fora)
SNAT especial. Quando o IP da interface de saída do gateway é
dinâmico. O MASQUERADE monitora a interface de saída e adapta-se
ao novo IP. aplicado em POSTROUTING
MANGLE Modificação de cabeçalhos de pacotes. Marcação de pacotes para
posterior manipulação por outras regras ou ferramentas.
chain:
PREROUTING
OUTPUT
POSTROUTING
ações possíveis em cada chain de MANGLE:
RAW Controlar o rastreamento de conexões ...
chain:
PREROUTING
OUTPUT
ações possíveis em cada chain de RAW:
SECURITY
-
ESTRUTURA GERAL DE UMA RULE-----------------------------------------------------------
iptables -t <tabela> [SUBCOMANDOS] opção argumento ... opção argumento
SUBCOMANDOS---------------------------------------------------------------------------
-L --list lista todas as rules da chain
-N --new-chain cria uma nova chain com o nome desejado
-A --append anexa a rule no final da chain especificada
-P --policy configura a rule política padrão da chain
-I --insert insere uma rule em uma posição na chain
-F --flush apaga todas as rules na chain especificada
-D --delete apaga uma rule em uma posição na chain
-X --delete-chain exclui uma chain vazia
AÇÕES---------------------------------------------------------------------------------
ACCEPT o pacote é permitido
DROP descartar pacote
REJECT descarta o pacote e envia o feedback ao remetente.
QUEUE enviar o pacote ao userspace (código fora do kernel)
RETURN descotinuar o processamento do pacote e aplicar a rule padrão a ele.
NAT (NETWORK ADDRESS TRANSLATION):
DNAT redireciona o tráfego destinado a uma porta específica do
(gateway/roteador/firewall) para a porta correspondente de um IP
específico da rede interna.
(LAN <=gateway- WAN)
SNAT dispositivos da rede interna terão seu tráfego para fora desta rede adaptados para
sairem através do (gateway/roteador/firewall). Pacotes sairão como sendo da única
máquina da rede com ip público na rede externa mas entrarão voltando para os
respectivos solicitantes.
(comunicação LAN =gateway-> WAN)
MASQUERADE Pega qualquer tráfego outbound (saída) da rede e altera o endereço de
origem. É como se todos em casa compartilhassem o mesmo telefone para
fazer ligações, e o roteador apenas lembrasse de quem ligou para poder
retornar ligações corretamente.
logging:
LOG registra informações de log de acordo com a regra no log do sistema.
PARÂMETROS----------------------------------------------------------------------------
-t --table TABLE especificar a tabela (filter é a padrão)
-p --protocol PROTOCOLO especifica o protocolo (icmp, tcp, udp, all)
-s --source IP IP de origem do pacote | 0/0 = QUALQUER IP
-d --destination IP IP de destino do pacote | 0/0 = QUALQUER IP
-i --in-interface INTERFACE nome da interface de rede de entrada do pacote
-o --out-interface INTERFACE nome da interface de rede de saída do pacote
PARA QUE ENTENDAS AS DUAS OPÇÕES ABAIXO IMAGINA QUE ÉS O GATEWAY DE UMA REDE
QUE COMUNICA-SE COM HOSTS EXTERIORES À REDE INTERNA (TABELA FILTER):
--sport PORT Para INPUT: o source é a porta da outra máquina que te enviou o pacote.
Para OUTPUT: o source é a porta da tua máquina que enviou pacote à outra.
Para FORWARD: tua porta source para outra porta tua.
--dport PORT Para INPUT: a outra máquina destina à uma porta tua.
Para OUTPUT: a tua máquina destina à porta de outra máquina.
Para FORWARD: a tua máquina destina à outra porta tua.
-m --match PROP Propriedades específicas para regras. exemplos:
tcp, udp, icmp,
state( tcp = <ESTABLISHED || RELATED || NEW || INVALID> )
limit (limita taxa de correspondêcia dos pacotes),
recent (endereços ip recentes),
mac (correspondêcias à endereços MAC)
-s --state ESTADO
Empregado após "-m|--match state"
especifica um estado de conexão de um pacote tcp.
permitindo conexões tcp:
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-j --jump AÇÃO Executa uma ação para regra especificada. Localiza-se ao fim do comando.
-syn identifica nova requisição de conexão
-icmp-type tipo de mensagem ICMP
-v --verbose opção autoexplicativa.
-n --numeric portas são mostradas numericamente.
--line-numbers adicionar linhas à exibição de "-L | --list".
--------------------------------------------------------------------------------------
INTERFACES DE REDE
Lebra-te que são as INTERFACES de rede espetadas na tua máquina
que adquirem o endereço ip de uma rede X.
lo: 127.0.0.1 loopback
DEMAIS:
linux clássico: eth0, eth1, eth2 ... ethN
linux moderno: enp2s0, enp5s0 ... (VEJA O ARQUIVO redes.txt em INTERFACES DE REDE)
RASTREAMENTO DE CONEXÕES TCP----------------------------------------------------------
LISTEN o host aguarda um pedido para iniciar uma conexão.
ESTABLISHED a conexão foi estabelicida.
RELATED o pacote está iniciando uma nova conexão, mas a nova é relacionada a uma
conexão já existente.
INVALID o pacote não pertence a nenhuma conexão rastreada.
NEW o pacote está iniciando uma nova conexão ou é parte de uma conexão
que ainda não teve pacotes trafegados em ambas as direções.
CLOSED fechado
EXEMPLOS------------------------------------------------------------------------------
SALVAR CONFIGURAÇÃO CORRENTE ET RESTAURAR:
ATIVE O SERVICO iptables.service E SALVE AS
CONFIGURAÇÕES EM
/etc/iptables/iptables.rules PARA IPV4
/etc/iptables/ip6tables.rules PARA IPV6
# iptables-save > /etc/iptables/iptables.rules
# /sbin/ip6tables-save > /etc/iptables/iptables.rules
# iptables-restore < /etc/iptables/ip6tables.rules
# ip6tables-restore < /etc/iptables/ip6tables.rules
listar tabela filter(padrão):
# iptables -L
# iptables -t filter -L
listar tabela nat:
# iptables -t nat -L
bloquear tudo:
# iptables -t filter --policy INPUT DROP
# iptables -t filter --policy FORWARD DROP
# iptables -t filter --policy OUTPUT DROP
navegador consegue estabelecer conexões:
# iptables -A INPUT --match state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A OUTPUT --match state --state RELATED,ESTABLISHED -j ACCEPT
liberar loopback:
# iptables -t filter --policy INPUT --in-interface lo --jump ACCEPT
# iptables -t filter --policy INPUT --out-interface lo --jump ACCEPT
na tabela, adicionar regra à cadeia:
# iptables -t filter -A INPUT --protocol PROTOCOLO --dport 0000 --jump AÇÃO
remoção da regra acima:
# iptables -t filter -D INPUT --protocol PROTOCOLO --dport 0000 --jump AÇÃO
permitindo apenas para um ip forasteiro específico:
# iptables -I INPUT --protocol tcp --source 192.168.2.1 --dport 22 --jump ACCEPT
# iptables -I INPUT --protocol tcp --source 0/0 --dport 22 --jump DROP
liberar um limite de portas livres:
# iptables -t filter -A OUTPUT -p tcp --dport 1024:2000 -j ACCEPT
# iptables -t filter -A INPUT -p tcp --dport 1024:2000 -j ACCEPT
UDP proibidâo (exceto para 53/udp vulgo: dns):
# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# iptables -A OUTPUT -p udp -j DROP
# iptables -A OUTPUT -p udp -j DROP
OU
# iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT
# iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
apenas os nameservers desejados:
# iptables -A OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT
# iptables -A OUTPUT -p udp --dport 53 -d 8.8.4.4 -j ACCEPT
nada de fazer ping:
# iptables -A OUTPUT -p icmp --icmp-type echo-request -j DROP
nada de receber ping:
# iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
computador específico:
# iptables -A INPUT -m mac --mac-source 00:12:A1:24:BB:0C -j ACCEPT
# iptables -A OUTPUT -m mac --mac-source 00:12:A1:24:BB:0C -j ACCEPT
persistência de configuração:
iptables-save > file.txt
iptables-restore < file.txt
========== NAT ============
edite o parâmetro do kernel:
net.ipv4.ip_forward = 1
para permitir o roteamento de pacotes através da máquina.
permitir que hosts da rede local possam ter acesso à rede superior
via mascaramento para todas as máquinas da rede local:
# iptables -t nat -A POSTROUTING -o [interface_wan_gateway] -j MASQUERADE
especificando um host específico:
iptables -t nat -A POSTROUTING -s 192.168.0.33/24 -j MASQUERADE
joga requisições para 8080 do gateway/firewall/roteador para IP:PORTA:
portas dinâmicas são: de 49152 a 65535
( tal host da rede interna possui um serviço executante escutando a porta 80 ):
# iptables -t nat -I PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.0.2:80
permitir que máquinas da rede interna possam trafegar seus
pacotes pelo (gateway/firewall/roteador):
# iptables -t nat -I POSTROUTING -j MASQUERADE