20.4. 設定例

20.4.1. Squid の非標準ポートへの接続

以下では、上記のブール値を実行し、特定のポートにへのアクセスのみをデフォルトで許可することで SELinux が Squid を補完している実用的な例を示します。また、ブール値を変更し、その変更により許可されるアクセスについても示します。
以下に示す例は、シンプルな Squid 設定に対してどのように SELinux が影響を与えることができるのかを示す一例に過ぎません。Squid に関する総合的な説明は本ガイドの対象外となります。詳細については、公式の Squid ドキュメント を参照してください。ここでは、Squid ホストにはインターネットアクセスがあり、2 種類のネットワークインターフェースが備わっていることを前提としています。またファイアウォールでは、Squid がリッスンするデフォルトの TCP ポート (TCP 3128) を使って内部インターフェース上のアクセスを許可するよう設定されていることを前提としています。
  1. squid がインストールされていることを確認します。
    ~]$ rpm -q squid
    package squid is not installed
    このパッケージがインストールされていない場合は、root で yum ユーティリティーを使用してインストールします。
    ~]# yum install squid
  2. メインの設定ファイル /etc/squid/squid.conf を編集し、cache_dir ディレクティブが以下のようにコメント解除されていることを確認します。
    cache_dir ufs /var/spool/squid 100 16 256
    この行では、この例で使用する cache_dir ディレクティブのデフォルト設定を定義しています。Squid ストレージフォーマット (ufs)、キャッシュを配置するシステム上のディレクトリー (/var/spool/squid)、キャッシュに使用するメガバイト単位のディスク領域 (100)、作成される第一レベルのキャッシュディレクトリー数と第二レベルのキャッシュディレクトリー数 (それぞれ 16256) の設定情報で構成されています。
  3. 同じ設定ファイル内で、http_access allow localnet ディレクティブもコメント解除されていることを確認してください。これにより、Red Hat Enterprise Linux では Squid のデフォルトインストールで自動的に設定される localnet ACL からのトラフィックが許可されます。こうすることで、既存の RFC1918 ネットワーク上のクライアントマシンがプロキシ経由でアクセスできるようになります (この設定例では十分なものです)。
  4. 同じ設定ファイル内で visible_hostname ディレクティブがコメント解除され、マシンのホスト名が設定されていることを確認してください。値はホストの完全修飾ドメイン名 (FQDN) にします。
    visible_hostname squid.example.com
  5. root で以下のコマンドを実行し、squid デーモンを起動します。これが squid の初回の起動なので、上記の cache_dir ディレクティブで指定したキャッシュディレクトリーがこのコマンドで初期化され、デーモンが起動します。
    ~]# systemctl start squid.service
    squid が正常に起動したことを確認します。出力は以下のようになり、タイムスタンプのみが異なります。
    ~]# systemctl status squid.service
    squid.service - Squid caching proxy
       Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled)
       Active: active (running) since Thu 2014-02-06 15:00:24 CET; 6s ago
  6. squid プロセス ID (PID) が制限のあるサービスとして起動されていることを確認します。この例では squid_var_run_t の値で確認します。
    ~]# ls -lZ /var/run/squid.pid 
    -rw-r--r--. root squid unconfined_u:object_r:squid_var_run_t:s0 /var/run/squid.pid
  7. この時点で、前に設定していた localnet ACL に接続しているクライアントマシンは、そのプロキシとしてこのホストの内部インターフェースを使用できるようになります。これはシステム全体または一般的な Web ブラウザすべてのセッティングで設定することができます。これで Squid では目的のマシンのデフォルトポートでリッスンするようになりますが (TCP 3128)、目的のマシンで許可されるのは、一般的なポートからインターネット上の他のサービスへの発信接続のみになります。これが SELinux 自体で定義されているポリシーになります。SELinux では、次のステップで示すように非標準のポートへのアクセスは拒否されます。
  8. TCP ポート 10000 での web サイトのリスニングなど、クライアントが Squid プロキシを介して非標準のポートを使った要求を行うと、以下のような拒否がログ記録されます。
    SELinux is preventing the squid daemon from connecting to network port 10000
  9. このアクセスを許可するには、デフォルトでは無効になっている squid_connect_any ブール値を変更する必要があります。
    ~]# setsebool -P squid_connect_any on

    注記

    再起動後に setsebool による変更を維持したくない場合は、-P オプションを使用しないでください。
  10. Squid がクライアントの代わりにどのポートでも接続を開始できるようになったので、クライアントはインターネット上の非標準のポートにアクセスできるようになります。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。