|
1
|
+fail2ban para linux alpino
|
|
2
|
+============================
|
|
3
|
+
|
|
4
|
+Monitoree el **registro** de servicios comunes para detectar patrones en fallas de autenticación
|
|
5
|
+y toma acciones configuradas basadas en esos fallos.
|
|
6
|
+
|
|
7
|
+La wiki alpina oficial es una mierda, así que comenzamos una cuenta alpina centrada en profesionales.
|
|
8
|
+
|
|
9
|
+> **Advertencia**: ¡debe leer la LICENCIA de este documento, al final aquí!
|
|
10
|
+
|
|
11
|
+## Introducción
|
|
12
|
+
|
|
13
|
+Cuando fail2ban está configurado para monitorear los registros de un servicio, mira un filtro
|
|
14
|
+que se ha configurado específicamente para ese servicio. El filtro está diseñado para
|
|
15
|
+identificar fallas de autenticación para ese servicio específico mediante el uso de
|
|
16
|
+(desafortunadamente) expresiones regulares complejas y luego traducidas a una regla
|
|
17
|
+para prohibir el origen infractor.
|
|
18
|
+
|
|
19
|
+### Expresiones regulares
|
|
20
|
+
|
|
21
|
+Las expresiones regulares son un lenguaje de plantillas común que se utiliza para la coincidencia de patrones.
|
|
22
|
+básicamente consta de dos tipos de personajes:
|
|
23
|
+
|
|
24
|
+* los caracteres literales regulares y
|
|
25
|
+* los metacaracteres
|
|
26
|
+
|
|
27
|
+Estos metacaracteres son los que dan el poder a las expresiones regulares.
|
|
28
|
+Define estos patrones de expresión regular en una variable interna `failregex`
|
|
29
|
+y básicamente para el **filtro** del **log**.
|
|
30
|
+
|
|
31
|
+### Filtros y failregex
|
|
32
|
+
|
|
33
|
+De forma predeterminada, Fail2ban incluye **archivos de filtro** para servicios comunes. Cuando un **registro**
|
|
34
|
+de cualquier **servicio**, como un servidor web, coincide con `failregex` en su filtro, un
|
|
35
|
+La **acción** predefinida se ejecuta para ese servicio.
|
|
36
|
+
|
|
37
|
+### Acciones
|
|
38
|
+
|
|
39
|
+La **acción** se puede configurar para hacer muchas cosas diferentes, con el valor predeterminado "prohibir"
|
|
40
|
+el host/dirección IP infractora modificando las **reglas de firewall** locales.
|
|
41
|
+
|
|
42
|
+Esas acciones se pueden ampliar para, por ejemplo, enviar un correo electrónico al administrador del sistema.
|
|
43
|
+
|
|
44
|
+### Reintentos
|
|
45
|
+
|
|
46
|
+De forma predeterminada, se tomarán medidas cuando se produzcan **fallos de autenticación de número**
|
|
47
|
+detectado **en un período o tiempo** definido en minutos, con un valor predeterminado definido
|
|
48
|
+tiempo de prohibición. Esto es configurable.
|
|
49
|
+
|
|
50
|
+### cárceles o jails
|
|
51
|
+
|
|
52
|
+La agrupación de **reintentos** + **acciones** + **filtros** usando **expresiones regulares**,
|
|
53
|
+están **definidas como jaulas (jails)**, cada una contiene esas definiciones y será
|
|
54
|
+**traducido a un conjunto de reglas para el firewall**.
|
|
55
|
+
|
|
56
|
+Cuando se utiliza el **firewall de iptables** predeterminado, fail2ban crea un nuevo conjunto de firewall
|
|
57
|
+reglas, también llamadas cadena, cuando se inicia el servicio. Añade una nueva regla a
|
|
58
|
+la cadena INPUT que envía todo el tráfico TCP dirigido al puerto del servicio a
|
|
59
|
+la nueva cadena. En la nueva cadena inserta una única regla que regresa a la cadena INPUT.
|
|
60
|
+La cadena y las reglas asociadas se eliminan si se detiene el servicio Fail2ban.
|
|
61
|
+
|
|
62
|
+## fail2ban alpino
|
|
63
|
+
|
|
64
|
+Fail2ban se configura a través de varios archivos ubicados dentro de una jerarquía bajo
|
|
65
|
+el directorio `/etc/fail2ban/` por defecto.
|
|
66
|
+
|
|
67
|
+El paquete se inició desde 0.9 pero en Alpine 3.9 se incluyó un 0.10 estable.
|
|
68
|
+versión de fail2ban, por lo que cualquier tutorial de cómo hacerlo será válido para cualquier versión alpina.
|
|
69
|
+
|
|
70
|
+### paquete
|
|
71
|
+
|
|
72
|
+| paquete alpino | desde | Uso breve | Paquete relacionado |
|
|
73
|
+| --------------- | ------ | ------------------------------- | --------------------- |
|
|
74
|
+| falla2ban | v3.8 | Archivos y servicio principal de fail2ban | monitorización whois py3-dnspython |
|
|
75
|
+| fail2ban-test | v3.14 | scripts de prueba auxiliares de fail2ban | |
|
|
76
|
+| fail2ban-openrc | v3.10 | scripts de inicio y archivos de inicio | monitorización whois py3-dnspython |
|
|
77
|
+| fail2ban-doc | v3.10 | páginas de manual y archivos adicionales | mandoc de páginas de manual |
|
|
78
|
+| fail2ban-pyc | v3.18 | versión compilada de las pitones | monitor whois de fail2ban |
|
|
79
|
+
|
|
80
|
+### Configuraciones
|
|
81
|
+
|
|
82
|
+Las configuraciones están definidas por el script de servicio fail2ban, después de la instalación.
|
|
83
|
+Necesita una base de datos backend, y también un usuario dedicado, también tiene archivos de configuración.
|
|
84
|
+
|
|
85
|
+| Artefacto | Nombre | Por defecto o empaquetado | Personalizable |
|
|
86
|
+| --------------- | ---------------- | -------------------------- | ------------ |
|
|
87
|
+| Programa binario | servidor fail2ban | `/usr/bin/fail2ban-servidor` | no |
|
|
88
|
+| Administrador binario | cliente fail2ban | `/usr/bin/fail2ban-cliente` | no |
|
|
89
|
+| Guión demonio | falla2ban | `/etc/init.d/fail2ban` | no |
|
|
90
|
+| Usuario demonio | falla2ban | `/var/lib/fail2ban/` | optar. ejecutar como root |
|
|
91
|
+| Zócalo del demonio | fail2ban.sock | `/var/run/fail2ban/fail2ban.sock` | no, depende |
|
|
92
|
+| Archivos de inicio de sesión | objetivo de registro | `/var/log/fail2ban.log` | no, depende |
|
|
93
|
+| Archivos de base de datos | archivo db | `/var/lib/fail2ban/fail2ban.sqlite3` | no, depende |
|
|
94
|
+| Directorio de configuración | N/A | `/etc/fail2ban/` | no |
|
|
95
|
+| Configuración global | fail2ban.conf | `/etc/fail2ban/fail2ban.conf` | no |
|
|
96
|
+| Archivo de configuración | cárcel.conf | `/etc/fail2ban/jail.conf` | no |
|
|
97
|
+| Personalización | cárcel.local, *.local | `/etc/fail2ban/jail.d/` | si, depende |
|
|
98
|
+
|
|
99
|
+### Lo que deberías saber
|
|
100
|
+
|
|
101
|
+Los archivos de configuración predeterminados no se pueden tocar, son solo referencias y administrados por
|
|
102
|
+las actualizaciones del paquete, los cambios propios del servidor pueden ser incompatibles con algunos futuros
|
|
103
|
+versiones, no deberías editarlo en el lugar. En resumen:
|
|
104
|
+
|
|
105
|
+El archivo `fail2ban.conf` configura algunas configuraciones operativas como la forma en que
|
|
106
|
+daemon registra información y el archivo socket y pid que utilizará. La configuración principal,
|
|
107
|
+sin embargo, se especifica en los archivos que definen las "cárceles" por aplicación.
|
|
108
|
+
|
|
109
|
+1. No cambie `jail.conf`, en su lugar simplemente cree `jail.local` y solo coloque variables modificadas.
|
|
110
|
+2. No cambie `filter.conf`; en su lugar, cree `filter.local` e inserte solo anular/añadir configuraciones.
|
|
111
|
+
|
|
112
|
+Cualquier valor definido en `jail.local` anulará los de `jail.conf`, pero si no hay ninguno
|
|
113
|
+está definido, por lo que utilizará los valores predeterminados en `jail.conf` y lo mismo para `filter.conf`.
|
|
114
|
+
|
|
115
|
+### instalacion fail2ban alpine
|
|
116
|
+
|
|
117
|
+* actualizar repositorios de apk
|
|
118
|
+* También se incluyen paquetes instalados de fail2ban con soporte ipv6
|
|
119
|
+* Se instalaron los paquetes necesarios porque los desarrolladores de Alpine son estúpidos.
|
|
120
|
+* agregar para iniciar el servicio de script de inicio
|
|
121
|
+* antes de configurar asegúrese de detener el servicio
|
|
122
|
+
|
|
123
|
+```
|
|
124
|
+apk update
|
|
125
|
+
|
|
126
|
+apk add fail2ban iptables ip6tables
|
|
127
|
+
|
|
128
|
+apk add monit whois py3-dnspython fail2ban-pyc logrotate python3
|
|
129
|
+
|
|
130
|
+rc-update add fail2ban
|
|
131
|
+
|
|
132
|
+/sbin/service fail2ban stop
|
|
133
|
+```
|
|
134
|
+
|
|
135
|
+### configuración de fail2ban con firewall predeterminado
|
|
136
|
+
|
|
137
|
+* habilitar iptables con soporte ipv6 y también ipv4
|
|
138
|
+* crear el archivo de configuración de la cárcel local
|
|
139
|
+ * por defecto, Alpine debería usar common como Debian, como lo hace Geento.
|
|
140
|
+ * no uses dns, los atacantes pueden cambiar el dominio con dns falsos
|
|
141
|
+ * prohibir la dirección infractora con un tiempo de baneo de 16 minutos, luego se le quitará la prohibición
|
|
142
|
+ * ventana de 10 minutos a la que prestar atención cuando se buscan atacantes repetidos
|
|
143
|
+ * máximos intentos fallidos en la última ventana de "findtime" período
|
|
144
|
+ * ignorar la dirección IP del loopback local
|
|
145
|
+ * ignorar la dirección IP automática del servidor o máquina
|
|
146
|
+ * incrementar el tiempo de prohibición si encontramos más intentos en cada nuevo intento de ataque
|
|
147
|
+ * no prohibir más de seis días para evitar cambios de direcciones IP dinámicas
|
|
148
|
+ * buscar en todas las cárceles, por lo que si hay múltiples servicios bajo ataque
|
|
149
|
+ * use un backend de servicio que no sea de mierda, porque usamos openrc
|
|
150
|
+ * codificación automática del texto de los archivos de registro para filtrar las búsquedas
|
|
151
|
+ * deshabilitar todas las cárceles, solo habilitamos servicios específicos
|
|
152
|
+ * use el modo normal no agresivo para prohibir acciones
|
|
153
|
+ * utilizar el servidor de firewall de iptables
|
|
154
|
+* iniciar el servicio
|
|
155
|
+* reiniciar el servicio de registro para sincronizar todos los servicios
|
|
156
|
+
|
|
157
|
+```
|
|
158
|
+rc-update add ip6tables && rc-update add iptables
|
|
159
|
+
|
|
160
|
+cat > /etc/fail2ban/jail.local << EOF
|
|
161
|
+[INCLUDES]
|
|
162
|
+before = paths-debian.conf
|
|
163
|
+[DEFAULT]
|
|
164
|
+usedns = no
|
|
165
|
+bantime = 16m
|
|
166
|
+findtime = 10m
|
|
167
|
+maxretry = 2
|
|
168
|
+ignoreip = 127.0.0.1
|
|
169
|
+ignoreself = true
|
|
170
|
+bantime.increment = true
|
|
171
|
+bantime.maxtime = 6d
|
|
172
|
+bantime.overalljails = true
|
|
173
|
+backend = polling
|
|
174
|
+logencoding = auto
|
|
175
|
+enabled = false
|
|
176
|
+mode = normal
|
|
177
|
+banaction = iptables-multiport
|
|
178
|
+EOF
|
|
179
|
+
|
|
180
|
+/sbin/service fail2ban restart
|
|
181
|
+
|
|
182
|
+/sbin/service syslog restart || /usr/sbin/service rsyslog restart
|
|
183
|
+```
|
|
184
|
+
|
|
185
|
+## Cortafuegos y servicios
|
|
186
|
+
|
|
187
|
+De forma predeterminada, Fail2ban usa iptables. Sin embargo, la configuración de la mayoría de los firewalls
|
|
188
|
+y servicios es sencillo. Desafortunadamente, paquetes de cortafuegos en Alpine
|
|
189
|
+es tan malo que solo tenemos una opción (sin personalizaciones complicadas)
|
|
190
|
+entonces se basa en "ufw". Incluso shorewall/awall es una mierda en tales configuraciones.
|
|
191
|
+
|
|
192
|
+### configurando fail2ban con la acción predeterminada de Shorewall
|
|
193
|
+
|
|
194
|
+Cualquier Shorewall o Awall en alpine tiene problemas, y especialmente porque los
|
|
195
|
+desarrolladores no tienen un buen soporte para configuraciones exquisitas, por lo que no se recomienda.
|
|
196
|
+
|
|
197
|
+El fail2ban upstream tampoco se comporta bien con el shorewall, consulte
|
|
198
|
+https://github.com/fail2ban/fail2ban/issues/2031#issuecomment-361612869
|
|
199
|
+porque **la acción del shorewall no tiene ningún "ancla", ni cadena ni mesa ni
|
|
200
|
+algo parecido**.
|
|
201
|
+
|
|
202
|
+El firewall alpine awall tiene algunas mejoras y ahora no depende del muro de costa,
|
|
203
|
+pero aún no está bien integrado, por lo que evita usarlo si instalas fail2ban.
|
|
204
|
+
|
|
205
|
+### configurando fail2ban con la acción predeterminada de firewalld
|
|
206
|
+
|
|
207
|
+No recomendado, es una basura basada en feladora python con múltiples problemas ascendentes:
|
|
208
|
+
|
|
209
|
+* https://github.com/fail2ban/fail2ban/issues/1609#issuecomment-303085942
|
|
210
|
+* https://github.com/fail2ban/fail2ban/issues/2666#issuecomment-601620071
|
|
211
|
+* https://github.com/fail2ban/fail2ban/issues/2503#issuecomment-533105500
|
|
212
|
+
|
|
213
|
+Firewalld tiene dos servidores; iptables y nftables. En el backend de iptables
|
|
214
|
+genérico "aceptar conexiones existentes" ocurre antes de las reglas agregadas mediante `--direct`
|
|
215
|
+se ejecutan y, por lo tanto, las reglas agregadas para bloquear el tráfico en realidad no bloquearán
|
|
216
|
+conexiones preexistentes. Cuando se agregó el backend de nftables, esto se solucionó:
|
|
217
|
+las reglas agregadas con --direct siempre se ejecutan antes del genérico "aceptar
|
|
218
|
+conexiones existentes".
|
|
219
|
+
|
|
220
|
+Conclusión: ¡firewalld siempre tiene trucos predeterminados que no son administrados por fail2ban!
|
|
221
|
+
|
|
222
|
+### configurando fail2ban con la acción predeterminada de ufw
|
|
223
|
+
|
|
224
|
+Esto sustituirá completamente los iptables por ufw (pero aún necesitarás iptables):
|
|
225
|
+
|
|
226
|
+* Paquetes fail2ban instalados con soporte ipv6 incluidos también ufw
|
|
227
|
+* agregar para iniciar los **servicios de script de inicio en orden específico**
|
|
228
|
+* antes de configurar asegúrese de detener el servicio
|
|
229
|
+* habilitar iptables con soporte ipv6 y también ipv4
|
|
230
|
+* crear el archivo de configuración de la cárcel local
|
|
231
|
+ * por defecto, Alpine debería usar common como Debian, como lo hace Geento.
|
|
232
|
+ * no uses dns, los atacantes pueden cambiar el dominio con dns falsos
|
|
233
|
+ * prohibir la dirección infractora con un tiempo de baneo de 16 minutos, luego se le quitará la prohibición
|
|
234
|
+ * ventana de 10 minutos a la que prestar atención cuando se buscan atacantes repetidos
|
|
235
|
+ * máximos intentos fallidos en la última ventana de "findtime" período
|
|
236
|
+ * ignorar la dirección IP del loopback local
|
|
237
|
+ * ignorar la dirección IP automática del servidor o máquina
|
|
238
|
+ * incrementar el tiempo de prohibición si encontramos más intentos en cada nuevo intento de ataque
|
|
239
|
+ * no prohibir más de seis días para evitar cambios de direcciones IP dinámicas
|
|
240
|
+ * buscar en todas las cárceles, por lo que si hay múltiples servicios bajo ataque
|
|
241
|
+ * use un backend de servicio que no sea de mierda, porque usamos openrc
|
|
242
|
+ * codificación automática del texto de los archivos de registro para filtrar las búsquedas
|
|
243
|
+ * deshabilitar todas las cárceles, solo habilitamos servicios específicos
|
|
244
|
+ * use el modo normal no agresivo para prohibir acciones
|
|
245
|
+ * utilizar el servidor de firewall ufw
|
|
246
|
+* iniciar el servicio
|
|
247
|
+* reiniciar el servicio de registro para sincronizar todos los servicios
|
|
248
|
+
|
|
249
|
+```
|
|
250
|
+apk update && apk add fail2ban ufw ip6tables iptables whois py3-dnspython logrotate
|
|
251
|
+
|
|
252
|
+rc-update add ip6tables && rc-update add iptables && rc-update add ufw && rc-update add fail2ban
|
|
253
|
+
|
|
254
|
+/sbin/service fail2ban stop
|
|
255
|
+
|
|
256
|
+ufw enable
|
|
257
|
+
|
|
258
|
+cat > /etc/fail2ban/jail.local << EOF
|
|
259
|
+[INCLUDES]
|
|
260
|
+before = paths-debian.conf
|
|
261
|
+[DEFAULT]
|
|
262
|
+usedns = no
|
|
263
|
+bantime = 16m
|
|
264
|
+findtime = 10m
|
|
265
|
+maxretry = 2
|
|
266
|
+ignoreip = 127.0.0.1
|
|
267
|
+ignoreself = true
|
|
268
|
+bantime.increment = true
|
|
269
|
+bantime.maxtime = 6d
|
|
270
|
+bantime.overalljails = true
|
|
271
|
+backend = polling
|
|
272
|
+logencoding = auto
|
|
273
|
+enabled = false
|
|
274
|
+mode = normal
|
|
275
|
+banaction = ufw
|
|
276
|
+EOF
|
|
277
|
+
|
|
278
|
+/sbin/service fail2ban restart
|
|
279
|
+
|
|
280
|
+/sbin/service syslog restart || /usr/sbin/service rsyslog restart
|
|
281
|
+```
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+> **Advertencia** esta configuración no se recomienda, hay varios problemas con ella, el firewall backend basado en iptables es la solución que mejor funciona
|
|
285
|
+
|
|
286
|
+Los desarrolladores no recomiendan la acción de firewall predeterminada para ufw,
|
|
287
|
+como https://github.com/fail2ban/fail2ban/discussions/3401#discussioncomment-4075123
|
|
288
|
+al final de las líneas, con más explicaciones.
|
|
289
|
+
|
|
290
|
+Se recomienda ufw para escanear derrotas, porque ufw depende de iptables, consulte
|
|
291
|
+siguiente sección para:
|
|
292
|
+
|
|
293
|
+### configurando fail2ban con escaneo de registro ufw
|
|
294
|
+
|
|
295
|
+Esto utilizará el registro ufw para prohibir los intentos de escaneo.
|
|
296
|
+
|
|
297
|
+* ¡Primero configure usando el servidor de firewall predeterminado de iptables como primera sección aquí!
|
|
298
|
+* Luego agregue estas configuraciones ejecutando esos comandos:
|
|
299
|
+
|
|
300
|
+```
|
|
301
|
+cat > /etc/fail2ban/filter.d/ufw-port-scan.conf << EOF
|
|
302
|
+[Definition]
|
|
303
|
+failregex = ^\s*\S+ kernel:(?: +\[[^\]]+\])? \[UFW (?:LIMIT )?BLOCK\] (?:\b(?:IN=\w+|OUT=|(?:(?!OUT=|IN=)[A-Z]+=[^ \[]*)+) )*SRC=<ADDR> DST=\S+
|
|
304
|
+ignoreregex =
|
|
305
|
+EOF
|
|
306
|
+
|
|
307
|
+cat > /etc/fail2ban/jail.d/03-ufw-port-scan.local << EOF
|
|
308
|
+[ufw-port-scan]
|
|
309
|
+logpath = /var/log/ufw.log
|
|
310
|
+protocol = all
|
|
311
|
+maxretry = 10
|
|
312
|
+EOF
|
|
313
|
+
|
|
314
|
+/sbin/service fail2ban restart
|
|
315
|
+
|
|
316
|
+/sbin/service syslog restart
|
|
317
|
+```
|
|
318
|
+
|
|
319
|
+Si tiene una instalación fail2ban muy antigua, esta idea se deriva de
|
|
320
|
+el sitio https://blog.fernvenue.com/archives/ufw-with-fail2ban/
|
|
321
|
+
|
|
322
|
+## cárceles fail2ban o jails
|
|
323
|
+
|
|
324
|
+Nosotros evitaremos la unificación de archivos por lo que la modularización proporcionará
|
|
325
|
+organización sobre servicios independientes, por ejemplo podemos tener ssh y smtp
|
|
326
|
+pero si desinstalamos o cambiamos smtp para que el script pueda administrar las cárceles sin
|
|
327
|
+afecta el servicio ssh... así que podemos eliminar la cárcel smtp de forma independiente.
|
|
328
|
+
|
|
329
|
+Esas cárceles dependerán sólo de los servicios habilitados, por lo que debes conocer
|
|
330
|
+Expresiones regulares y filtrado. Aquí solo proporcionamos las opciones más cercanas de forma predeterminada.
|
|
331
|
+configuración y cómo debes hacer cada uno, ¡usando siempre la modularización!
|
|
332
|
+
|
|
333
|
+1. En primer lugar, habilitar cárceles por reincidencia para que los agresores sean castigados con mayor dureza.
|
|
334
|
+2. siempre habilite la cárcel del servicio ssh
|
|
335
|
+3. No habilite ninguna cárcel que no tenga instalado el servicio respectivo.
|
|
336
|
+
|
|
337
|
+### cárcel de recaída
|
|
338
|
+
|
|
339
|
+```
|
|
340
|
+cat > /etc/fail2ban/jail.d/00-recidive.conf << EOF
|
|
341
|
+[recidive]
|
|
342
|
+enabled = true
|
|
343
|
+bantime = 8d
|
|
344
|
+findtime = 1d
|
|
345
|
+EOF
|
|
346
|
+
|
|
347
|
+/sbin/service fail2ban restart
|
|
348
|
+
|
|
349
|
+/sbin/service syslog restart
|
|
350
|
+```
|
|
351
|
+
|
|
352
|
+### ssh cárcel alpina
|
|
353
|
+
|
|
354
|
+En este ejemplo perfectamente preparado para cualquier servidor profesional,
|
|
355
|
+Usamos los archivos `alpine-sshd` ya empaquetados, ya proporcionados
|
|
356
|
+desde la versión fail2ban 0.10 a Alpine v3.10 y mejorado en las últimas versiones.
|
|
357
|
+
|
|
358
|
+También en este servicio agregamos un puerto 19226 personalizado al ssh interno bifurcado
|
|
359
|
+servicio, porque en este ejemplo tenemos dos servicios ssh ejecutándose. Si usted
|
|
360
|
+lo desea, o/y si cambió el puerto ssh, simplemente cambie "ssh" al número de puerto
|
|
361
|
+y eso es todo, si tienes múltiples servicios ssh puedes definir múltiples
|
|
362
|
+números de puerto. Pero si cambiaste el nombre de las secciones `sshd-key` por ejemplo,
|
|
363
|
+debemos definir qué filtro se utilizará, como lo hicimos aquí:
|
|
364
|
+
|
|
365
|
+```
|
|
366
|
+cat > /etc/fail2ban/jail.d/00-sshd.local << EOF
|
|
367
|
+[sshd]
|
|
368
|
+enabled = true
|
|
369
|
+mode = aggressive
|
|
370
|
+filter = alpine-sshd
|
|
371
|
+port = ssh
|
|
372
|
+logpath = /var/log/messages
|
|
373
|
+maxretry = 2
|
|
374
|
+maxlines = 3
|
|
375
|
+[sshd-ddos]
|
|
376
|
+enabled = true
|
|
377
|
+mode = aggressive
|
|
378
|
+filter = alpine-sshd-ddos
|
|
379
|
+port = ssh
|
|
380
|
+logpath = /var/log/messages
|
|
381
|
+maxretry = 3
|
|
382
|
+maxlines = 4
|
|
383
|
+[sshd-key]
|
|
384
|
+enabled = true
|
|
385
|
+filter = alpine-sshd-key
|
|
386
|
+port = ssh
|
|
387
|
+logpath = /var/log/messages
|
|
388
|
+maxretry = 2
|
|
389
|
+bantime = 2d
|
|
390
|
+EOF
|
|
391
|
+
|
|
392
|
+/sbin/service fail2ban restart
|
|
393
|
+
|
|
394
|
+/sbin/service syslog restart
|
|
395
|
+```
|
|
396
|
+
|
|
397
|
+> **Nota**: el error de los inicios de sesión sin contraseña se resuelve con los paquetes 0.11+
|
|
398
|
+
|
|
399
|
+Estas configuraciones anteriores si usa la versión reciente del paquete 0.11+
|
|
400
|
+aborda los siguientes casos de uso:
|
|
401
|
+
|
|
402
|
+* intenta iniciar sesión con contraseñas incorrectas
|
|
403
|
+* intentos de iniciar sesión por parte de atacantes ddos
|
|
404
|
+* intenta iniciar sesión sin clave privada
|
|
405
|
+* intenta iniciar sesión con una clave privada incorrecta
|
|
406
|
+* Los intentos de iniciar sesión con una contraseña incorrecta no se registran
|
|
407
|
+
|
|
408
|
+### Cárcel PAM para locales
|
|
409
|
+
|
|
410
|
+> **Advertencia**: las últimas versiones deben usar los paquetes `shadow-login` o `util-linux-login`
|
|
411
|
+
|
|
412
|
+```
|
|
413
|
+apk add shadow linux-pam
|
|
414
|
+
|
|
415
|
+cat > /etc/fail2ban/jail.d/01-pam.local << EOF
|
|
416
|
+[pam-all]
|
|
417
|
+enabled = true
|
|
418
|
+mode = normal
|
|
419
|
+filter = pam-generic
|
|
420
|
+port = all
|
|
421
|
+banaction = iptables-allports
|
|
422
|
+logpath = /var/log/messages
|
|
423
|
+maxretry = 2
|
|
424
|
+bantime = 20m
|
|
425
|
+```
|
|
426
|
+
|
|
427
|
+`/var/log/messages` si se modifica en las definiciones de PAM, también se debe cambiar aquí
|
|
428
|
+
|
|
429
|
+### desbloquear IP solo en el servicio ssh
|
|
430
|
+
|
|
431
|
+`fail2ban-client establece sshd unbanip 10.10.1.2`
|
|
432
|
+
|
|
433
|
+### desbloquear todas las ips
|
|
434
|
+
|
|
435
|
+```
|
|
436
|
+fail2ban-cliente unban --all
|
|
437
|
+
|
|
438
|
+/sbin/service fail2ban restart
|
|
439
|
+
|
|
440
|
+/sbin/service syslog restart
|
|
441
|
+```
|
|
442
|
+
|
|
443
|
+### verificar reglas administradas en el firewall
|
|
444
|
+
|
|
445
|
+```
|
|
446
|
+fail2ban-client -vd
|
|
447
|
+
|
|
448
|
+iptables -L
|
|
449
|
+```
|
|
450
|
+
|
|
451
|
+## Cuestiones y notas importantes
|
|
452
|
+
|
|
453
|
+El entorno de la red pública puede ser complejo y peligroso, con innumerables
|
|
454
|
+Los dispositivos maliciosos escanean constantemente direcciones IP en Internet. Esto significa
|
|
455
|
+que el uso de Fail2ban en una red pública requiere un monitoreo constante de los registros y
|
|
456
|
+actualizaciones frecuentes de las reglas del firewall.
|
|
457
|
+
|
|
458
|
+### dirección estática versus dirección dinámica
|
|
459
|
+
|
|
460
|
+Utilice esta herramienta con cuidado y agregue cualquier dirección IP que su servicio necesite
|
|
461
|
+conectarse como "ignorado" Las IP, por supuesto, deben ser una dirección estática.
|
|
462
|
+
|
|
463
|
+### Bloqueo accidental e interrupción del servicio
|
|
464
|
+
|
|
465
|
+Si está utilizando Fail2ban en un entorno de red complejo o en un dispositivo de gama baja,
|
|
466
|
+Es posible que deba prestar especial atención al monitorear el estado del servicio.
|
|
467
|
+
|
|
468
|
+Si tiene problemas de red, con una conexión inestable, cualquier servicio TCP que
|
|
469
|
+estar orientado a la conexión de red sufrirá prohibiciones, porque los intentos constantes
|
|
470
|
+de reconexiones en fallos podrían interpretarse como ataques DOS o sondeos falsos.
|
|
471
|
+
|
|
472
|
+## Ver también
|
|
473
|
+
|
|
474
|
+* [README.md](README.md)
|
|
475
|
+
|
|
476
|
+## LICENCIA
|
|
477
|
+
|
|
478
|
+**CC BY-NC-SA**: el proyecto permite a los reutilizadores distribuir, remezclar, adaptar y construir sobre el material.
|
|
479
|
+en cualquier medio o formato únicamente con fines no comerciales, y únicamente siempre que se proporcione la atribución
|
|
480
|
+a los creadores involucrados. Si remezcla, adapta o construye sobre el material, debe obtener la licencia del material modificado.
|
|
481
|
+material bajo idénticos términos, incluye los siguientes elementos:
|
|
482
|
+
|
|
483
|
+* **POR**: el crédito se debe otorgar al creador de cada contenido respectivamente, comenzando por el primer colaborador.
|
|
484
|
+* **NC** – ¡Solo se permiten usos no comerciales de la obra, con excepciones si completa un problema aquí!
|
|
485
|
+* **SA** – Las adaptaciones deben compartirse bajo los mismos términos, debes obedecer estos términos y no cambiarlos.
|
|
486
|
+
|
|
487
|
+Para obtener más información, consulte [alpine/copyright.md](../../alpine/copyright.md) |