Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.user.catalan > #7634 > unrolled thread

Filtrar comodins/regex de les línies

Started byNarcis Garcia <debianlists@actiu.net>
First post2024-01-17 08:40 +0100
Last post2024-01-26 12:00 +0100
Articles 15 — 9 participants

Back to article view | Back to linux.debian.user.catalan


Contents

  Filtrar comodins/regex de les línies Narcis Garcia <debianlists@actiu.net> - 2024-01-17 08:40 +0100
    Re: Filtrar comodins/regex de les línies jordi Perera <zjordi_llistes@xarxa1.net> - 2024-01-17 12:20 +0100
      Re: Filtrar comodins/regex de les línies Narcis Garcia <debianlists@actiu.net> - 2024-01-17 14:00 +0100
      Re: Filtrar comodins/regex de les línies Narcis Garcia <narcisgarcia@gilug.org> - 2024-01-17 14:30 +0100
        Re: Filtrar comodins/regex de les línies Xavier Drudis Ferran <xdrudis@tinet.cat> - 2024-01-17 15:40 +0100
          Re: Filtrar comodins/regex de les línies Narcis Garcia <debianlists@actiu.net> - 2024-01-17 19:40 +0100
            Re: Filtrar comodins/regex de les línies papapep <papapep@gmail.com> - 2024-01-17 20:10 +0100
    Re: Filtrar comodins/regex de les línies julio <jamoros@riseup.net> - 2024-01-17 16:20 +0100
    Re: Filtrar comodins/regex de les línies Ernest Adrogué <nr9@posteo.de> - 2024-01-17 21:50 +0100
      Re: Filtrar comodins/regex de les línies Narcis Garcia <debianlists@actiu.net> - 2024-01-18 08:00 +0100
        Re: Filtrar comodins/regex de les línies Alex Muntada <alexm@debian.org> - 2024-01-21 13:30 +0100
          Re: Filtrar comodins/regex de les línies Lluís Gras <lluis.gras@gmail.com> - 2024-01-22 14:20 +0100
            Re: Filtrar comodins/regex de les línies Lluís Gras <lluis.gras@gmail.com> - 2024-01-22 14:30 +0100
              Re: Filtrar comodins/regex de les línies Alex Muntada <alexm@debian.org> - 2024-01-24 10:00 +0100
            Re: Filtrar comodins/regex de les línies Alex Muntada <alexm@debian.org> - 2024-01-26 12:00 +0100

#7634 — Filtrar comodins/regex de les línies

FromNarcis Garcia <debianlists@actiu.net>
Date2024-01-17 08:40 +0100
SubjectFiltrar comodins/regex de les línies
Message-ID<HX8GK-3Ezs-9@gated-at.bofh.it>
Bones,

Tinc un fitxer de text, com podria ser per exemple una llista de números 
de telèfon (coneguts.txt):
972123456
972111133
972111134
972111135
972111136
972789012
però m'agradaria representar-hi rangs compatibles (expressions regulars) 
per abreviar:
972123456
9721111..
972789012

En un moment donat, vull localitzar la línia que coincideixi amb la dada 
que tinc (expressió 972123456), seguint l'exemple dels números de telèfon:
$ grep coneguts.txt -e '972123456'
972123456

així que també m'agradaria fer-ho al revés; localitzar l'expressió 
compatible amb una cadena:
$ grep coneguts.txt -e '972111199'
9721111..

Algú sap com fer-ho?

Gràcies.

-- 
Narcis Garcia

__________
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should remove and omit any @, dot and mailto combinations against 
automated addresses collectors.

[toc] | [next] | [standalone]


#7635

Fromjordi Perera <zjordi_llistes@xarxa1.net>
Date2024-01-17 12:20 +0100
Message-ID<HXc7D-3GId-1@gated-at.bofh.it>
In reply to#7634
On 17-01-2024 8:39, Narcis Garcia wrote:
> Bones,
> 
> Tinc un fitxer de text, com podria ser per exemple una llista de números 
> de telèfon (coneguts.txt):
> 972123456
> 972111133
> 972111134
> 972111135
> 972111136
> 972789012
> però m'agradaria representar-hi rangs compatibles (expressions regulars) 
> per abreviar:
> 972123456
> 9721111..
> 972789012
> 
> En un moment donat, vull localitzar la línia que coincideixi amb la dada 
> que tinc (expressió 972123456), seguint l'exemple dels números de telèfon:
> $ grep coneguts.txt -e '972123456'
> 972123456
> 
> així que també m'agradaria fer-ho al revés; localitzar l'expressió 
> compatible amb una cadena:
> $ grep coneguts.txt -e '972111199'
> 9721111..
> 
> Algú sap com fer-ho?
> 
> Gràcies.
> 

