
| TCP Wrapperとは |
TCP Wrapperとはデーモンに対してアクセス制御機能を提供するものになります。
ここでは、TCP Wrapperの説明をSSHを例に取り、紹介したいと思います。
| TCP WrapperでSSHに制限をかける |
SSHは非常に便利なサービスでリモート操作が可能になります。SSHのサービスをLAN内に限らず、
外からも接続できるよう設定している人は多いと思います。
ただ、SSHのポートを外に開放していると気になるのがやはり不正アクセスだと思います。
万が一、SSHからシステム内に入られたら、酷い目に遭うことでしょう^^
当サイトの設定では、SSHサービスは鍵方式による認証で提供しているので、第三者が
システム内に入り込むのは、かなり難しいです。
しかし不正アクセスの可能性を少しでも排除できるのなら、しておいたほうがいいと思います。
そこで、今回はTCP Wrapperを使用してSSHに制限をかけます。先ず以下のログを見てください。
これは、SSHを外部からも接続できる状態で待機している場合の、secureログです。
| # tail -100 /var/log/secure | less linux sshd[22286]: Invalid user test from 192.168.1.12 linux sshd[22554]: Invalid user webmaster from 192.168.1.12 linux sshd[22566]: Invalid user user from 192.168.1.12 linux sshd[22606]: Invalid user adam from 192.168.1.12 linux sshd[22598]: Invalid user backup from 192.168.1.12 linux sshd[22618]: Invalid user george from 192.168.1.12 linux sshd[22230]: Invalid user patrick from 192.168.1.12 linux sshd[22258]: Invalid user rolo from 192.168.1.12 linux sshd[22274]: Invalid user www from 192.168.1.12 linux sshd[22322]: Invalid user irc from 192.168.1.12 linux sshd[22346]: Invalid user jane from 192.168.1.12 linux sshd[22350]: Invalid user pamela from 192.168.1.12 (IPアドレスは変更してあります。時間など一部省略しています。) |
これはSSHに対してのピンポンダッシュが行われている様子です。ここでは、192.168.1.12という者から
不正アクセスを受けています(プライベートIPになっていますが、グローバルIPと想定してください)。
これは何もシステム内に侵入されたですとか、この攻撃をしたからと言って、システム内に侵入できるという
ものではありませんが、このようなログが残ると気持ちのいいものではありません。そしてやはり
慣れないうちは不安になってくるものです。
そこで、今回はTCP Wrapperを利用し、このようなピンポンダッシュをブロックし、鬱陶しいログを
残さないようにし、セキュリティ強化をしたいと思います。
ただし条件があります。それは、この設定を行うと設定したホストやIPアドレスからしかSSHに
繋げなくなるということです。ただ普段、外からSSHで接続する場合は、大体が会社のPCから
接続ですとか、モバイルPCに通信カードを差してそこから接続というパターンが多いと思います。
そういった場合には、この設定はやってもいいと思います。
例えば僕の場合は、SSHに接続するのはLAN内と外からは、.home.ne.jpというホスト名のホストから
のみです。このような場合には、以下のような設定を行います。
| # vi /etc/hosts.allow sshd : 192.168.1. , .home.ne.jp ←追加 |
/etc/hosts.allowに上の一行を追加します。この場合は、LAN内(192.168.1.0/24)は接続を許可、
更にホスト名が.home.ne.jpのホストからは接続を許可という設定になります。/etc/hosts.allowには
許可するホスト名やIPアドレスの記述を行います。複数ある場合には上記のように「,」で区切ります。
またこれはみなさんの環境に合わせて設定してください。続いて拒否をする設定を行います。
| # vi /etc/hosts.deny sshd : ALL ←追加 |
ここでは、ALLを指定しています。この場合は、/etc/hosts.allowで許可されたホスト以外は、
拒否するという設定になります。以上で終了です。
これで先ずは、TCP Wrapperでルールと照らし合わせて、SSHに渡すか渡さないかの判断をし、
許可されていないものは排除しますので、セキュリティが強化されます。
また、ピンポンダッシュのログも記録されにくくなります。
| chattrで改竄防止 |
次に、/etc/hosts.allowが改竄されないように設定します。
不正侵入に成功し、root権限を奪取して、ほぼもれなくやるのは以下のような行動でしょう。
| # echo ALL:ALL >> /etc/hosts.allow |
これで、/etc/hosts.allowで制限していた設定が全て解除できるからです。
このようにされない為にも、chattrというコマンドを使用します。以下のようにしてください。
| # chattr +i /etc/hosts.allow |
こうする事によって変更を不可に出来ます。なので先ほどのコマンドを実行しても失敗します。
| # echo ALL:ALL >> /etc/hosts.allow -bash: /etc/hosts.allow: 許可がありません |
ただし、この方法で気をつけていただきたいのは2点です。先ず、以下のようにすれば解除できます。
| # chattr -i /etc/hosts.allow |
先ほどは+iとして変更禁止にしましたが、-iとすればまた元に戻す事が可能です。
なのでchattrを知っている不正侵入者は、このようにchattr -iしてから、ALL:ALLを加えるでしょう。
もう1点は、上記と似た内容になりますが、chattr +iしたファイルを変更する場合は一度、chattr
-iしてからじゃないと
変更ができません。chattr +iしたことを忘れて、変更ができなくなったって、慌てることの無いようにしてください^^
最終更新 : 05/23/2005