忙しくて全然アップできていませんが、復習がてら。
Squidといえばプロキシ機能のOSS代表格ですが、今回はこのSquidにBasic認証機能を実装します。認証モジュールはSquidのバージョンによって格納場所やファイル名が異なりますので注意が必要です。
Basic認証を導入する
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を指定します。その他のオプションはSquidのWikiなどを参考に適切に設定してください。realmは好みですが、ユーザがわかりやすいものを設定した方がよいでしょう。
Basic認証用のパスワードファイルを作成する
squid.conf内で指定したパスワードファイルを作成します。Basic認証の場合、パスワードファイルはハッシュ化されなければなりません。htpasswdコマンドが利用できる場合は、htpasswdコマンドでハッシュ化しましょう。
参考:SquidプロキシでDigest認証 | まったりせのインフラ構築メモ
htpasswdコマンドはApacheに付属しているツールらしく、環境によってはhtpasswdコマンドが利用できない場合があります。対処法としては3つあるので紹介しておきます。
- Appacheをインストールする
- httpd-toolsをインストールする
- 外部サービスを使う
1.Appacheをインストールする
Appacheをインストールすることで、htpasswdコマンドが利用できるようになります。ただし、本番環境など、不必要なサービスを入れたくない場合にはおすすめできません。
2.httpd-toolsをインストールする
AppacheをインストールせずともhtpasswdなどのAppache付属のツールを利用できるようになります。Appacheをインストールしたくはないが、コマンドラインでhtpasswdを使いたいというときにおすすめです。
参考:サーバにhtpasswdだけインストールしたい - tanihiro.log
3.外部サービスを使う
外部サービスとして、htpasswdコマンドを実行してくれるサイトがあります。このようなサイトを利用することで環境に手を加えなくてもパスワードをハッシュ化することができます。
パスワードをハッシュ化できたら「/etc/squid/.htpasswd」にハッシュ化したパスワードを貼り付けます。
# vi /etc/squid/.htpasswd
testuser:JOV5nIAW/Fb8A
アクセステスト
ブラウザにプロキシサーバを設定して、任意のWEBサイトにアクセスすると認証のポップアップが上がってくるので、パスワードファイルに記載したユーザ名とパスワードを入力するとアクセスが可能になります。
ログの見方
プロキシサーバへの認証が成功すると、Squidのaccesslogに認証したユーザ名でログが表示されるようになります。逆に、認証が失敗した場合はHTTPステータスコード「407」エラーとしてログに載るようになります。なお、407エラーとなったユーザ名はログに載らないので、IP等から追いかける必要があります。