19.4. 設定の例
19.4.1. 標準以外のポートへの Squid 接続
以下の例では、上記のブール値を適用し、デフォルトで特定のポートへのアクセスのみを許可することで、SELinux が Squid を補完する方法を実際に示しています。次に、この例では、ブール値を変更する方法を示し、アクセスが許可されることを示します。
これは単なる例で、SELinux が Squid の単純な設定にどのように影響するかを示していることに注意してください。Squid の包括的なドキュメントは、このドキュメントの範囲外です。詳細は、公式の Squid のドキュメント を参照してください。この例では、Squid ホストに 2 つのネットワークインターフェイス (インターネットアクセス) があり、Squid がリッスンするデフォルトの TCP ポート (TCP 3128) を使用して内部インターフェイスへのアクセスを許可するようにファイアウォールが設定されていることを前提としています。
- squidがインストールされていることを確認します。
~]$ rpm -q squid package squid is not installed
このパッケージがインストールされていない場合は、root でyum
ユーティリティーを使用してインストールします。~]# yum install squid
- 主な設定ファイル
/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
) で設定されます。 - 同じ設定ファイルで、
http_access allow localnet
ディレクティブのコメントが解除されていることを確認します。これにより、Red Hat Enterprise Linux への Squid のデフォルトインストールで自動的に設定されるlocalnet
ACL からのトラフィックが許可されます。これにより、既存の RFC1918 ネットワークのクライアントマシンがプロキシーを介してアクセスできるようになります。これは、この単純な例としては十分です。 - 同じ設定ファイルで、
visible_hostname
ディレクティブがコメント解除され、マシンのホスト名に設定されていることを確認します。この値は、ホストの完全修飾ドメイン名 (FQDN) にする必要があります。visible_hostname squid.example.com
- 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
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
- この時点で、以前に設定した
localnet
ACL に接続したクライアントマシンは、このホストの内部インターフェイスをプロキシーとして正常に使用できます。これは、すべての一般的な Web ブラウザーの設定で、またはシステム全体で設定できます。Squid はターゲットマシン (TCP 3128) のデフォルトポートでリッスンしていますが、ターゲットマシンは共通ポートを介したインターネット上の他のサービスへの発信接続のみを許可します。これは、SELinux 自体が定義するポリシーです。次の手順で示すように、SELinux は標準以外のポートへのアクセスを拒否します。 - クライアントが、TCP ポート 10000 でリッスンしている Web サイトなどの Squid プロキシーを使用して、標準以外のポートを使用して要求を行うと、以下のような拒否がログに記録されます。
SELinux is preventing the squid daemon from connecting to network port 10000
- これを可能にするには、
squid_connect_any
ブール値を変更する必要があります。これは、既定で無効になっているためです。~]# setsebool -P squid_connect_any on
注記再起動後も、setsebool の変更を保持したくない場合は、-P
オプションを使用しないでください。 - Squid がクライアントに代わってポートへの接続を開始できるようになったため、クライアントはインターネットの標準以外のポートにアクセスできるようになりました。