Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
20.4. 設定例
20.4.1. Squid の非標準ポートへの接続
以下では、上記のブール値を実行し、特定のポートにへのアクセスのみをデフォルトで許可することで SELinux が Squid を補完している実用的な例を示します。また、ブール値を変更し、その変更により許可されるアクセスについても示します。
以下に示す例は、シンプルな Squid 設定に対してどのように SELinux が影響を与えることができるのかを示す一例に過ぎません。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
)、作成される第一レベルのキャッシュディレクトリー数と第二レベルのキャッシュディレクトリー数 (それぞれ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
プロセス 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- この時点で、前に設定していた
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 がクライアントの代わりにどのポートでも接続を開始できるようになったので、クライアントはインターネット上の非標準のポートにアクセスできるようになります。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。