仕事柄、ターミナルは常に立ち上げています。そんなわけで、自宅のLinuxマシンにログインしている事も多いです。
自宅のインターネット回線はフレッツでIPoE接続になっていて外から入れるようにはしていないのですが、LinuxマシンはPPPoEで足をだしていて直接ログインできるようにしています。

先日、PPPoEのセッションが切断され、自動再接続されてIPアドレスが変わってしまいました。自宅LinuxマシンのPPPoEの足のIPアドレスは、DynamicDNSを使い名前解決できるようにしているので、IPアドレスが変更された事に全く気付かずにいました。
※ 1分に1度の頻度でPPPoEの足アドレスが変わったかどうかをチェックしていて、変更されていたらDynamicDNSのupdateを投げるようにしています。
端末に奇妙なメッセージが表示された
そんなある日、出社して自宅Linuxマシンに接続しっぱなしにしているターミナル上に奇妙なメッセージが表示されているのに気づきました。

なんだろう?Linuxマシンに入られた?UNIXには、tty端末を選択してメッセージを投げ事が可能です。(*1)が、よく見るとsyslog経由で送られたメッセージということがわかります。
UNIXシステムにはsyslogという太古のログを集約する仕組みが存在します。syslogメッセージにはいくつかの種類や重要度を設定できて、それらに応じて記録するファイルや振る舞いを決める事ができるのです。
通常、緊急メッセージはログインしている端末全体へ配送されます。
自宅Linuxマシンのrsyslog(syslogの派生版)の設定ファイルを確認すると届いたメッセージの重要度が緊急である場合、システムにログインしているユーザ全員の端末に表示すると設定されています。
1 2 3 4 |
# # Emergencies are sent to everybody logged in. # *.emerg :omusrmsg:* |
表示された原因
確かにsyslogポートは外部から投げられるようにしています。ただ送信元のIPアドレスを指定して許可していたはずで、不特定多数の外部アドレスからはメッセージを受け取らないハズなのにおかしいな?と確認すると、先のPPPoEセッション再接続でIPアドレスが変わったのにIPパケットフィルタの宛先アドレスが更新されていなかった為に、素通ししてしまっていたのでした。
宛先アドレスを更新してパケットフィルタを設定しなおして一見落着です。
もちろん、PPPoE足のIPアドレスが変更された時、再接続後にIPパケットファイルの宛先アドレスを更新してかけ直すスクリプトも仕込みました 🙂
リモートへsyslogメッセージを投げてみる
syslogへメッセージを投げるには、標準でインストールされている logger コマンドが使えます。
- 送信側
1 |
root@vps:~# logger --tag "" -p kern.emerg --udp --server 172.16.1.2 "hey, Wyd?" |
- 受信側
1 2 3 4 5 |
Message from syslogd@vps at Apr 12 16:16:08 ... -hey, Wyd? Message from syslogd@vps at Apr 12 16:16:08 ... -hey, Wyd? |
なぜか2通届きましたが・・・こんな手段でspamを送ってくる人もいるのですね。UDPだから届いたのかどうかも分からないし、ほとんどの場合は、Dropされていると思うのですが 🙁
そういえば、届いたメッセージに
Also this is a friendly reminder that you should fix your security.
なーんて書いてありました。確かに、このSpamが届かなかったらパケットフィルタが効いてなかった事にも気づかなかったかもしれません。ありがたや、ありがたや?