14 votos

Desactivar el registro de UFW BLOCK en los registros del kernel

Tengo muchas de estas entradas en mi registro:

Sep 22 12:20:23 server0187 kernel: [    7.267934] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=27738 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:23 server0187 kernel: [    7.688848] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=27738 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:24 server0187 kernel: [    7.992988] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=27738 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:32 server0187 kernel: [   16.219594] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=52457 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:39 server0187 kernel: [    23.217712] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=7040 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:40 server0187 kernel: [   24.130220] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=7040 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:44 server0187 kernel: [   28.063447] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=61.62.8.132 DST=se.rv.er.ip LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=33267 DF PROTO=TCP SPT=33345 DPT=23 WINDOW=14520 RES=0x00 SYN URGP=0 
Sep 22 12:20:45 server0187 kernel: [   29.063934] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=61.62.8.132 DST=se.rv.er.ip LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=33268 DF PROTO=TCP SPT=33345 DPT=23 WINDOW=14520 RES=0x00 SYN URGP=0 
Sep 22 12:20:47 server0187 kernel: [   31.063621] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=61.62.8.132 DST=se.rv.er.ip LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=33269 DF PROTO=TCP SPT=33345 DPT=23 WINDOW=14520 RES=0x00 SYN URGP=0 
Sep 22 12:20:50 server0187 kernel: [   34.272558] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=37595 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:20:50 server0187 kernel: [   34.667044] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=37595 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:21:08 server0187 kernel: [   52.296316] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=113.69.80.129 DST=se.rv.er.ip LEN=40 TOS=0x00 PREC=0x00 TTL=48 ID=63510 PROTO=TCP SPT=22917 DPT=23 WINDOW=31379 RES=0x00 SYN URGP=0 
Sep 22 12:21:39 server0187 kernel: [   83.646607] [UFW BLOCK] IN=ens3 OUT= MAC=56:00:21:32:65:eb:fe:00:00:32:65:eb:08:99 SRC=151.233.57.112 DST=se.rv.er.ip LEN=44 TOS=0x00 PREC=0x00 TTL=37 ID=56703 PROTO=TCP SPT=25625 DPT=23 WINDOW=30217 RES=0x00 SYN URGP=0 

mis reglas de ufw son bastante estándar:

22/tcp (OpenSSH)           ALLOW IN    Anywhere                  
80,443/tcp (Nginx Full)    ALLOW IN    Anywhere                  
80,443/tcp                 ALLOW IN    Anywhere                  
25                         ALLOW IN    Anywhere                  
143                        ALLOW IN    Anywhere                  
993                        ALLOW IN    Anywhere                  
22                       ALLOW IN    Anywhere                  
21                       ALLOW IN    Anywhere                  
21/tcp                   ALLOW IN    Anywhere                  
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)             
80,443/tcp (Nginx Full (v6)) ALLOW IN    Anywhere (v6)             
80,443/tcp (v6)            ALLOW IN    Anywhere (v6)             
25 (v6)                    ALLOW IN    Anywhere (v6)             
143 (v6)                   ALLOW IN    Anywhere (v6)             
993 (v6)                   ALLOW IN    Anywhere (v6)             
22 (v6)                  ALLOW IN    Anywhere (v6)             
21 (v6)                  ALLOW IN    Anywhere (v6)             
21/tcp (v6)              ALLOW IN    Anywhere (v6) 

¿Cómo me deshago de estos?

17voto

Zee Puntos 118

Antes de leer esta respuesta, considera lo siguiente:

  1. Hay 65,534 puertos utilizables (1 - 65534) al conectar a un sistema, y una variedad de protocolos diferentes; esto significa que hay un ENORME número de posibles conexiones "bloqueadas" basadas en cualquier criterio que se haya establecido en las reglas de firewall para el 'tráfico permitido'.

  2. Cualquier cosa que esté expuesta a Internet recibirá intentos de conexión de diversas fuentes a la caja, tales como:

    • Trafico Permitido Legítimo
    • Exploradores de servicios
    • Fuerza bruta
    • Malware / Hackers
    • etc. (prácticamente cualquier cosa que quiera intentar conectarse, ya sea permitido o no).
  3. Cualquier cosa que esté públicamente expuesta a Internet recibirá intentos de encontrar servicios ejecutándose en el sistema, o intentará escanear la caja en búsqueda de puntos vulnerables. De ahí los alertas de BLOQUEO en el syslog.

  4. Los alertas de "BLOQUEO" del firewall significan que tu firewall está funcionando como se espera, y realmente no deberías preocuparte mucho por ver muchos de estos alertas, especialmente si tu sistema está directamente expuesto a Internet (y no detrás de un router, etc.).


