Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

19.4. 設定の例

19.4.1. 標準以外のポートへの Squid 接続

以下の例では、上記のブール値を適用し、デフォルトで特定のポートへのアクセスのみを許可することで、SELinux が Squid を補完する方法を実際に示しています。次に、この例では、ブール値を変更する方法を示し、アクセスが許可されることを示します。
これは単なる例で、SELinux が Squid の単純な設定にどのように影響するかを示していることに注意してください。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)、および作成する第 1 レベルおよび第 2 レベルのキャッシュディレクトリーの数 (それぞれ 16 および 256) で構成されます。
  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_var_run_t 値からわかるように、squid プロセス ID (PID) が制限付きサービスとして起動していることを確認します。
    ~]# 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 がクライアントに代わってポートへの接続を開始できるようになったため、クライアントはインターネットの標準以外のポートにアクセスできるようになりました。