SSHって
サーバーにリモートアクセスする時に使います。
サーバーをインストールした時には既にSSHサービスが入っているのが普通で
お馴染みなものです。
これのおかげで全国離れた場所のサーバー機器を設定する事ができます。
ということは・・
便利ですが世界中からグローバルに侵入される恐れがあるので
portの変更+IP制限でアクセスできるIP(場所)を制限するのが一般的です。
私が自分で構築する場合にはport変更+公開鍵認証での管理が便利なので
SSHでのIP制限する事は少ないかもしれません。
とはいってもやはりIP制限が一般的なので
お客様のサーバー管理を引き継ぐ時に知識が必要になる場合があります。
今回の記事ではSSHでのIPアクセス制限についてまとめました。
制限の手段はいくつかありますが
お手軽に設定できるのはTCP WrapperでのIPアクセス制限でしょうか。
【TCP Wrapper】
○ 制限を許可するファイル
/etc/hosts.allow
○ 制限を行うファイル
/etc/hosts.deny
許可ファイルの方が優先されるので
制限ファイルで全アクセス禁止にして、
許可ファイルで許可IPを指定し上書きするのが一般的です。
※記述例
☆ /etc/hosts.deny
sshd: ALL
☆ /etc/hosts.allow
sshd: 118.xxx.yyy.39, 22.xxx.yyy.39
sshd : 192.168.1.0/255.255.255.0
118.xxx.yyy.39, 22.xxx.yyy.39からのアクセス
ローカルネットワーク()からのアクセスを許可する設定。
【iptables】
/etc/sysconfig/iptables
iptables -A INPUT -s 118.xxx.yyy.39 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -s 22.xxx.yyy.39 -p tcp –sport 22 -j ACCEPT
設定を読み込ませる
[bash] # service iptables restart[/bash]
【sshd認証】
/etc/ssh/sshd_config
○SSHポート変更(例: SSHでのアクセスを99922に指定)
#Port 22
Port 99922←追加します
○ListenAddress
[書式] ListenAddress ホスト:ポート※記述例 [bash] ListenAddress 127.0.0.1
ListenAddress 118.xxx.yyy.39
ListenAddress 22.xxx.yyy.39
[/bash]
または
[bash] AllowUsers hogeuser@118.xxx.yyy.39AllowUsers *@22.xxx.yyy.39
[/bash]
hogeuserでのログインかつ118.xxx.yyy.39からのアクセスを認める。
22.xxx.yyy.39からのアクセスを全て認める。
設定です。
【pam認証】
/etc/pam.d/sshd
以下を有効にする
[bash] account required pam_access.so[/bash]
/etc/ssh/sshd_config
yesに変更
[bash] UsePAM yes[/bash]
/etc/pam.d/sshd(account required pam_access.so accessfile=ファイル指定)
/etc/security/access.conf(またはaccess_login.confなど上記のコンフィグでファイル指定を行えばリネームしても良い。)
-:ALL: ALL
[/bash]
※+は許可,-は拒否
上記ら設定後に
[bash] # service sshd restart[/bash]
で反映させる。