LinuxでSSHの接続ホストを制限する

rootじゃ接続できないようにしてあるし、鍵方式での接続しか許可していないので不正ログインされる危険性はとても低いと思っているのですが、それでもせっせとログインしようとしてくる怪しげなプログラム君たちがいます。

ログがひたすら増えるだけでも若干気分が悪いので、SSHで接続できるホストをごりっと制限してしまいました。e-mobile等で外からメンテナンスすることができなくなってしまうので不便ではありますが、まぁレアケースだし、そもそもe-mobile持ってないので気にしないことにしましょう。

/etc/hosts.allow

に接続できるホストのIPアドレスを記載します。ここはホスト名でもいいみたいなんですが、IPにしておきました。

sshd:xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx

複数ある場合は半角スペースで区切るようです。これで、上記IPアドレスからの接続は許可されます。次は禁止ホストの設定です。

/etc/hosts.deny

sshd: ALL

と記述します。

「hosts.allow」→「hosts.deny」の順で解釈するそうです。「hosts.allow」に当該IPアドレスがあればそのまま接続を許可。「hosts.allow」にないIPは次に「hosts.deny」を参照し、そっちにあったら禁止。どっちにもなければ許可になります。

SCP使えばFTPもいらないし、MySQL等もローカル接続のみを許可にして、外部からつなぎたい場合はSSHでポートフォワードすればOK。無駄なポートは空けないことが重要かと。