Overview
SSH の設定を変更します。一般的な SSH のセキュリティとして、root ログインの禁止とパスワード認証の禁止を設定することが望ましいですが、万が一、公開鍵を紛失した場合のアクセス手段を確保するため、特定のネットワークからのみ root ログインとパスワード認証を許可します。
/etc/ssh/sshd_config
/etc/ssh/sshd_config
をバックアップし、エディターで開きます。
[root@centos-6 ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
[root@centos-6 ~]# vim /etc/ssh/sshd_config
/etc/ssh/sshd_config
を編集します。
PermitRootLogin no
PasswordAuthentication no
UseDNS no
AllowUsers root myadmin
Match Address 10.0.0.0/24
PermitRootLogin yes
PasswordAuthentication yes
PermitRootLogin no
: root ユーザーが SSH 経由でログインすることを禁止します。これにより、セキュリティが向上します。root アカウントは特権が高く、攻撃者にとって魅力的なターゲットとなるためです。PasswordAuthentication no
: パスワード認証を無効にします。つまり、ユーザーは公開鍵認証など他の方法で認証する必要があります。これもセキュリティを向上させるための措置です。UseDNS no
: SSH 接続時にクライアントの DNS 解決を行わないようにします。これにより、接続速度が向上する場合があります。DNS 解決には時間がかかることがあり、接続遅延の原因となることがあります。DNS 解決の必要性としては、ホスト名がログに記録されることによるデバッグ時の視認性の向上と、ホスト名を使用したアクセス制御が可能になることです。AllowUsers root myadmin
: root と myadmin というユーザーのみが SSH でサーバーにログインできることを指定します。他のすべてのユーザーのログインは禁止されます。Match Address 10.0.0.0/24
: ここから始まる設定は、10.0.0.0/24
という IP アドレス範囲からの接続に特有の規則を設定します。PermitRootLogin yes
: 上記の Match ブロック内でのみ適用され、10.0.0.0/24
からの接続に対しては root ユーザーのログインを許可します。これは特定の信頼できるネットワークからのみ管理者アクセスを許可したい場合に有用です。PasswordAuthentication yes
: Match ブロック内でのみ適用され、10.0.0.0/24
からの接続に対してパスワード認証を有効にします。これにより、特定の範囲からのユーザーに対してはパスワード認証を使うことができます。
設定の有効化
sshd
を再起動し、設定を有効化します。
[root@centos-6 ~]# service sshd restart
公開鍵の設定
公開鍵を設置します。以下の例では、Windows の PuTTYgen で生成した公開鍵を使用しており、vim id_rsa.pub
でファイルを開き、その公開鍵を貼り付けて保存しています。
[root@centos-6 ~]# su - myadmin
[myadmin@centos-6 ~]$ mkdir .ssh
[myadmin@centos-6 ~]$ chmod 700 .ssh
[myadmin@centos-6 ~]$ cd .ssh
[myadmin@centos-6 ~]$ vim id_rsa.pub
[myadmin@centos-6 ~]$ ssh-keygen -i -f id_rsa.pub >> authorized_keys
[myadmin@centos-6 ~]$ chmod 600 authorized_keys
[myadmin@centos-6 ~]$ rm -f id_rsa.pub
[myadmin@centos-6 ~]$ exit
CentOS 6 SSH 設定