CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回のInst. Tech Viewは、OpenSSHを使用したSSHサーバのセキュリティについての話題です。
OpenSSHはLinuxやUnixにSSHを実装するための代表的なソフトウェアで、OpenBSDプロジェクトにより開発・維持されています。OpenSSHはサーバとクライアントから構成され、LinuxやUnixにOpenSSHサーバをインストールするとSSHサーバとして動作させることができます。
SSHはリモートログインやファイル転送をよりセキュアに行うことができますが、公になっていないOpenSSHサーバの脆弱性を突いた攻撃も散見されています。SSHサーバに適切なセキュリティ設定を行いセキュリティを向上させることによって、そのような攻撃を受けた場合でも被害の無効化や軽減を実現することができます。
今回はOpenSSHサーバ(以下SSHサーバ)のセキュリティを向上させるためのポイントとなる設定を紹介します。
SSH Protocol Version2のみの使用
SSHプロトコルのVersion1は、中間者攻撃の脆弱性があります。SSHサーバにはVersion1は使用させず、Version2のみ使用させる設定を行う必要があります。
# vi /etc/ssh/sshd_config
Protocol 2
特定のユーザのみのログインの許可
SSHサーバへはデフォルトでどのユーザでもログインできます。ログインが必要なユーザのみログインを許可することで、よりセキュアにすることができます。
# vi /etc/ssh/sshd_config
AllowUsers user01 user02 (ログインを許可するユーザ)
アイドル時の自動ログアウトの有効化
アイドル状態のログインセッションは自動的にログアウトされるように設定することで、離席時の不用意な他者の使用を防ぐことができます。
# vi /etc/ssh/sshd_config
ClientAliveInterval 600(自動的にログアウトされるまでの時間・600秒=10分)
ClientAliveCountMax 0(アイドル時間が上のインターバルを何回経過すると自動的にログアウトさせるか)
rootユーザでのログインの無効化
SSHサーバにログインしてrootユーザとして作業する場合、いきなりrootユーザとしてログインするのではなく、まず一般ユーザでログインしてsuコマンドでrootユーザに切り替えたり、sudoコマンドを実行する形態がセキュリティ的に望ましいです。SSHサーバに以下の設定をすることで、SSHサーバに対してrootユーザでのログインを禁止することができます。
# vi /etc/ssh/sshd_config
PermitRootLogin no
特定のSSHクライアントからのアクセスのみの許可
デフォルトではSSHサーバにはどのホストからのログインやファイル転送も許可されています。セキュリティを向上させるには、特定の場所からのアクセスのみ許可することが望ましいです。
SSHサーバのiptablesに以下のルールを登録すると、特定の場所(192.168.9.1)からのアクセスのみ許可することができます。
# iptables -A INPUT -s 192.168.9.1 -m state --state NEW -p tcp --dport 22 -j ACCEPT
または、iptablesではなくTCP Wrapperを使用することができます。
# vi /etc/hosts.deny
sshd: ALL
# vi /etc/hosts.allow
sshd: 192.168.9.1
特定のIPアドレスでのリッスン
デフォルトではSSHサーバはすべてのNICでのパケットの受信を許可します。SSHクライアントからのパケットが特定のNICでの受信のみになる場合は、そのNICのみでの受信を許可することが望ましいです。
# vi /etc/ssh/sshd_config
ListenAddress 192.168.9.200 (SSHサーバの192.168.9.200が設定されているNICのみのアクセスを許可)
パスワードの総当たり攻撃に対しての防御ツールの導入
SSHサーバへのパスワードの総当たり攻撃に対しての対策ツールを導入することで、よりSSHサーバをセキュアにすることができます。
代表的な対策ツールは以下のとおりです。
公開鍵認証のみの使用
クライアント認証(サーバがクライアントの正当性を確認する処理)にパスワード認証を使用しているSSHサーバは、パスワードの総当たり攻撃に対して脆弱性があります。クライアント認証の方式としてはパスワードの総当たり攻撃に対しての脆弱性がない公開鍵認証を使用することが望ましいです。
クライアント認証に公開鍵認証のみを使用したい場合は、SSHサーバに以下の設定を行います。
# vi /etc/ssh/sshd_config
PubkeyAuthentication yes (公開鍵認証の有効化)
PasswordAuthentication no (パスワード認証の無効化)
最新VersionのOpenSSHの使用
OpenSSHに脆弱性が発見された場合は、速やかに脆弱性が修正された最新のバージョンにする必要があります。
RedHat系のLinuxでは以下のコマンドで行うことができます。
# yum update openssh-server
SSHサーバサービスの無効化・OpenSSHサーバのアンインストール
SSHサーバが不要なシステムの場合、SSHサーバのサービスの停止や今後も不要であればパッケージをアンインストールしてください。
LinuxのRedHat系のディストリビューションであれば、以下のコマンド等でサービスの停止やパッケージをアンインストールできます。
# service sshd stop
# chkconfig sshd off
# yum erase openssh-server
今回ご紹介した設定は基本的なものも含まれますが、1つ1つしっかりと適切に設定することでSSHサーバをセキュアに運用することができます。
CTC教育サービスではSSHやセキュリティに関して以下のコースで紹介しております。
SSHやセキュリティ関連の知識を深めたい方のご受講を心よりお待ち申し上げております。
■■■ コースの詳細情報はこちら ■■■ ※価格はメルマガ配信時点の価格です。
N472: 実践!コンピュータセキュリティ
期間:2日間
価格:\100,000(税抜)
LI33: Linuxネットワーク管理
期間:2日間
価格:\76,000(税抜)
LI39: Linux OSセキュリティ
期間:3日間
価格:\114,000(税抜)
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes