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 にて更新。
homebridge用にnode.jsの更新
家電制御用に動かしている Raspberry Pi の homebridge のために、node.js と npm の更新。
ついでに、最新の node.js を 16.3 にアップグレードしてみた。
$ sudo systemctl stop homebridge $ sudo curl -fsSL https://deb.nodesource.com/setup_16.x | bash - $ sudo systemctl stop homebridge $ sudo apt-get install -y nodejs $ sudo systemctl start homebridge $ sudo npm update $ sudo node -v 16.3.0 $ sudo npm -v 7.15.1
SwitchBot の制御が動かなくなり、プラグインを別の物に切り替え。
rsyslogの設定
Buffalo のルータのログをサーバに保存する設定。ルータを更新した時に、syslog 設定までやってなかった。ということで、改めて設定。
出力するファシリティは、local1 なので、以下の設定を加える。
以前に、設定した時は、/etc/rsyslog.conf を触ったけど、Debian流で /etc/rsyslog.d に local1.conf ファイルにまとめる。
サーバ側の設定
(( /etc/rsyslog.d/local1.conf )) # module(load="imudp") input(type="imudp" port="514") local1.* /var/log/local1.log # (( /etc/logrotate.d/rsyslog )) /var/log/messages + /var/log/local1.log
ルータ側の設定
ラズパイのフレームバッファ出力
家電制御とhomebridge専用のRaspberry-Piだけど、HDMI制御用にテレビに繋がっているし、ラズパイの動作状況なりを出力させられないかと思っていた。
X11 の GUI の autologin を使うのが定番だろうけど、X11 が動いているだけで、OS リソースをかなり食っちゃうので、あまりやりたくなかった。
でも、フレームバッファ出力で映像を出すための fbi コマンドをみつける。
そこで、wkhtmltopdf パッケージの wkhtmltoimage コマンドを使って、状況表示のページをキャプチャさせ、その画像を fbi コマンドで、フレームバッファ表示させてみた。
/usr/bin/wkhtmltoimage --width 1200 --height 800 \
-q 'http://www.example.co.jp' /tmp/web.png
/usr/bin/sudo /usr/bin/fbi -T 1 -d /dev/fb0 --noverbose \
/tmp/web.png > /dev/null 2>&1
proxyサーバヒット率1%
以前より、自宅内のCache Proxyサーバって、ヒット率低いのはわかっていたけど、一応動かしていたSquid。これまた気まぐれに cache のヒット率確認したら、1%。意味ないね。
自分しか使ってないだろうと、これまた気まぐれにばっさりと、aptitude purge squid したら、子供と奥さんが「ネット切れた」と駆け込んできた。proxy自動設定のproxy.pacとかも置いといたので、想定外に使ってたのね。
ということで、家族に「proxy はずしてね」と伝え、proxy.pac を、return “DIRECT”; に修正しておく。
homebridgeのlogrotate
raspberry-pi で動かしている homebridge の LOG もそれなりに成長するので、logrotate で切り詰める。
設定したけど、うまく出力してくれていないので、postrotate 機能で、homebridge を再起動するようにする必要あり。
/var/lib/homebridge/homebridge.log
{
weekly
rotate 10
compress
delaycompress
missingok
notifempty
create 644 homebridge homebridge
postrotate
/bin/systemctl restart homebridge
endscript
}
google home が動かなかったな…
そういえば、先日の朝とか、いつもの Google home mini に「照明つけて」とか言っても、ネットワークにつながっていないとかいって動かなかったけど、google のトラブルが原因か。
我が家では、家電制御は、Google Home mini → homebridge-gsh → homebridge だから、我が家のネットワークの問題(mydns.jpの接続トラブルで逆引き失敗することがある)で、homebridge-gsh が動かないと思っていたけど、google さんがトラブっていりゃうごかないよね。
まあ、homebridge は Home アプリで操作が普通で、”Hey Siri!” で操作できるし、記事みたいに何もできなることはないし。
サーバをspeepさせない
職場で実験用にセットアップしたサーバが、ほっておくと sleep で繋がらなくなる。
下記の設定で、sleep, suspend,hibernate 機能を停止する必要あり。
$ sudo systemctl mask sleep.target suspend.target hibernate.target
UPSがself-testでブザーとまらず
3年物のAPCのUPS APC ES 550(BE550G-JP)が、朝の5:00にブザーが鳴って止まらず。
電圧異常かと思って、電源ボタンを押したら停止。でも、サーバはシャットダウン操作してないで落ちてる。
LOGを確認すると、apcupsd の self-test 機能が動いて、バッテリーの交換時期なので、ブザーを鳴らしたみたい。マニュアルを見ると「停止条件は『電源オフ』」実は、ひと月前にも同じようにブザーが鳴って、今回は2回目。self-test の期間は、2週間に設定されているみたいなので、このままだと、また叩き起こされそう。
電源異常じゃないのならバッテリー交換とも思うけど調べると交換バッテリー7000円。前のUPSは、保持時間が多少落ちようとも無視して本来2~3年の寿命の物を5年以上使ってた。今回も劣化を無視してもう少し使いたい。
apctestでbattery dateを修正
UPS監視ソフトの apcupsd の付属ソフトに、apctest でセルフテストを直にさせようと思ったけど、上手く動かない。でも、battery の日付を書き換えるコマンドがある。寿命をだますということで、試しにバッテリー交換してないけど日付を書き換えてみた。これで、だませるかな。
(2020/12/28:追記) バッテリーが消耗していれば、battery-date を修正しても、朝の4:45に再びブザーが鳴り響き、効果なかった。(T_T;
ついでに、夜中にバッテリー警告で起こされるのもつらいので、警告音を DISABLE にできるみたい。munin で、バッテリー状況は観察してるし、自宅サーバだし「落ちてもたかがしれている状態」なので、問題ないだろう。とはいいながら、エラーが改めてでなくなるのを確認するまでは、ENABLE にしておくか。
$ sudo systemctl stop apcupsd.service $ sudo apctest (略) Please select the function you want to perform. 1) Test kill UPS power 2) Perform self-test 3) Read last self-test result 4) View/Change battery date : Select function number: 4 Current battery date: 09/12/2016 Enter new battery date (MM/DD/YYYY), blank to quit: 09/12/2020 : 6) View/Change alarm behavior : Select function number: 6 Current alarm setting: DISABLED Press... E to Enable alarms D to Disable alarms Q to Quit with no changes Your choice: Select function: q
apcupsd.conf の修正
(2020/12/28) 何らかの selft-test と思って、バッテリー日付の修正を試したが効果が無いので、改めて、正統な selft-test 機能を止める方法。
(( /etc/apcupsd/apcupsd.conf )) # Self test interval in hours 336=2 weeks, 168=1 week, ON=at power on # SELFTEST 336 168 ON OFF (default = 336) SELFTEST OFF
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