això?

exemple buscar el que contingui un 34

grep -E '[0-9]?34[0-9]?' telefons.txt


-- 
Jordi Perera

[toc] | [prev] | [next] | [standalone]


#7636

FromNarcis Garcia <debianlists@actiu.net>
Date2024-01-17 14:00 +0100
Message-ID<HXdGq-3HsG-1@gated-at.bofh.it>
In reply to#7635
El 17/1/24 a les 12:10, jordi Perera ha escrit:
> On 17-01-2024 8:39, Narcis Garcia wrote:
>> Bones,
>>
>> Tinc un fitxer de text, com podria ser per exemple una llista de 
>> números de telèfon (coneguts.txt):
>> 972123456
>> 972111133
>> 972111134
>> 972111135
>> 972111136
>> 972789012
>> però m'agradaria representar-hi rangs compatibles (expressions 
>> regulars) per abreviar:
>> 972123456
>> 9721111..
>> 972789012
>>
>> En un moment donat, vull localitzar la línia que coincideixi amb la 
>> dada que tinc (expressió 972123456), seguint l'exemple dels números de 
>> telèfon:
>> $ grep coneguts.txt -e '972123456'
>> 972123456
>>
>> així que també m'agradaria fer-ho al revés; localitzar l'expressió 
>> compatible amb una cadena:
>> $ grep coneguts.txt -e '972111199'
>> 9721111..
>>
>> Algú sap com fer-ho?
>>
>> Gràcies.
>>
> 
> això?
> 
> exemple buscar el que contingui un 34
> 
> grep -E '[0-9]?34[0-9]?' telefons.txt
> 
> 

No, seguint el teu exemple, voldria buscar per exemple amb quins patrons 
encaixaria un «34» de prefix:
34930000000
3.930000000
.4930000000
44930000000
4.930000000

Buscant un «34» inicial m'hauria de tornar les 3 primeres línies (el 
punt és comodí)


-- 

Narcis Garcia

__________
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should remove and omit any @, dot and mailto combinations against 
automated addresses collectors.

[toc] | [prev] | [next] | [standalone]


#7637

FromNarcis Garcia <narcisgarcia@gilug.org>
Date2024-01-17 14:30 +0100
Message-ID<HXe9r-3HUa-1@gated-at.bofh.it>
In reply to#7635
El 17/1/24 a les 12:10, jordi Perera ha escrit:
> On 17-01-2024 8:39, Narcis Garcia wrote:
>> Bones,
>>
>> Tinc un fitxer de text, com podria ser per exemple una llista de 
>> números de telèfon (coneguts.txt):
>> 972123456
>> 972111133
>> 972111134
>> 972111135
>> 972111136
>> 972789012
>> però m'agradaria representar-hi rangs compatibles (expressions 
>> regulars) per abreviar:
>> 972123456
>> 9721111..
>> 972789012
>>
>> En un moment donat, vull localitzar la línia que coincideixi amb la 
>> dada que tinc (expressió 972123456), seguint l'exemple dels números de 
>> telèfon:
>> $ grep coneguts.txt -e '972123456'
>> 972123456
>>
>> així que també m'agradaria fer-ho al revés; localitzar l'expressió 
>> compatible amb una cadena:
>> $ grep coneguts.txt -e '972111199'
>> 9721111..
>>
>> Algú sap com fer-ho?
>>
>> Gràcies.
>>
> 
> això?
> 
> exemple buscar el que contingui un 34
> 
> grep -E '[0-9]?34[0-9]?' telefons.txt
> 
> 

No, seguint el teu exemple, voldria buscar per exemple amb quins patrons 
encaixaria un «34» de prefix:
34930000000
3.930000000
.4930000000
44930000000
4.930000000

Buscant un «34» inicial m'hauria de tornar les 3 primeres línies (el 
punt és comodí)

-- 
Narcis Garcia

