Re: Filtrar comodins/regex de les línies

Lluís Gras <[email protected]>
Newsgroups gmane.linux.debian.user.catalan
Message-ID <CAFGgMKyLtSSwhKnJLcqHEYhd+5UUr-UPF+m_WLGPr+GdHG2f5w@mail.gmail.com>
Jo no ho qualificaria d'experiència, però si us serveix per agafar alguna
idea que no sigui dolenta.

Tinc un parell de guions, l'un s'executa un cop al dia i descarrega una
llista i l'afegeix a un conjunt ipset.

root@gwbox:~# cat /usr/local/bin/llista_l1
#!/bin/sh

ipset create Firehol_L1 hash:net -exist

ipset flush  Firehol_L1

rm -f  /etc/firehol_level1.netset

wget -c https://iplists.firehol.org/files/firehol_level1.netset -O
/etc/firehol_level1.netset

if [ $? -eq 0 ]; then

sed -i '/192\.168\./d' /etc/firehol_level1.netset

for i in $(cat /etc/firehol_level1.netset | grep -v ^# ); do ipset add
Firehol_L1 $i; done

ipset save -file /etc/iptables/ipsets

fi

amb

ipset list Firehol_L1

es poden consultar les xarxes que bloqueja.

L'altre s'executa cada 5 minuts i és similar

root@gwbox:~# cat /usr/local/bin/ufwblock
#!/bin/sh

ipset create UFWBlockList hash:ip -exist

ipset flush  UFWBlockList

#Suposo que en equips nous farà falta afegir el syslog-ng o establir la
destinació del log de l'ufw.
# El *5 *en negreta parametritza quantes vegades ha d'aparèixer una ip al
log per afegir-la a l'ipset.

for i in $(cat /var/log/messages | grep BLOCK | awk -F= '{print $5}' | cut
-d " " -f 1 | sort | uniq -c | awk '{ if ($1 >=*5*) print $2}'); do ipset
add UFWBlockList $i; done

#en el meu cas, per estalviar-me bloquejos innecessaris.
ipset del UFWBlockList 192.168.2.2
ipset del UFWBlockList 192.168.1.1

ipset save -file /etc/iptables/ipsets

A banda, també vaig instal·lar el fwlogwatch que t'envia un informe diari.



Missatge de Alex Muntada <[email protected]> del dia dg., 21 de gen. 2024 a
les 13:22:

> Hola Narcis,
>
> > no es tracta dels números sinó de buscar patrons amb una cadena
> > fixa en comptes de buscar cadenes amb un patró.
> >
> > Exemple amb números de DNI; la llista seria:
> > ES......... Spain
> > FR......... France
> > .........DE Germany
> > IT......... Italy
> >
> > I donat un DNI «55667788DE» poder trobar la línia del patró
> > corresponent:
> > .........DE Germany
> > I així extraure el nom de l'estat després de l'espai: Germany.
>
> Amb Python, Perl o algun altre llenguatge de més alt nivell no
> seria més fàcil d'obtenir el país perquè podries capturar la
> part de l'expressió regular que t'interessi i utilitzar-la per
> indexar un diccionari:
>
> ```
> #!/usr/bin/perl
>
> use v5.32;
> use strict;
> use warnings;
>
> my %paisos = (
>     'DE' => 'Germany',
> );
>
> for my $item (<DATA>) {
>     chomp($item);
>     say "$item -> $paisos{$1}" if $item =~ /([A-Z]{2})$/;
> }
>
> __DATA__
> 12345678DE
> ```
>
> > Cas més sofisticat; Rangs d'adreces IPv4 en un fitxer
> > «spammers.txt»:
> > 55\.66\.77\.88
> > 66\.77\.88\..*
> > 99\.11\.22\.33
> >
> > i amb això trobar que si la IP de l'interlocutor té
> > coincidència a la llista, aleshores no acceptar-lo.
> > I així poder incloure rangs també.
>
> Les expressions regulars per als rangs IP són poc acurades perquè
> no tenen en compte les màscares de bits dels segments. En general
> és millor enfocar aquest problema d'una altra manera més eficient
> (per exemple amb ipset) i utilitzar llistes negres que tinguin
> una reputació prou bona, per exemple:
>
> https://github.com/firehol/blocklist-ipsets
>
> És un tema que fa uns mesos que em vull mirar amb deteniment,
> però en el que encara no he pogut aprofundir. Si algú hi té
> experiència, estaria bé que ens expliqui com ho fa per incloure
> llistes negres al tallafocs.
>
> Salut,
> Alex
>
> --
>   ⢀⣴⠾⠻⢶⣦⠀
>   ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada <[email protected]>
>   ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
>   ⠈⠳⣄⠀⠀⠀⠀
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.