質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Squid

Squidは、TCP/IPネットワークでのユーザーとサーバの通信を中継するオープンソースのプロキシサーバソフト。リバースプロキシやキャッシュサーバとして使用することも可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

解決済

2回答

2192閲覧

Squidでhttp_access deny allとしてもアクセスできてしまう

k-itaki

総合スコア3

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Squid

Squidは、TCP/IPネットワークでのユーザーとサーバの通信を中継するオープンソースのプロキシサーバソフト。リバースプロキシやキャッシュサーバとして使用することも可能です。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

0クリップ

投稿2022/03/08 13:07

サーバからhttp/httpsでのアクセス先を制御したく、
Squidをインストールし、ホワイトリストに記載したドメインだけにアクセス先を限定する設定をしました。

環境は以下です。
OS:CentOS Linux release 8.3.2011
Squid:Squid Cache: Version 4.15

しかしホワイトリストへの記載がないにもかかわらず、
curlで外部サイト(www.google.comなど)にhttpリクエストを行ってもレスポンスコード200でアクセスできてしまいました。

なので、症状切り分けのためsquid.confの1番上の行に”http_access deny all”と記載し、
設定反映の為squid再起動後、同じくcurlで外部サイトにアクセスしても同じくレスポンスコード200でアクセスできてしまい、
Squidの制御が利いていないようです。

ただ、systemctlでstatusを確認しても、きちんとsquid.confを参照して起動しています。

[root@servername squid]# systemctl status squid.service ● squid.service - Squid caching proxy Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2022-03-08 21:20:20 JST; 32min ago Docs: man:squid(8) Process: 171002 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS) Main PID: 171007 (squid) Tasks: 2 (limit: 17884) Memory: 13.7M CGroup: /system.slice/squid.service tq171007 /usr/sbin/squid --foreground -f /etc/squid/squid.conf mq171010 (squid-1) --kid squid-1 --foreground -f /etc/squid/squid.conf

また、リッスンポートが上がっていることも確認しています。
※XXX.XXX.XXX.XXXはグローバルネットワーク側のeth1のIP

[root@servername squid]# netstat -na | grep :3128 tcp 0 0 XXX.XXX.XXX.XXX:3128 0.0.0.0:* LISTEN

試しにcurlしてみた直後にnetstatで確認すると、やはりeth1から外部サイト向けにアクセスできてしまっているようです。

[root@servername squid]# netstat -na | grep :80 tcp 0 0 XXX.XXX.XXX.XXX:45942 142.250.206.228:80 TIME_WAIT

また、/var/log/squid/access.logにも何も記録がありません。

squidをインストールしたサーバからのhttp/httpsのアクセス制御を行うために、何かその他に設定が必要なのでしょうか。
設定にて見落としている点などあれば、ご指摘ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2022/03/08 13:36

squid.conf の内容を教えてください。 > /var/log/squid/access.logにも何も記録がありません。 curl のオプションは正しいですか? プロキシを経由せず、直接アクセスしているのではないでしょうか。
k-itaki

2022/03/08 14:51

squid.conf は以下です。 コメント行は抜いています。 http_access deny all acl whitelist dstdomain "/etc/squid/whitelist" acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 443 acl CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost whitelist http_access allow localhost manager http_access deny all http_port XXX.XXX.XXX.XXX: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 logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh/%<A access_log /var/log/squid/access.log common /etc/squid/whitelistの内容は以下にしています .google.com curlですが特にオプションは設定していませんでした。
k-itaki

2022/03/08 14:55

curl -I http://www.google.com -x XXX.XXX.XXX.XXX:3128 -x のオプションでsquidのリッスンポートを指定したところ、アクセスログには記録されるようになりました。なので、ご指摘の通りssquidを経由できていなかったようです。 ただ、これを受け最上部のhttp_access deny allを再度コメントアウトし、squidを再起動して再度curlしてみましたが、アクセスログには403が記録されsquidでブロックされているようでした。 XXX.XXX.XXX.XXX - - [08/Mar/2022:23:50:31 +0900] "HEAD http://www.google.com/ HTTP/1.1" 403 367 TCP_DENIED:HIER_NONE そうなると、こんどはなにかsquid.confに誤記があるでしょうか。
guest

回答2

0

ベストアンサー

(質問への追記・修正依頼より)

curl -I http://www.google.com -x XXX.XXX.XXX.XXX:3128
ただ、これを受け最上部のhttp_access deny allを再度コメントアウトし、squidを再起動して再度curlしてみましたが、アクセスログには403が記録されsquidでブロックされているようでした。

オプション -x XXX.XXX.XXX.XXX:3128 の場合、squid から見た接続元IPアドレスは XXX.XXX.XXX.XXX です。
acl localhost ではないので許可されません。
(-x 127.0.0.1:3128 は許可されますよね?)

許可する接続元IPアドレス、ネットワークアドレスの acl を定義し、http_access allow (acl名) whitelist で許可する必要があると思います。

投稿2022/03/08 15:15

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k-itaki

2022/03/09 00:53

設定につきましてご確認ありがとうございます。 以下の2パターンの設定をためし、どちらも想定動作になることを確認できました。 ①リッスンポートの設定について XXX.XXX.XXX.XXX:3128 を127.0.0.1:3128 に変更し、プロキシ経由でcurl。 ②リッスンポートの設定について XXX.XXX.XXX.XXX:3128の状態で、 最上部に acl localnet src XXX.XXX.XXX.XXX/32 を追記し、  http_access allow localhost whitelist の記載を http_access allow localnet whitelist と変更し、プロキシ経由でcurl。 squidの設定につきまして大変理解が深まりました。ありがとうございます。 ちなみに①と②について、個人的には②の設定でリッスンポートにグローバルネットワーク側の物理NICのポートのIPを指定する方が確実にアクセス制御ができるような感覚ですが、 自サーバからのhttp/httpsアクセス制御については挙動に違いはあるのでしょうか。
TaichiYanagiya

2022/03/09 02:44

挙動に違いはないと思います。両方許可してもいいかと。
k-itaki

2022/03/09 05:23

ありがとうございます。 プロキシ経由でcurlできていないこと、及びsquid.confの記載誤りについて指摘いただきましたので、 ベストアンサーとさせていただきます。
guest

0

ログに記録がないと言うことは、単にsquidを経由せずに直接アクセスしていると言うことでしょう。
squidを通す指定をしていないのでは?
curlのコマンドラインオプションで指定するか、環境変数https_proxyに設定するか。

投稿2022/03/08 13:46

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k-itaki

2022/03/08 15:00

ご指摘いただいたとおり、curlにてプロキシのオプションを付けておらず環境変数にも未定義だったため通信がsquidを経由していなかったようです。ご回答ありがとうございました。 質問欄に追記しておりますが、プロキシを通して再実施した場合でも想定のようにホワイトリストへの通信が許可できておらず、なにかsquid.confに記載誤りがあればご指摘いただけると助かります。 ※最上部のhttp_access deny allは再度コメントアウトして、再実施しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問