vypnout logování konkrétních domén v dnsmasq

Všechny ostatní programy, které nemají samostatnou sekci

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Da Gony 28. 8. 2024 14:41

V dnsmasq bych potřeboval, aby nelogoval dotazy na určité domény. Nejde to řešit triviálně umlčením, protože pochází z víc počítačů v síti a nebo konkrétní počítač má 90% dotazů(unikátních) v pořádku

(běží s parametre --log-queries)
Protože jinak mám zaflákany log řádkami typu

query A from 10.1.1.4 *****.microsoft.com
config *****.microsoft.com 0.0.0.0
reply 10.,,,, ***** is 0.0.0.0
kažých x sekund

zkoušel jsem změnit i odpověď 0.0.0.0 za NXDOMAIN. a ne vždy to pomáhá (ono těch domén je víc jako odposlech.tcl.com nebo cmoud.huacdn.cn) - na každou zabírá něco jiného, ale i tak půlka je takových, na kterou nic nezabírá a log je z 90% plný tohoto svinsta. Bohužel ne všechna zařízení jsou "převychovatelná". Slušná zařízení se ptají jen na příčetné domény.

Jde to nějak řešit v rámci instance jednoho dnsmasq démona?
Da Gony
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 28. 8. 2024 14:54

AI:

V `dnsmasq` bohužel neexistuje přímo vestavěná možnost filtrovat logování dotazů na konkrétní domény. Nicméně existují způsoby, jak toho dosáhnout pomocí úprav konfigurace nebo přesměrování logu do externího skriptu, který tyto nežádoucí řádky odstraní před jejich uložením do souboru.

Možná řešení

1. Filtrování logu pomocí `syslog` nebo externího skriptu:
Můžete přesměrovat logování `dnsmasq` do souboru a následně použít skript (např. pomocí `grep` nebo `awk`), který z logu odstraňuje řádky obsahující nežádoucí domény. Například můžete upravit `/etc/dnsmasq.conf` nebo parametr spuštění `dnsmasq` tak, aby logoval do specifického souboru:
Kód: Vybrat vše
dnsmasq --log-queries --log-facility=/var/log/dnsmasq.log

Poté můžete použít skript jako tento ke zpracování logu:
Kód: Vybrat vše
tail -f /var/log/dnsmasq.log | grep -vE 'microsoft.com|odposlech.tcl.com|cmoud.huacdn.cn' > /var/log/dnsmasq_filtered.log

Tento skript vyfiltruje záznamy, které obsahují nežádoucí domény, a uloží výsledek do jiného logu.

2. Použití `rsyslog` pro filtrování:
Pokud `dnsmasq` loguje přes `syslog`, můžete upravit `/etc/rsyslog.conf` nebo `/etc/rsyslog.d/` a vytvořit pravidlo pro filtrování. Například:
Kód: Vybrat vše
if $msg contains "microsoft.com" then stop

Toto pravidlo zastaví logování zpráv obsahujících doménu `microsoft.com`. Další nežádoucí domény můžete přidat stejným způsobem.

3. Modifikace odpovědi pomocí `dnsmasq.conf`:
Už jste zmiňoval, že jste zkoušel odpovědi změnit na `NXDOMAIN`. Možná by stálo za to se podívat na specifická nastavení, jako například použití `server=/doména/#` k filtrování nebo přesměrování dotazů na lokální adresu, což by mohlo snížit frekvenci dotazů:
Kód: Vybrat vše
address=/odposlech.tcl.com/#
address=/cmoud.huacdn.cn/#

Zkuste různé varianty, abyste zjistil, co funguje nejlépe na specifické dotazy.

4. Vyřazení dotazů pomocí `ipset`:
Pokročilejší variantou je nasazení `ipset` pro blokování dotazů na určité domény, což může částečně snížit počet logovaných řádků. Např.:
Kód: Vybrat vše
ipset create blocklist hash:ip
iptables -I INPUT -m set --match-set blocklist src -j DROP

Poté přidáte IP adresy nebo domény do této sady.

Závěr

Nejelegantnějším řešením je použití filtrace logů pomocí `rsyslog` nebo skriptu, protože vám to poskytuje nejvíce flexibility při správě logů a nevyžaduje to zásahy do samotné funkce `dnsmasq`.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Da Gony 28. 8. 2024 15:27

Odstraněna duplicita
Naposledy upravil Wikan dne 28. 8. 2024 15:59, celkově upraveno 1
Důvod: Duplicitní příspěvek
Da Gony
Junior
Uživatelský avatar

Odeslat příspěvekod Da Gony 28. 8. 2024 15:30

Co to zase je za halucinace? Já chci, aby ty logové záznamy nevznikaly nikde. k čemu je mi rada 4 iptables, když dns dotazy jdou od fixních ip adres zařízení v síti na fixní adresy dns resolveru. Ledaže by ipbtables dokázalo rozlišit hodnotu query (nějakou nepřehlednou prasečinou skenování bajtů na offesetu)

A nefunkčnost rady 3 jsem popsal ,že mi je to k ničemu, mohu zkoušet jak chci, ale jedno vím jistě - že pořád mám smetí v journalu. Takže to je fajn, že AI, píše, že jsem zmiňoval, ale kašle na to. A její rada Zjistěte co funguje nejlépe je taky naprd- nefunguje z sekce 3 Modifikace nic. (nebo spíš tak, že jak opice u každého dns jména bych musel sledovat co na něj zabírá, aby se nepropisovalo do logu)

Neloguju do souboru, loguju systémového journalu.

Inteligentní řešení by bylo to řešit přímo tam, kde mám konfiguraci, takže v případě blokovaných domén to rovnou přilepím k existujícímu záznamu, ale to pitommou AI asi nenapadne. (že by to neexistovalo?)

address=/watson.microsoft.com/0.0.0.0,no-log
address=/vporadku.domena/,no-log (koliduje s NXDOMAIN )

To jsem nenapsal, ale jsou 2 skupiny domén, které chci vyřaditz logu :
1. - ty blokované (nebo s manuální IP)
2. - ty co blokované nejsou


A nebo tam dát aspoň rate limit a nebo ideálně - pozdržení logu, že to daný řádek (bohužel trojici query-cached-reply) zapamatuje v bufferu po nějakou dobu a pak to do logu vyplivne s prefixem 999x repetions: ...


... ale to chci asi moc
Da Gony
Junior
Uživatelský avatar


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků