ウェブサイト検索

CentOS 7/8 で Squid を使用して HTTP プロキシを作成する方法


Web プロキシはかなり前から存在しており、世界中の何百万ものユーザーによって使用されています。 Web プロキシには幅広い目的があり、最も一般的なのはオンラインの匿名性ですが、Web プロキシを利用できる方法は他にもあります。以下にいくつかのアイデアを示します。

  • オンラインの匿名性
  • オンラインセキュリティの向上
  • ロード時間を改善する
  • 悪意のあるトラフィックをブロックする
  • オンラインアクティビティを記録します
  • 地域制限を回避するには
  • 場合によっては帯域幅の使用量を削減できる

プロキシサーバーの仕組み

プロキシ サーバーは、クライアントと、クライアントがリソースを要求する他のサーバーとの間の仲介として使用されるコンピューターです。この簡単な例としては、クライアントがオンライン リクエスト (Web ページを開くなど) を行うとき、まずプロキシ サーバーに接続します。

次に、プロキシ サーバーはローカル ディスク キャッシュをチェックし、そこにデータが見つかった場合はそのデータをクライアントに返します。キャッシュされていない場合は、プロキシ IP アドレス (IP アドレスとは異なります) を使用してクライアントに代わってリクエストを作成します。クライアント)、データをクライアントに返します。プロキシ サーバーは新しいデータをキャッシュしようとし、同じサーバーに対して今後行われるリクエストにそのデータを使用します。

Squid プロキシとは

Squid は、私の幅広い組織で使用されている Web プロキシです。多くの場合、キャッシュ プロキシとして使用され、応答時間の改善と帯域幅の使用量の削減が行われます。

この記事では、Linode CentOS 7 VPS にSquid をインストールし、HTTP プロキシ サーバーとして使用します。

CentOS 7/8 に Squid をインストールする方法

始める前に、Squid には最小要件はありませんが、RAM の使用量はプロキシ サーバー経由でインターネットを閲覧するクライアントによって異なる可能性があることを知っておいてください。

Squid はベース リポジトリに含まれているため、インストールはシンプルかつ簡単です。ただし、インストールする前に、実行してパッケージが最新であることを確認してください。

yum -y update

続いてsquidをインストールし、次のコマンドを使用してシステム起動時にsquidを起動して有効にします。

yum -y install squid
systemctl start squid
systemctl  enable squid

この時点で、Squid Web プロキシはすでに実行されているはずで、サービスのステータスを確認できます。

systemctl status squid
サンプル出力
 squid.service - Squid caching proxy
   Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
 Main PID: 2005 (squid)
   CGroup: /system.slice/squid.service
           ├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
           ├─2007 (squid-1) -f /etc/squid/squid.conf
           └─2008 (logfile-daemon) /var/log/squid/access.log

Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.

以下に、注意すべき重要なファイルの場所をいくつか示します。

  • Squid 設定ファイル: /etc/squid/squid.conf
  • Squid アクセス ログ: /var/log/squid/access.log
  • Squid キャッシュ ログ: /var/log/squid/cache.log

最小限の squid.conf 構成ファイル (コメントなし) は次のようになります。

acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl localnet src 172.16.0.0/12	# RFC1918 possible internal network
acl localnet src 192.168.0.0/16	# RFC1918 possible internal network
acl localnet src fc00::/7       # RFC 4193 local private network range
acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern .		0	20%	4320

Squid を HTTP プロキシとして構成する

ここでは、認証にクライアント IP アドレスのみを使用して、squid を HTTP プロキシとして設定する方法を示します。

Squid ACL の追加

新しいプロキシ サーバーを介して IP アドレスが Web にアクセスできるようにしたい場合は、設定ファイルに新しいACL (アクセス コントロール リスト) 行を追加する必要があります。 。

vim /etc/squid/squid.conf

追加する必要がある行は次のとおりです。

acl localnet src XX.XX.XX.XX

ここで、XX.XX.XX.XX は、追加する実際のクライアント IP アドレスです。この行は、ACL が定義されているファイルの先頭に追加する必要があります。 ACL の隣に、この IP アドレスを使用するユーザーを説明するコメントを追加することをお勧めします。

Squid がローカル ネットワークの外側にある場合は、クライアントのパブリック IP アドレスを追加する必要があることに注意することが重要です。

新しい変更を有効にするには、Squid を再起動する必要があります。

systemctl  restart squid

Squid プロキシ ポートを開く

構成ファイルでわかるように、特定のポートのみが接続を許可されています。構成ファイルを編集することでさらに追加できます。

acl Safe_ports port XXX

ここで、XXX はロードする実際のポートです。ここでも、ポートの使用目的を説明するコメントを横に残すことをお勧めします。

変更を有効にするには、squid をもう一度再起動する必要があります。

systemctl  restart squid

Squid プロキシ クライアント認証

おそらく、プロキシを使用する前にユーザーに認証を要求するでしょう。この目的のために、基本的な HTTP 認証を有効にすることができます。設定は簡単かつ迅速です。

まず、httpd ツールをインストールする必要があります。

yum -y install httpd-tools

次に、後で認証用のユーザー名を保存するファイルを作成しましょう。 Squid はユーザー 「squid 」 で実行されるため、ファイルはそのユーザーが所有する必要があります。

touch /etc/squid/passwd
chown squid: /etc/squid/passwd

ここで、「proxyclient 」 という新しいユーザーを作成し、そのパスワードを設定します。

htpasswd /etc/squid/passwd proxyclient

New password:
Re-type new password:
Adding password for user proxyclient

ここで認証を構成するために、構成ファイルを開きます。

vim /etc/squid/squid.conf

ポート ACL の後に次の行を追加します。

auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

ファイルを保存してsquidを再起動し、新しい変更を有効にします。

systemctl restart squid

Squid Proxy で Web サイトをブロックする

最後に、不要な Web サイトをブロックするのに役立つ最後のACL を作成します。まず、ブラックリストに登録されたサイトを保存するファイルを作成します。

touch /etc/squid/blacklisted_sites.acl

ブロックしたいドメインをいくつか追加できます。例えば:

.badsite1.com
.badsite2.com

先頭のドットは、www.badsite1subsite.badsite1.com などを含むそのサイトへのすべての参照をブロックするようにsquidに指示します。

次に、Squid の設定ファイルを開きます。

vim /etc/squid/squid.conf

ポート ACL の直後に次の 2 行を追加します。

acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls

ファイルを保存して、squid を再起動します。

systemctl restart squid

すべてが正しく設定されたら、Squid HTTP プロキシを使用するようにローカル クライアント ブラウザまたはオペレーティング システムのネットワーク設定を設定できるようになります。

結論

このチュートリアルでは、Squid HTTP プロキシ サーバーを自分でインストール、保護、構成する方法を学びました。取得した情報を使用して、Squid を介して送受信されるトラフィックに対して基本的なフィルタリングを追加できるようになりました。

さらに遠くまで行きたい場合は、気が散るのを防ぐために、勤務時間中に一部の Web サイトをブロックするようにイカを設定することもできます。ご質問やご意見がございましたら、以下のコメント欄に投稿してください。