SSHをIPアドレスで制限

特定のIPアドレスからのみ接続を許可する

この設定をするとsshでログインを試行してもログイン画面自体が出ない
また、何らかの再起動の必要もなく設定ファイルを保存するとすぐに有効になるが
現在接続中のsshが切断されることはないので、1つで接続中に設定変更して
別のターミナルから接続できるか確認した方がいいだろう

失敗するとどこからもログインできなくなって
直接ローカルからログインして設定を変更しないといけなくなる

/etc/hosts.allow
sshd : 192.168.1.0/255.255.255.0

/etc/hosts.deny
sshd : all

これでSSHで全ホストからの接続を拒否した上で、allowのIPアドレスから接続を許可する
sshd以外も全部そうしたい場合はsshdの部分をallに置き換える
全アクセスが拒否されると、言ってもApacheへのhttpアクセス等は通る
逆に言うとWebへのアクセスを拒否する場合はここに記述しても効果はない
 →ちなみにこの場合はhttpd.confや.htaccessに記述する

ちなみに、FTP接続はこの設定の影響を受ける

これらのファイルでネットワークアドレスを指定する場合、
上のようにサブネットマスクで指定しないとダメなようだ

この記述方式だと認識しないようで、allow設定が機能せず、全ホストからアクセス不能と言う事故が発生した
sshd : xxx.xxx.xxx.xxx/18

あとよくわからないが、サブネットマスクとの間にあるスラッシュの前後にスペースを入れたら
同様にallowが機能しなくなった

サブネットマスクの計算が面倒なら、こうすればまぁある程度制限できる模様
sshd : 192.168.1.
前方一致な感じ?

LinuxというかUnixとしては結構古い仕組みなせいか、最近の記述方式とクセがちょっと違うのかね
最終更新:2012年06月18日 18:07