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

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

新規登録して質問してみよう
ただいま回答率
86.12%
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(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

解決済

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

k-itaki
PSBOJ

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

2回答

0リアクション

0クリップ

869閲覧

投稿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のアクセス制御を行うために、何かその他に設定が必要なのでしょうか。
設定にて見落としている点などあれば、ご指摘ください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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に誤記があるでしょうか。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

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