Ahora, para abordar tu preocupación en tus comentarios sobre "Hay muchas de estas entradas" y "por eso estoy preocupado".

Cuando ejecutas un firewall de lista blanca con UFW, se agrega una regla por defecto como resultado de las configuraciones predeterminadas de UFW que automáticamente agregará una regla de REGISTRO para cualquier tráfico no aceptado o manejado de otra manera por las reglas del firewall. Por ejemplo, supongamos que tengo un servidor, y lo configuro para permitir solo SSH desde la dirección IP 1.2.3.4. Cualquier otro tráfico a mi servidor que no esté relacionado con el tráfico del servidor saliente o el tráfico SSH de 1.2.3.4 a mi servidor (y viceversa en la dirección opuesta) será bloqueado, y se enviará una alerta de UFW BLOQUEO a los registros del sistema para indicar que el tráfico que no coincide con una de mis reglas permitidas fue bloqueado. (Es decir, solo el tráfico de 1.2.3.4 al puerto 22 (SSH), o tráfico bidireccional relacionado con esa conexión, activará una alerta de BLOQUEO)

¿Deberías preocuparte por esto? Absolutamente no. Los servicios, servidores y redes expuestos a la web reciben una tonelada de tráfico, desde exploradores de servicios, conexiones legítimas, actores malintencionados maliciosos, etc. No es inusual ver muchos intentos de conectar a una red desde el exterior desde grandes rangos de direcciones IP, si tu sistema/servidor está expuesto a Internet, porque ese tipo de tráfico generalmente está bloqueado.


Ahora para abordar tu pregunta original de cómo desactivar las alertas de UFW BLOQUEO. Aunque no recomiendo desactivar las alertas (porque esto indica que tu firewall está funcionando como se espera), puedes desactivar los elementos de registro de alerta de UFW haciendo lo siguiente:

sudo ufw logging off

Ten en cuenta que realmente no te recomiendo desactivar el registro de tráfico bloqueado a menos que realmente necesites hacerlo (como por ejemplo, si syslog está ocupando demasiado espacio en disco, lo cual no es realmente común en estos casos), pero depende de ti si lo haces o no.

14voto

Sebastian Puntos 148

Si los registros te están molestando porque contaminan tu syslog, por favor edita /etc/rsyslog.d/20-ufw.conf, la última línea (en 18.04) lee

# & stop

remueve el # y luego reinicia el registro:

sudo service rsyslog restart

Ahora deberías poder encontrar tus registros de ufw solo en /var/log/ufw.log

1voto

ccie6747 Puntos 11

No hay una regla explícita para denegar tcp/23(telnet) en las reglas existentes en esta publicación, la regla implícita es la denegación/registro (por defecto). Para detener el registro y aún así denegar - crear una regla de denegación explícita en ens3.

ufw deny in en ens3 a cualquier puerto 23

o simplemente cortafuegos telnet para denegar telnet en todas las interfaces en el host:

ufw deny in 23

1voto

david mcgaughey Puntos 11

Coloque esto al final de sus reglas de firewall. Asegúrese de que siempre sea la última entrada de la regla:

Cualquier lugar DENEGAR Cualquier lugar

Esto es lo mismo que la regla de denegar todo que hay por defecto, excepto que no se registra. Esto permite continuar registrando las reglas de permitir que vienen antes de la regla de denegar todo al final de las reglas.

0voto

ferdymercury Puntos 11

Para deshacerse de esos, creé un script de Python para analizar estas IPs y denegar explícitamente la comunicación con mi servidor. De esta manera, los syslogs están libres de advertencias y esas (unas 3000) IPs maliciosas ya no pueden hacer ping.

import glob
import gzip
import re
import subprocess

