1.6. ファイアーウォール、SELinux、および SSH ログインを使用したシステムセキュリティーの強化

コンピューターセキュリティーは、ハードウェア、ソフトウェア、または情報を盗難やダメージから、そして提供するサービスの混乱や誤りからコンピューターシステムを保護します。したがって、コンピューターセキュリティーの確保は機密データやビジネストランザクションを扱う企業だけではなく、すべてのお客様に欠かせないタスクになります。
コンピューターのセキュリティーには、多種多様の機能およびツールがあります。本セクションでは、オペレーティングシステムのインストール後に設定が必要なセキュリティー機能の基本のみを説明します。Red Hat Enterprise Linux 7 のセキュリティー保護に関する詳細は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

1.6.1. ファイアウォールの有効化と実行を確認

1.6.1.1. ファイアウォールとシステムセキュリティーの強化方法について

ファイアウォールは、既定のセキュリティールールに基づいてネットワークトラフィックの送受信の監視および制御を行うネットワークセキュリティーシステムです。ファイアウォールは通常、信頼済みの安全な内部ネットワークと、別の外部ネットワークとの間にバリヤーを築きます。
Red Hat Enterprise Linux 7 では、firewalld サービスがファイアーウォールを提供します。このサービスは、Red Hat Enterprise Linux のインストール時に自動的に有効になりますが、キックスタート設定などでこのサービスを明示的に無効にした場合は、「ファイアウォールサービスの再有効化」 に従って、再度有効にすることができます。キックスタートファイにおけるのファイアーウォールの設定オプションの概要は、『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。

1.6.1.2. ファイアウォールサービスの再有効化

インストール後に firewalld サービスを無効にした場合、Red Hat では再有効化を検討するよう推奨しています。
firewalld の現在のステータスは、通常ユーザーでも確認できます。
~]$ systemctl status firewalld
firewalld が有効になっておらず実行していない場合は、root ユーザーに切り替えてステータスを変更します。
~]# systemctl start firewalld
~]# systemctl enable firewalld
firewalld に関するインストール後の手順は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。ファイアーウォールの設定および使用に関する詳細は『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

1.6.2. SELinux の適切な状態の確認

1.6.2.1. SELinux とシステムセキュリティーの強化方法について

Security Enhanced Linux (SELinux) は、どのプロセスがどのファイル、ディレクトリー、ポートにアクセスできるのかを決定するシステムセキュリティーの追加レイヤーです。
SELinux の状態
SELinux は、2 つの状態が可能です。
  • 有効
  • 無効
SELinux を無効して場合は、 任意アクセス制御 (DAC) のルールのみが使用されます。
SELinux モード
SELinux を有効にした場合は、以下のモードのいずれかで実行可能です。
  • Enforcing
  • Permissive
enforcing モードは、SELinux のポリシーが強制されることを意味します。SELinux は、SELinux ポリシールールに基づくアクセスを拒否し、特別に許可された対話のみを有効にします。enforcing モードは、インストール後のデフォルトモードであり、最も安全な SELinux モードでもあります。
permissive モードは、SELinux のポリシーが強制されていないことを意味します。SELinux はアクセスを拒否しませんが、enforcing モードでは拒否されたであろうアクションの拒否がログに記録されます。permissive モードは、インストール時のデフォルトのモードです。permissive モードは、問題のトラブルシューティング時に AVC (アクセスベクターキャッシュ) へのアクセスを拒否する必要がある場合など、特定のケースで役立ちます。
Red Hat Enterprise Linux 7 の SELinux に関する詳細は、『Red Hat Enterprise Linux 7 SELinux ユーザーおよび管理者のガイド』を参照してください。

1.6.2.2. SELinux の状態の確認

デフォルトでは、SELinux はインストール時に permissive モードで動作し、インストールが完了すると enforcing モードで動作します。
しかし、SELinux を明示的に permissive モードに設定している場合や、インストール済みのオペレーティングシステムで無効になっている可能性もあります。これは、たとえばキックスタート設定でこれを指定するできます。キックスタートファイルにおける SELinux 設定オプションの概要は、『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。

重要

Red Hat は、お使いのシステムを enforcing モードに保つことを推奨します。
現在の SELinux モードを表示し、必要に応じてモードを設定するには以下を実行します。