[toc] | [prev] | [next] | [standalone]


#7638

FromXavier Drudis Ferran <xdrudis@tinet.cat>
Date2024-01-17 15:40 +0100
Message-ID<HXffb-3IvH-5@gated-at.bofh.it>
In reply to#7637

El primer cas que demanaves sembla fàcil

grep -f fitxer_regexps.txt fitxer_nums.txt

Pel segon no sé cap comanda directa, potser alguna cosa tipus

#!/bin/bash
text=${1:-93123111}
fitxer_regexps=${2:-fitxer_regexps.txt}

for r in $(< "$fitxer_regexps") ; do {
   grep -qE "$r" - <<< "$text" && echo "$r" ;
} ; done


Però això podria ser més eficient si t'ho programes el perl o python o
el que sigui...

[toc] | [prev] | [next] | [standalone]


#7640

FromNarcis Garcia <debianlists@actiu.net>
Date2024-01-17 19:40 +0100
Message-ID<HXiZr-3KJZ-5@gated-at.bofh.it>
In reply to#7638
Aquesta proposta(2) té sentit, i de fet necessito incloure-ho en un 
programet ShellScript, però volia veure si podia evitar un bucle «for» 
utilitzant alguna comanda directa de grep, pcregrep o similar.

Gràcies.


El 17/1/24 a les 15:35, Xavier Drudis Ferran ha escrit:
> 
> 
> El primer cas que demanaves sembla fàcil
> 
> grep -f fitxer_regexps.txt fitxer_nums.txt
> 
> Pel segon no sé cap comanda directa, potser alguna cosa tipus
> 
> #!/bin/bash
> text=${1:-93123111}
> fitxer_regexps=${2:-fitxer_regexps.txt}
> 
> for r in $(< "$fitxer_regexps") ; do {
>     grep -qE "$r" - <<< "$text" && echo "$r" ;
> } ; done
> 
> 
> Però això podria ser més eficient si t'ho programes el perl o python o
> el que sigui...
> 

-- 

Narcis Garcia

__________
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should remove and omit any @, dot and mailto combinations against 
automated addresses collectors.

[toc] | [prev] | [next] | [standalone]


#7643

Frompapapep <papapep@gmail.com>
Date2024-01-17 20:10 +0100
Message-ID<HXjsu-3L9H-37@gated-at.bofh.it>
In reply to#7640

[Multipart message — attachments visible in raw view] — view raw

Per a aquestes cosetes, awk és una navalla suïssa. Amb un oneliner com:

awk '/pauta_a_buscar/ {print $0}' fitxer_on_buscar

et treurà totes les coincidències.

Salut.


El 17 de gener de 2024 19:34:07 CET, Narcis Garcia <debianlists@actiu.net> ha escrit:
>Aquesta proposta(2) té sentit, i de fet necessito incloure-ho en un programet ShellScript, però volia veure si podia evitar un bucle «for» utilitzant alguna comanda directa de grep, pcregrep o similar.
>
>Gràcies.
>
>
>El 17/1/24 a les 15:35, Xavier Drudis Ferran ha escrit:
>> 
>> 
>> El primer cas que demanaves sembla fàcil
>> 
>> grep -f fitxer_regexps.txt fitxer_nums.txt
>> 
>> Pel segon no sé cap comanda directa, potser alguna cosa tipus
>> 
>> #!/bin/bash
>> text=${1:-93123111}
>> fitxer_regexps=${2:-fitxer_regexps.txt}
>> 
>> for r in $(< "$fitxer_regexps") ; do {
>>     grep -qE "$r" - <<< "$text" && echo "$r" ;
>> } ; done
>> 
>> 
>> Però això podria ser més eficient si t'ho programes el perl o python o
>> el que sigui...
>> 
>
>-- 
>
>Narcis Garcia
>
>__________
>I'm using this dedicated address because personal addresses aren't masked enough at this mail public archive. Public archive administrator should remove and omit any @, dot and mailto combinations against automated addresses collectors.
>

[toc] | [prev] | [next] | [standalone]


#7639

Fromjulio <jamoros@riseup.net>
Date2024-01-17 16:20 +0100
Message-ID<HXfRT-3IXH-5@gated-at.bofh.it>
In reply to#7634