def get_lines(log_glob):
    """Devuelve un iterador de cada línea en todos los archivos que coinciden con log_glob.
    Las líneas se ordenan de más reciente a más antigua.
    Los archivos se ordenan por el entero en el sufijo del nombre del archivo de registro.
    El sufijo puede ser uno de los siguientes:
         .X (donde X es un entero)
         .X.gz (donde X es un entero)
    Si el nombre de archivo no termina ni en uno ni en otro sufijo, se trata como si X=0
    https://www.saltycrane.com/blog/2010/01/iterating-over-lines-multiple-linux-log-files-using-python/
    """
    def sort_by_suffix(fname):
        m = re.search(r'.(?:\.(\d+))?(?:\.gz)?$', fname)
        if m.lastindex:
            suf = int(m.group(1))
        else:
            suf = 0
        return suf

    filelist = glob.glob(log_glob)
    for filename in sorted(filelist, key=sort_by_suffix):
        if filename.endswith('.gz'):
            fh = gzip.open(filename)
        else:
            fh = open(filename)
        for line in reversed(fh.readlines()):
            yield line
        fh.close()

if __name__ == "__main__":

    ip = "aquí va tu ip"
    mac = "aquí::tu::mac"
    eth = "aquí el nombre de tu eth"
    # https://stackoverflow.com/questions/11264005/using-a-regex-to-match-ip-addresses-in-python
    pat = re.compile(r" \[UFW BLOCK\] IN="+eth+" OUT= MAC="+mac+" SRC=(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) DST="+ip+" LEN=")

    badips = []
    for i, line in enumerate(get_lines('/var/log/ufw*')):
        line = line.rstrip()
        line = str(line)
        # ~ print(i, line)
        res = re.search(pat,line)
        if res is None:
            if re.search(r"SRC=your\.ip\.addr\.", line) is not None:
                # ~ print('Broadcast',line)
                continue
            else:
                # ~ print(line)
                continue
        else:
            badip = '.'.join(res.groups(0))
            badips.append(badip)
    badips = sorted(list(dict.fromkeys(badips)))
    # ~ print(badips)
    ips24 = []
    for ip in badips:
        if len(ips24):
            lastip = ips24[-1].split('.')
            thisip = ip.split('.')
            if lastip[0:3] == thisip[0:3]:
                if lastip[3] != "0/24" :
                    lastip[3] = "0/24"
                    ips24[-1] = '.'.join(lastip)
            else:
                ips24.append(ip)
        else:
            ips24.append(ip)
    # Eliminar de todos modos todo de la subred
    for i, ip in enumerate(ips24):
        theip = ip.split('.')
        if theip[3] != "0/24":
            theip[3] = "0/24"
            ips24[i] = '.'.join(theip)
    ips24 = sorted(list(dict.fromkeys(ips24)))
    # ~ print(ips24)
    ips16 = []
    for ip in ips24:
        if len(ips16):
            lastip = ips16[-1].split('.')
            thisip = ip.split('.')
            if lastip[0:2] == thisip[0:2]:
                if lastip[3] != "0/16" or lastip[2] != "0":
                    lastip[3] = "0/16"
                    lastip[2] = "0"
                    ips16[-1] = '.'.join(lastip)
            else:
                ips16.append(ip)
        else:
            ips16.append(ip)
    ips16 = sorted(list(dict.fromkeys(ips16)))
    # ~ print(ips16)

    ufips = str(subprocess.run(['sudo','ufw','status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)).split('\\n')
    uips = []
    pat = re.compile(r"Anywhere[ ]+DENY[ ]+(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?[/]?[12][46])")
    for uip in ufips:
        res = re.search(pat,uip)
        if res is None:
            # ~ print (uip)
            continue
        else:
            badip = '.'.join(res.groups(0))
            # ~ print(badip)
            uips.append(badip)
    uips = sorted(list(dict.fromkeys(uips)))
    # ~ print(uips[:10])

    newips = []
    for ip in ips16:
        if not ip in uips:
            newips.append(ip)
    print(len(badips),len(ips24),len(ips16),len(uips),len(newips))

    for ip in newips:
        print(ip)
        proc = subprocess.Popen(['sudo','ufw','deny','from',ip,'to','any'])
        proc.wait()

    print('Listo.')

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X