AdGuard Home で TXT レコード攻撃を防ぐ方法
AdGuard HomeでTXTレコード攻撃をガードしよう!💪
こんにちは〜!😊 今日は「AdGuard Home」が大量のTXTクエリに踏み台にされるリスクを減らす、対策を紹介するよ〜!
⚙️ fail2ban+rsyslog で自動ブロック
次は「疑わしきTXTクエリを送ってきたIPを自動でBAN」しちゃう仕組みを作るよ!
1 fail2banを入れよう
sudo dnf install -y epel-release
sudo dnf install -y fail2ban
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban
2 AdGuard Homeのクエリログ設定
ログをJSONで書き出すように、設定ファイルにポン!
# vi /opt/AdGuardHome/AdGuardHome.yaml
querylog:
dir_path: "/var/log/adguardhome"
ignored: []
interval: 24h
size_memory: 1000
enabled: true
file_enabled:true
設定後は:
sudo systemctl restart AdGuardHome
3 rsyslogでTXTクエリだけピックアップ
JSONログを5秒ごとにチェック → TXT行だけ専用ファイルに保存!
# /etc/rsyslog.d/adguard-txt.conf
module(load="imfile" PollingInterval="5")
input(type="imfile"
File="/var/log/adguardhome/querylog.json"
Tag="adguard-txt"
StateFile="adguard-txt-state"
Severity="info"
Facility="local7"
PersistStateInterval="200"
)
if $msg contains '"QT":"TXT"' then /var/log/adguardhome/txt-queries.log
& stop
反映したら:
sudo systemctl restart rsyslog
4 fail2banでBANルールを追加
フィルター&jailを用意して、TXTクエリ送信者をiptablesでブロック!
# /etc/fail2ban/filter.d/adguard-txt-abuse.conf
[Definition]
failregex = .*"QT":"TXT".*"IP":"".*
ignoreregex =
# /etc/fail2ban/jail.local
[adguard-txt-abuse]
enabled = true
filter = adguard-txt-abuse
logpath = /var/log/adguardhome/txt-queries.log
bantime = 3600
findtime = 60
maxretry = 5
action = iptables[name=AG-TXT, port=53, protocol=udp]
最後に:
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban
🚀 動作チェック
- TXTクエリを投げる:
dig @127.0.0.1 -p 53 example.com TXT
- ログ確認:
sudo tail -f /var/log/adguardhome/txt-queries.log
- BAN状況を見る:
sudo fail2ban-client status adguard-txt-abuse
↑ “Currently banned” が増えたらバッチリです!✨
コメント
コメントを投稿