自室の端末からVPS(レンタルサーバー)に接続する際は、通常はsshを使用します。
“お名前.com”のVPSサーバー(確認時点ではCentOS6.2)でのsshは以下のような初期設定となっていました。
SSHのRPMパッケージ名を確認する
例)
# rpm -qa | grep ssh openssh-server-5.3p1-70.el6_2.2.x86_64 openssh-5.3p1-70.el6_2.2.x86_64 libssh2-1.2.2-7.el6_1.1.x86_64
sshのサーバーのパッケージ名は”openssh-server”です。
設定ファイルの保存場所の確認
例)
# rpm -qc openssh-server /etc/pam.d/ssh-keycat /etc/pam.d/sshd /etc/ssh/sshd_config /etc/sysconfig/sshd
ファイル名からすると、”/etc/sysconfig/sshd”がopenssh-serverのサーバーサービスの設定ファイルと推測できます。
設定ファイルの変更
管理人の環境では、rootユーザーによるログインが許可されている状態でした。
暗号化されているとはいえ、インターネット回線を介してログインする際にrootユーザーでログインするのはセキュリティ的に望ましくないかと思いますので許可しない設定に変更しました。
PermitRootLogin no
起動スクリプトの配置場所の確認
例)
# rpm -ql openssh-server | grep init /etc/rc.d/init.d/sshd
sshの再起動
例)
# /etc/rc.d/init.d/sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
iptablesの設定確認
管理人の環境では、ネットワークのパケットフィルタリングは、”iptables”で行っていました。
iptablesがsshのパケットをどのように設定しているか確認します。
※iptablesコマンドで確認する事もできます。管理人は、直接設定ファイルを取り扱う方法に慣れているため、こちらの方法を紹介します。
例)
# more /etc/sysconfig/iptables (SSHの部分のみ抜粋) -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
SSHはポート番号22番を使用していますので、宛先ポートが22番ポートの新規接続の入力パケットはすべて許可する設定になっています。
自端末が使用しているグローバルIPアドレスの確認
管理人のVPSサーバーは、ssh接続するのは管理人自身のみですので、管理人の自室端末のネットワークの送信元アドレスのみ許可する設定に変更しました。
自端末のIPアドレスはプライベートアドレスのため(グローバルアドレスは、ネットワーク回線業者からレンタルしているルーターでアドレス変換されています。)サーバー上で、下記コマンドで確認しました。
例)
# netstat -an | grep 22 tcp 0 52 (サーバーのIP):22 (自端末のIP):1072 ESTABLISHED
iptablesの設定変更
上記のsshの設定に自端末のIPアドレスが属するネットワークを追加しました。(常に同じグローバルIPアドレスが割り当てられるか分からなかったため、IPアドレスではなくネットワーク単位に設定しました。)
※iptablesコマンドで確認する事もできます。管理人は、直接設定ファイルを取り扱う方法に慣れているため、こちらの方法を紹介します。
例)許可するIPアドレスが、192.168.1.1の場合
# vi /etc/sysconfig/iptables (変更箇所) -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
設定変更後、iptablesを再起動します。
例)
# /etc/rc.d/init.d/iptables restart iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ]