19.4. 設定の例
19.4.1. 標準以外のポートへの Squid 接続 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、上記のブール値を適用し、デフォルトで特定のポートへのアクセスのみを許可することで、SELinux が Squid を補完する方法を実際に示しています。次に、この例では、ブール値を変更する方法を示し、アクセスが許可されることを示します。
これは単なる例で、SELinux が Squid の単純な設定にどのように影響するかを示していることに注意してください。Squid の包括的なドキュメントは、このドキュメントの範囲外です。詳細は、公式の Squid のドキュメント を参照してください。この例では、Squid ホストに 2 つのネットワークインターフェイス (インターネットアクセス) があり、Squid がリッスンするデフォルトの TCP ポート (TCP 3128) を使用して内部インターフェイスへのアクセスを許可するようにファイアウォールが設定されていることを前提としています。
- squidがインストールされていることを確認します。
rpm -q squid
~]$ rpm -q squid package squid is not installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow このパッケージがインストールされていない場合は、root でyumユーティリティーを使用してインストールします。yum install squid
~]# yum install squidCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 主な設定ファイル
/etc/squid/squid.confを編集し、cache_dirディレクティブがコメント解除されており、以下のようになっていることを確認します。cache_dir ufs /var/spool/squid 100 16 256
cache_dir ufs /var/spool/squid 100 16 256Copy to Clipboard Copied! Toggle word wrap Toggle overflow この行は、この例で使用するcache_dirディレクティブのデフォルト設定を指定します。これは、Squid ストレージ形式 (ufs)、キャッシュが存在するシステムのディレクトリー (/var/spool/squid)、キャッシュに使用するディスク領域の量 (100)、および作成する第 1 レベルおよび第 2 レベルのキャッシュディレクトリーの数 (それぞれ16および256) で設定されます。 - 同じ設定ファイルで、
http_access allow localnetディレクティブのコメントが解除されていることを確認します。これにより、Red Hat Enterprise Linux への Squid のデフォルトインストールで自動的に設定されるlocalnetACL からのトラフィックが許可されます。これにより、既存の RFC1918 ネットワークのクライアントマシンがプロキシーを介してアクセスできるようになります。これは、この単純な例としては十分です。 - 同じ設定ファイルで、
visible_hostnameディレクティブがコメント解除され、マシンのホスト名に設定されていることを確認します。この値は、ホストの完全修飾ドメイン名 (FQDN) にする必要があります。visible_hostname squid.example.com
visible_hostname squid.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow - root で、以下のコマンドを実行して、
squidデーモンを起動します。squidを初めて起動する際に、このコマンドは、cache_dirディレクティブで指定した方法でキャッシュディレクトリーを初期化し、デーモンを起動します。systemctl start squid.service
~]# systemctl start squid.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow squidが正常に起動していることを確認します。この出力には、以下の情報が含まれます。タイムスタンプのみが異なります。systemctl status squid.service
~]# 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 agoCopy to Clipboard Copied! Toggle word wrap Toggle overflow squid_var_run_t値からわかるように、squidプロセス ID (PID) が制限付きサービスとして起動していることを確認します。ls -lZ /var/run/squid.pid
~]# ls -lZ /var/run/squid.pid -rw-r--r--. root squid unconfined_u:object_r:squid_var_run_t:s0 /var/run/squid.pidCopy to Clipboard Copied! Toggle word wrap Toggle overflow - この時点で、以前に設定した
localnetACL に接続したクライアントマシンは、このホストの内部インターフェイスをプロキシーとして正常に使用できます。これは、すべての一般的な Web ブラウザーの設定で、またはシステム全体で設定できます。Squid はターゲットマシン (TCP 3128) のデフォルトポートでリッスンしていますが、ターゲットマシンは共通ポートを介したインターネット上の他のサービスへの発信接続のみを許可します。これは、SELinux 自体が定義するポリシーです。次の手順で示すように、SELinux は標準以外のポートへのアクセスを拒否します。 - クライアントが、TCP ポート 10000 でリッスンしている Web サイトなどの Squid プロキシーを使用して、標準以外のポートを使用して要求を行うと、以下のような拒否がログに記録されます。
SELinux is preventing the squid daemon from connecting to network port 10000
SELinux is preventing the squid daemon from connecting to network port 10000Copy to Clipboard Copied! Toggle word wrap Toggle overflow - これを可能にするには、
squid_connect_anyブール値を変更する必要があります。これは、デフォルトで無効になっているためです。setsebool -P squid_connect_any on
~]# setsebool -P squid_connect_any onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記再起動後も、setsebool の変更を保持したくない場合は、-Pオプションを使用しないでください。 - Squid がクライアントに代わってポートへの接続を開始できるようになったため、クライアントはインターネットの標準以外のポートにアクセスできるようになりました。