読者です 読者をやめる 読者になる 読者になる

フルスタックエンジニアを目指して

いろいろやってみるブログ

プロキシサーバ(Squid)にBasic認証を実装する

忙しくて全然アップできていませんが、復習がてら。

Squidといえばプロキシ機能のOSS代表格ですが、今回はこのSquidBasic認証機能を実装します。認証モジュールはSquidのバージョンによって格納場所やファイル名が異なりますので注意が必要です。

 

Basic認証を導入する

/etc/squid/squid.confを編集します。

#vi /etc/squid/squid.conf

auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/.htpasswd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

auth_param basic program」で認証モジュールのPATHとパスワードファイルのPATHを指定します。その他のオプションはSquidWikiなどを参考に適切に設定してください。realmは好みですが、ユーザがわかりやすいものを設定した方がよいでしょう。

 

Basic認証用のパスワードファイルを作成する

squid.conf内で指定したパスワードファイルを作成します。Basic認証の場合、パスワードファイルはハッシュ化されなければなりません。htpasswdコマンドが利用できる場合は、htpasswdコマンドでハッシュ化しましょう。

参考:SquidプロキシでDigest認証 | まったりせのインフラ構築メモ

 

htpasswdコマンドはApacheに付属しているツールらしく、環境によってはhtpasswdコマンドが利用できない場合があります。対処法としては3つあるので紹介しておきます。

  1. Appacheをインストールする
  2. httpd-toolsをインストールする
  3. 外部サービスを使う

 

1.Appacheをインストールする

Appacheをインストールすることで、htpasswdコマンドが利用できるようになります。ただし、本番環境など、不必要なサービスを入れたくない場合にはおすすめできません。

 

2.httpd-toolsをインストールする

AppacheをインストールせずともhtpasswdなどのAppache付属のツールを利用できるようになります。Appacheをインストールしたくはないが、コマンドラインでhtpasswdを使いたいというときにおすすめです。

参考:サーバにhtpasswdだけインストールしたい - tanihiro.log

 

3.外部サービスを使う

外部サービスとして、htpasswdコマンドを実行してくれるサイトがあります。このようなサイトを利用することで環境に手を加えなくてもパスワードをハッシュ化することができます。

参考:htpasswdファイル生成(作成)

 

パスワードをハッシュ化できたら「/etc/squid/.htpasswd」にハッシュ化したパスワードを貼り付けます。

# vi /etc/squid/.htpasswd

testuser:JOV5nIAW/Fb8A

 

アクセステスト

ブラウザにプロキシサーバを設定して、任意のWEBサイトにアクセスすると認証のポップアップが上がってくるので、パスワードファイルに記載したユーザ名とパスワードを入力するとアクセスが可能になります。

 

ログの見方

プロキシサーバへの認証が成功すると、Squidのaccesslogに認証したユーザ名でログが表示されるようになります。逆に、認証が失敗した場合はHTTPステータスコード「407」エラーとしてログに載るようになります。なお、407エラーとなったユーザ名はログに載らないので、IP等から追いかける必要があります。