FireWall用のブラックリスト自動生成
自宅サーバでは、FireWall を動かしているけど、アクセス履歴を見ると色々と怪しい接続が気になる。ある程度は LOG を確認して、FireWall の拒否リストを整理していたけど、自動化してみた。
FireWall では、主要なのは iptables で管理し、巨大な拒否リストになりそうなものは、ipset で拒否リストを作り、iptables から、その ipset を参照するようにしている。
GEOIPDENY により国ごと拒否
- 国ごと拒否リスト make-geoip-deny.pl
RIR の IPアドレス範囲と国ドメインのデータベースをダウンロードして、拒否リストを生成。かなり巨大なリストが作られる。
((更新状況を確認)) [root]# ./make-geoip-deny.pl -d | head /usr/bin/wget -q -O - 'ftp://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest' /usr/bin/wget -q -O - 'ftp://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest' ipset count before : 65658 ipset count merge : 26038 ipset count after : 39526 ((FireWallの更新)) [root]# systemctl stop ferm && systemctl start ferm
25か国の接続を拒否しているけど、単純に RIR の情報だと 65658件のアドレスブロック。25か国のアドレスブロックで隣接しているアドレスブロックをマージして、26038件に減らせた。しかし、サブネットマスクに指定できるアドレスブロックに変換して、最終的に 39526 行の拒否リストが出来上がっている。
RIRのデータのダウンロードに時間がかかり30秒ほどかかるし、国に割り振られる IPv4 アドレスなんて変化も少ないので、気が向いた時に更新かな。
SMTPDENY と SSHDENY
- SMTPの拒否リスト make-smtp-deny.pl
SASL login を試す攻撃が多いので、/var/log/mail.log の履歴から、拒否リストを生成。 - SSHの拒否リスト make-ssh-deny.pl
ssh は、/etc/hosts.allow で、自分が使うネットワーク以外は接続を拒否して ssh 自身は既に守っているけど、接続を試すような相手はヤバイので ssh 以外すべての接続を拒否させる。/var/log/messages の履歴から生成。
怪しい接続をしてくる IP アドレスを抽出し、クラス C でグループ化して、数十回の接続履歴のあるものを抜粋して、拒否リストを生成している。それぞれ 30 行ほどの拒否リストとなった。
この拒否リストは、生成も1秒程度で生成できるので、cron.weekly にて更新。
WiFiルータ HWD14 が2022-03-31まで
お出かけの際のWiFi環境ということで、HWD14 (我が家で通称チビ太)で使っていた WiFi ルータだけど、当初の au から、mineo に変更し使っていたけど、nano-SIM, micro-SIM によるサービスが 2022/03/31 でサービス終了で使えなくなるとのメールが届く。au VoLTE 対応の SIM を使う機種への変更などが必要。
あーの携帯は、au VoLTE SIM なので、問題ナシ。みーの携帯は、docomo で関係ナシ。
月額900円ほどで契約しているけど、最近はほとんど使う機会が減り、長距離ドライブする時の車中WiFi程度だった。個人的にはスマホのテザリングばかりだし、解約かな。
Edgerouter-x 2.0.9-hotfix1
Edgerouter X のファームウェアが2021/2/3に出ていたみたい。
ということで早速更新。今までと変わらない手順。
WebGUI画面に、ファームウェアのアップグレードボタンが増えてる。
proxyサーバヒット率1%
以前より、自宅内のCache Proxyサーバって、ヒット率低いのはわかっていたけど、一応動かしていたSquid。これまた気まぐれに cache のヒット率確認したら、1%。意味ないね。
自分しか使ってないだろうと、これまた気まぐれにばっさりと、aptitude purge squid したら、子供と奥さんが「ネット切れた」と駆け込んできた。proxy自動設定のproxy.pacとかも置いといたので、想定外に使ってたのね。
ということで、家族に「proxy はずしてね」と伝え、proxy.pac を、return “DIRECT”; に修正しておく。
EdgeRouter-X v2.0.9 をインストール
Edgerouter-X の新しいファームウェア ver 2.0.9 が 11/19 に公開されていた。
v.2.0.9 インストール
EdgeRouter-ERX は、HDD? 領域が不足しているので、インストール前に古いバージョンのイメージファイルを消す必要がある。
$ slogin ubnt@edgerouterx ubnt:~# delete system image
EdgeRouter の管理画面を開き、v2.0.9 をインストール
v2.0.9の新機能
リリースノートを見ると、
CLI - Add new CLI command "add system image" to automatically download and install latest stable firmware.
と書いてあるので、今後は firmware 更新作業は、以下の様にするだけ…ということかな。便利。、
$ slogin ubnt@edgerouterx
ubnt:~$ sudo add system image ubnt:~$ sudo bash
ubnt:~# add system image
再起動 自作の l2tpd 接続通知の設定ファイルのインストール
$ scp /...../edgeos_ubnt_20180914-notify-l2tpd.tar.gz ubnt@edgerouterx $ slogin ubnt@edgerouterx ubnt:~$ sudo bash ubnt:~# cd / ubnt:~# tar zxvf ~ubnt/edgeos_ubnt_20180914-notify-l2tpd.tar.gz
bind9でfilter-aaaaがpluginになる
自宅サーバを使っていて、raspberry-pi の更新をかけていたら、IPv6アドレスにつながらないトラブル発生。
我が家では、上流が IPv4-only だけど、自宅内の機器間のに IPv6 も使えるようにしている。このため、DNS の設定では、bind9 に、filter-aaaa-on-v4 の設定を加え、IPv4 の機器からの問い合わせには、IPv4 のみを返答することで、対応していた。
しかし、改めて “nslookup www.google.com 192.168.xx.xx” を実行したら、IPv4からの問い合わせの癖に、しっかり IPv6 が返ってきている。
調べてみると、bind9 (9.14)から filter-aaaa 機能は plugin になるみたい。んで、自宅サーバは 9.11→9.16 により filter-aaaa がoffになったのが原因…と思ったけど、syslog をみると “–enable-filter-aaaa”付きでcompileされてるし、”option ‘filter-aaaa-on-v4’ is obsolete and should be removed” と表示されてるから、現状では、まだ使えているはず。
ひとまず IPv6 オフ
ラズバイは、ひとまず下記の設定で、IPv6 をオフにしておく。
$ sudo /etc/sysctl.conf ((下記を追加)) net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 $ sudo sysctl -p
これは、IPv6 が戻ったら、元に戻そう。
bind9 に plugin の filter-aaaa 設定
plugin になったら、下記のような設定をするようだけど、うまくいかないので近日中に要対応。
$ sudo vi /etc/bind/named.conf.options plugin query "/usr/lib/x86_64-linux-gnu/named/filter-aaaa.so" { filter-aaaa-on-v4 yes ; filter-aaaa-on-v6 yes ; filter-aaaa { any ; } } ;