Show Table of Contents
19.4. 設定例
19.4.1. Squid の非標準ポートへの接続
以下では、上記のブール値を実行し、特定のポートにへのアクセスのみをデフォルトで許可することで SELinux が Squid を補完している実用的な例を示します。また、ブール値を変更し、その変更により許可されるアクセスについても示します。
以下に示す例は、シンプルな Squid 設定に対してどのように SELinux が影響を与えることができるのかを示す一例に過ぎません。Squid に関する総合的な説明は本ガイドの対象外となります。詳細については、公式の Squid ドキュメント を参照してください。ここでは、Squid ホストにはインターネットアクセスがあり、2 種類のネットワークインターフェースが備わっていることを前提としています。またファイアウォールでは、Squid がリッスンするデフォルトの TCP ポート (TCP 3128) を使って内部インターフェース上のアクセスを許可するよう設定されていることを前提としています。
- squid がインストールされていることを確認します。
~]$
rpm -q squidpackage 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)、作成される第一レベルのキャッシュディレクトリー数と第二レベルのキャッシュディレクトリー数 (それぞれ16と256) の設定情報で構成されています。 - 同じ設定ファイル内で、
http_access allow localnetディレクティブもコメント解除されていることを確認してください。これにより、Red Hat Enterprise Linux では Squid のデフォルトインストールで自動的に設定されるlocalnetACL からのトラフィックが許可されます。こうすることで、既存の RFC1918 ネットワーク上のクライアントマシンがプロキシ経由でアクセスできるようになります (この設定例では十分なものです)。 - 同じ設定ファイル内で
visible_hostnameディレクティブがコメント解除され、マシンのホスト名が設定されていることを確認してください。値はホストの完全修飾ドメイン名 (FQDN) にします。visible_hostname squid.example.com
- root で以下のコマンドを実行し、
squidデーモンを起動します。これがsquidの初回の起動なので、上記のcache_dirディレクティブで指定したキャッシュディレクトリーがこのコマンドで初期化され、デーモンが起動します。~]#
systemctl start squid.servicesquidが正常に起動したことを確認します。出力は以下のようになり、タイムスタンプのみが異なります。~]#
systemctl status squid.servicesquid.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プロセス 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- この時点で、前に設定していた
localnetACL に接続しているクライアントマシンは、そのプロキシとしてこのホストの内部インターフェースを使用できるようになります。これはシステム全体または一般的な 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 がクライアントの代わりにどのポートでも接続を開始できるようになったので、クライアントはインターネット上の非標準のポートにアクセスできるようになります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.