El 17 de gener de 2024 8:39:26 CET, Narcis Garcia <debianlists@actiu.net> ha escrit:
>Bones,
>
>Tinc un fitxer de text, com podria ser per exemple una llista de números de telèfon (coneguts.txt):
>972123456
>972111133
>972111134
>972111135
>972111136
>972789012
>però m'agradaria representar-hi rangs compatibles (expressions regulars) per abreviar:
>972123456
>9721111..
>972789012

Com no estem acotant amb ^  ni amb $ 


9
7
2
.
etcètera
97
72
21
9.
.9
etc
972
97.
9.2

I això sense fent servir només dígits i el caràcter . no literal.

Sembla un problema matemàtic de combinatòria :)

O probablement no ho he entès.

Vagi bé.


>En un moment donat, vull localitzar la línia que coincideixi amb la dada que tinc (expressió 972123456), seguint l'exemple dels números de telèfon:
>$ grep coneguts.txt -e '972123456'
>972123456
>
>així que també m'agradaria fer-ho al revés; localitzar l'expressió compatible amb una cadena:
>$ grep coneguts.txt -e '972111199'
>9721111..
>
>Algú sap com fer-ho?
>
>Gràcies.
>

-------------------------------------
-- 
El 2003 el català era la llengua habitual del 46 % dels catalans. Al 2018 només del 36 %. Si els castellanoparlants no actuem, desapareixerà.

El 3 de novembre representa el moment de l'any en el que les dones deixen de cobrar en comparació amb els homes. Hem d’ajudar a les dones a eliminar aquesta data.

L’administració pública cada any es gasta milions d’euros en llicències de programari privatiu. Utilitzant programari lliure estalviem costos i incentivem l’economia local.

La neutralitat davant les desigualtats acaba accentuant-les.

[toc] | [prev] | [next] | [standalone]


#7644

FromErnest Adrogué <nr9@posteo.de>
Date2024-01-17 21:50 +0100
Message-ID<HXl1f-3LV1-7@gated-at.bofh.it>
In reply to#7634
2024-01-17, 08:39 (+0100); Narcis Garcia escriu:
> Bones,
> 
> Tinc un fitxer de text, com podria ser per exemple una llista de números de
> telèfon (coneguts.txt):
> 972123456
> 972111133
> 972111134
> 972111135
> 972111136
> 972789012
> però m'agradaria representar-hi rangs compatibles (expressions regulars) per
> abreviar:
> 972123456
> 9721111..
> 972789012

Hi ha una cosa que no entenc.  El patró "9721111.." representa els
números 972111100, 972111101, 972111102, ..., 972111198, 972111199.
Mentre que a la teva llista només hi tens el 972111133, 972111134,
972111135, i el 972111136.  Si substitueixes aquests números pel patró
"9721111.." el resultat és un conjunt de números que és DIFERENT de
l'original.


Salutacions

[toc] | [prev] | [next] | [standalone]


#7645

FromNarcis Garcia <debianlists@actiu.net>
Date2024-01-18 08:00 +0100
Message-ID<HXuxz-3RFX-1@gated-at.bofh.it>
In reply to#7644
El 17/1/24 a les 21:39, Ernest Adrogué ha escrit:
> 2024-01-17, 08:39 (+0100); Narcis Garcia escriu:
>> Bones,
>>
>> Tinc un fitxer de text, com podria ser per exemple una llista de números de
>> telèfon (coneguts.txt):
>> 972123456
>> 972111133
>> 972111134
>> 972111135
>> 972111136
>> 972789012
>> però m'agradaria representar-hi rangs compatibles (expressions regulars) per
>> abreviar:
>> 972123456
>> 9721111..
>> 972789012
> 
> Hi ha una cosa que no entenc.  El patró "9721111.." representa els
> números 972111100, 972111101, 972111102, ..., 972111198, 972111199.
> Mentre que a la teva llista només hi tens el 972111133, 972111134,
> 972111135, i el 972111136.  Si substitueixes aquests números pel patró
> "9721111.." el resultat és un conjunt de números que és DIFERENT de
> l'original.
> 

No era més que un exemple; la primera llista com si fos la típica (per a 
filtrar de forma senzilla amb grep), i la segona com voldria poder-la 
fer. És a dir, en comptes de fer una llista amb 100 línies «9721111xx» 
(del 00 al 99) poder-hi posar un patró en una sola línia.

