Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user.catalan > #7634 > unrolled thread
| Started by | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| First post | 2024-01-17 08:40 +0100 |
| Last post | 2024-01-26 12:00 +0100 |
| Articles | 15 — 9 participants |
Back to article view | Back to linux.debian.user.catalan
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
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2024-01-17 08:40 +0100 |
| Subject | Filtrar 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]
| From | jordi Perera <zjordi_llistes@xarxa1.net> |
|---|---|
| Date | 2024-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]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2024-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]
| From | Narcis Garcia <narcisgarcia@gilug.org> |
|---|---|
| Date | 2024-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]
| From | Xavier Drudis Ferran <xdrudis@tinet.cat> |
|---|---|
| Date | 2024-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]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2024-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]
| From | papapep <papapep@gmail.com> |
|---|---|
| Date | 2024-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]
| From | julio <jamoros@riseup.net> |
|---|---|
| Date | 2024-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]
| From | Ernest Adrogué <nr9@posteo.de> |
|---|---|
| Date | 2024-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]
| From | Narcis Garcia <debianlists@actiu.net> |
|---|---|
| Date | 2024-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]
| From | Alex Muntada <alexm@debian.org> |
|---|---|
| Date | 2024-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]
| From | Lluís Gras <lluis.gras@gmail.com> |
|---|---|
| Date | 2024-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]
| From | Lluís Gras <lluis.gras@gmail.com> |
|---|---|
| Date | 2024-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]
| From | Alex Muntada <alexm@debian.org> |
|---|---|
| Date | 2024-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]
| From | Alex Muntada <alexm@debian.org> |
|---|---|
| Date | 2024-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