手順1.2 SELinux の状態の確認

  1. 現在有効な SELinux モードを表示します。
    ~]$ getenforce
  2. 必要に応じて SELinux モードを切り替えます。
    切り替えは、一時的または永続的を選択できます。一時的な切り替えでは、システムを再起動時すると設定が元に戻りますが、永続的に切り替えると再起動後も持続します。
    • enforcing モードまたは permissive モードのいずれかに一時的に切り替えるには、以下を実行します。
      ~]# setenforce Enforcing
      ~]# setenforce Permissive
    • SELinux モードを永続的に設定するには、/etc/selinux/config 設定ファイルの SELINUX の変数を変更します。
      たとえば、SELinux を enforcing モードに切り替えるには、以下を実行します。
      # This file controls the state of SELinux on the system.
      # SELINUX= can take one of these three values:
      #     enforcing - SELinux security policy is enforced.
      #     permissive - SELinux prints warnings instead of enforcing.
      #     disabled - No SELinux policy is loaded.
      SELINUX=enforcing

1.6.2.3. Cockpit での SELinux 管理

Cockpit では、SELinux オプションを使用して SELinux の enforcing ポリシーをオンまたはオフにします。
デフォルトでは、Cockpit における SELinux の enforcing ポリシーはオンのため、SELinux は enforcing モードで動作します。これをオフにすると、SELinux を permissive モードに切り替えることができます。ただし、このように /etc/sysconfig/selinux ファイルのデフォルト設定を変更しても、次回のシステム起動時に設定が自動的に元に戻る点に注意してください。
Cockpit での SELinux 管理

図1.3 Cockpit での SELinux 管理

1.6.3. SSH ベース認証の使用

1.6.3.1. SSH ベースの認証とシステムセキュリティーの強化方法について

別のコンピューターとの通信の安全性を確保したい場合は、SSH ベースの認証を使用することが可能です。
SSH (Secure Shell: セキュアシェル) は、クライアントとサーバーとの間の通信を容易にし、ユーザーが SSH を実行するホストシステムにリモートでログインできるようにするプロトコルです。SSH は接続を暗号化します。クライアントは、暗号化した認証情報をサーバーへ送信します。セッション中に送受信したすべてのデータは暗号化されて転送されます。
SSH は、パスワードなしでユーザーが認証できるようにします。そのためには、SSH は公開/秘密鍵スキームを使用します。
SSH の保護手段に関する詳細は、「主な機能」 を参照してください。

1.6.3.2. SSH 接続の確立

SSH 接続を使用できるようにするには、公開鍵と秘密鍵から成る 2 組みの鍵を作成します。

手順1.3 鍵ファイルを作成してサーバーへコピー

  1. 公開鍵と秘密鍵を生成するには、以下を実行します。
    ~]$ ssh-keygen
    鍵は両方とも ~/.ssh/ ディレクトリーに保存されます。
    • ~/.ssh/id_rsa.pub - public key
    • ~/.ssh/id_rsa - private key
    公開鍵は秘密である必要はありません。これは、秘密鍵の確認に使用されます。秘密鍵は秘密となります。秘密鍵は、鍵の生成プロセスで指定するパスフレーズで保護するように選択できます。パスフレーズにより、認証はさらに安全となりますが、今後はパスワードが毎回必要になります。これを回避するには、ssh-agent コマンドを利用します。この場合、パスフレーズを入力するのは、セッション開始時の 1 回のみとなります。 ssh-agent 設定に関する詳細は、「鍵ベース認証の使用」 を参照してください。
  2. 最近変更された公開鍵をログインしたいリモートマシンにコピーします。
    ~]# ssh-copy-id USER@hostname
    その結果、パスワードを入力することなく、安全な方法でシステムにログインできるようになります。

1.6.3.3. SSH root ログインの無効化

デフォルトで有効となっている root ユーザーの SSH アクセスを無効にすることで、システムセキュリティーを高めることができます。
このトピックに関する詳細は、『Red Hat Enterprise Linux 7 セキュリティーガイド』を参照してください。

手順1.4 SSH root ログインの無効化

  1. /etc/ssh/sshd_config ファイルにアクセスします。
    ~]# vi /etc/ssh/sshd_config
  2. #PermitRootLogin yes と書かれた行を以下へ変更します。
    PermitRootLogin no
  3. sshd サービスを再起動します。
    ~]# systemctl restart sshd