PERÒ igualment el tema dels números de telèfon és només un exemple 
senzill; 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.

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é.

-- 

Narcis Garcia

__________
I'm using this dedicated address because personal addresses aren't 
masked enough at this mail public archive. Public archive administrator 
should remove and omit any @, dot and mailto combinations against 
automated addresses collectors.

[toc] | [prev] | [next] | [standalone]


#7647

FromAlex Muntada <alexm@debian.org>
Date2024-01-21 13:30 +0100
Message-ID<HYF7z-4zJb-7@gated-at.bofh.it>
In reply to#7645

[Multipart message — attachments visible in raw view] — view raw

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 <alexm@debian.org>
  ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
  ⠈⠳⣄⠀⠀⠀⠀

[toc] | [prev] | [next] | [standalone]


#7648

FromLluís Gras <lluis.gras@gmail.com>
Date2024-01-22 14:20 +0100
Message-ID<HZ2nv-4P4Z-1@gated-at.bofh.it>
In reply to#7647

[Multipart message — attachments visible in raw view] — view raw

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 <alexm@debian.org> 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 <alexm@debian.org>
>   ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
>   ⠈⠳⣄⠀⠀⠀⠀
>
>

[toc] | [prev] | [next] | [standalone]


#7649

FromLluís Gras <lluis.gras@gmail.com>
Date2024-01-22 14:30 +0100
Message-ID<HZ2xb-4P81-7@gated-at.bofh.it>
In reply to#7648

[Multipart message — attachments visible in raw view] — view raw

I m'he oblidat de comentar que cal afegir les pertinents regles al UFW

root@gwbox:~# tail -n 12 /etc/ufw/before.rules
# Ipset
# Un cop comprovat que funciona, ens estalviem els logs.
#-A ufw-before-input -m set --match-set Firehol_L1 src -j LOG --log-level 4
--log-prefix "Blocked by IPset: "

#-A ufw-before-input -m set --match-set UFWBlockList src -j LOG --log-level
4 --log-prefix "Blocked by IPset: "

-A ufw-before-input -m set --match-set Firehol_L1 src -j DROP

-A ufw-before-input -m set --match-set UFWBlockList src -j DROP

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

Missatge de Lluís Gras <lluis.gras@gmail.com> del dia dl., 22 de gen. 2024
a les 14:14:

> 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 <alexm@debian.org> 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 <alexm@debian.org>
>>   ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
>>   ⠈⠳⣄⠀⠀⠀⠀
>>
>>

[toc] | [prev] | [next] | [standalone]


#7650

FromAlex Muntada <alexm@debian.org>
Date2024-01-24 10:00 +0100
Message-ID<HZHgZ-5dJg-3@gated-at.bofh.it>
In reply to#7649

[Multipart message — attachments visible in raw view] — view raw

Hola Lluís,

> I m'he oblidat de comentar que cal afegir les pertinents regles
> al UFW

Tot això que has compartit em sembla molt més fàcil d'entendre i
senzill de provar que configurar firehol sencer.

Salut i moltes gràcies!
Alex

--
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada <alexm@debian.org>
  ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
  ⠈⠳⣄⠀⠀⠀⠀

[toc] | [prev] | [next] | [standalone]


#7651

FromAlex Muntada <alexm@debian.org>
Date2024-01-26 12:00 +0100
Message-ID<I0s6d-5Go3-9@gated-at.bofh.it>
In reply to#7648

[Multipart message — attachments visible in raw view] — view raw

Hola Lluís,

amb la teva ajuda, ja tinc funcionant llistes negres amb ipset :)

> # 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

Per fer això jo utilitzo fail2ban, però és cert que està molt
lligat a les iptables i, si la teva llista negra personal creix,
aleshores pot anar més lent que fent-ho amb ipset.

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

Té bona pinta, tot i que m'he adonat que el paquet està orfe.

Salut i gràcies de nou!
Alex

--
  ⢀⣴⠾⠻⢶⣦⠀
  ⣾⠁⢠⠒⠀⣿⡁   Alex Muntada <alexm@debian.org>
  ⢿⡄⠘⠷⠚⠋   Debian Developer 🍥 log.alexm.org
  ⠈⠳⣄⠀⠀⠀⠀

[toc] | [prev] | [standalone]


Back to top | Article view | linux.debian.user.catalan


csiph-web