ファイアウォールを有効にすると……
前回は、sshに関するファイアウォール設定を間違えることでssh接続から閉め出されることがあるので注意しよう、という内容を取り上げた。最終的に、ファイアウォールの設定を変更した時は、ssh接続を切る前に必ずほかのターミナルからssh接続できることを確認しよう、ということで落ち着いた。
しかし、実はファイアウォールの設定を変更しなくても、ファイアウォールを有効にしただけで同じことが起こる。つまり、とりあえずファイアウォールのサービスを有効にしてみるか、と作業すると、この時点で締め出しが決定するので注意しよう。
では、次の例を見てみよう。ufwを有効にしている。
ufwは便利なので使いがちだが、この状態でssh接続を切ってみる(実際に運用しているシステムでは絶対にこんなことをしてはいけない)。「ufwを有効化できることはわかった。どのような設定にするかは、次にログインした時にじっくりと作業しよう」などと、このユーザーは考えて、とりあえずssh接続を切ったのだろう。
しかし、もうこのユーザーはsshで先程のUbuntuサーバに接続することはできない。以下のように、タイムアウトで接続できないことがわかる。ユーザーは何が起こったのかを理解できずにパニックを起こすかもしれない。何もしていないのに接続できなくなった――そう思うだろう。
それもそのはずで、上記の方法でufwを有効にした場合、デフォルトの設定が有効になる。デフォルトの設定は以下のスクリーンショットのように「deny (incoming), allow (outgoing), disabled (routed)」になっている。つまり、ufwを有効にした段階で外部からの接続がすべて拒否されることになる。sshによる接続も当然できなくなるわけである。
少なくとも、ここで記載されている方法でufwを有効にした場合は、接続を切る前にssh接続に関してはアクセスを許可する必要がある。そうしないと、ここで示したような悲劇が起こることになる。
何もやっていないのに壊れた
ITに詳しい方であれば、少なくとも1回くらいは家族や上司、同僚などから「何もやっていないのに壊れた」という言葉を聞いたことがあるはずだ。
「何もやっていないのに壊れた」「何もしていないのに使えなくなった」という言葉が放たれた時、大抵は本人が何かをしでかしている。プログラムは意図通りには動作しない。プログラムは書かれたとおりに動作するのであって、変化があったということはちゃんと理由があるのだ。
ファイアウォールのデフォルト設定がオープンになっているなら、ここで取り上げたようなことは起こらない。デフォルトがブロックになっていると、ここで取り上げたようなことが起こる。
思い込みとは恐ろしいもので、なぜかファイアウォールのデフォルトはオープンになっていると信じていることがある。そんなことはないのだ。ファイアウォールの特性を考えると、どちらかと言えば、デフォルトブロックのほうが本来の姿だろう。
今回も前回と同じ結果となるが、ファイアウォールは機能を有効にしただけでも接続できなくなることがある。ssh接続ができるかどうかを他のターミナルから試して、接続できることを確認してからssh接続を切るようにしよう。