SquidプロキシでDigest認証
SquidプロキシでDigest認証
前回 は Squid で Basic認証を行いましたが、それだとネットワークを流れる通信は BASE64 でエンコードされるだけなので、キャプチャされれば簡単に復号されパスワードがバレてしまいます。
そこで今回はネットワークを流れるパスワードを暗号化できるDigest認証を設定してみます。
環境は前回と同じで、Squidはインストール済みとします。
# cat /etc/redhat-release
Scientific Linux release 6.1 (Carbon)
# rpm -qa squid
squid-3.1.10-1.el6_2.1.x86_64
ではここから設定を行います。
パスワードファイルを作成します。(パスワードのハッシュ化はせずにplaintextで保存すること)
# htpasswd -bcp /etc/squid/passwd user01 password
設定ファイルを編集します。
# vi /etc/squid/squid.conf
auth_param digest program /usr/lib64/squid/digest_pw_auth /etc/squid/passwd
auth_param digest children 20 startup=0 idle=1
auth_param digest realm Mattari SE
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
acl mattarise proxy_auth REQUIRED
http_access allow mattarise
サービスを再起動します。
# service squid restart
Webブラウザにプロキシの設定を行い、適当なページを開くと認証画面が表示されるようになります。
さきほど設定したユーザー名とパスワードを入力します。
ユーザから見ればBasic認証と何ら違いはありませんが、通信経路上のパスワードは暗号化され安全になっています。

パスワードファイルについて
Basic認証のときは、パスワードファイルのパスワードハッシュ化を指定しなかった為、CRYPTで暗号化されて
いましたが、今回はplaintextを指定しました。
これはDigest認証のときはハッシュ化されたパスワードファイルを使うことができないからです。
パスワードファイルのハッシュアルゴリズムには CRYPT/MD5/SHA などがあります。
プレーンテキストでパスワードを保存
# htpasswd -bp passwd user_plain password
MD5でパスワードを保存
# htpasswd -bm passwd user_md5 password
SHAでパスワードを保存
# htpasswd -bs passwd user_sha password
CRYPTでパスワードを保存
# htpasswd -bd passwd user_crypt password
パスワードファイルの中身を表示してみると、それぞれ指定されたハッシュアルゴリズムでパスワードが
保存されていることが分かります。
# cat passwd
user_plain:password
user_md5:$apr1$/waWhqkm$fKCO51ooSPiJDqv2VBvqS/
user_sha:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=
user_crypt:fuNA9szthqt2k
今回の環境で検証してみたところ、
Digest認証の場合、パスワードファイルで使えるのは
PLAIN TEXT ○
MD5 ×
SHA ×
CRYPT ×
Basic認証の場合、パスワードファイルで使えるのは
PLAIN TEXT ×
MD5 ○
SHA ×
CRYPT ○
という結果になりました。
前回 は Squid で Basic認証を行いましたが、それだとネットワークを流れる通信は BASE64 でエンコードされるだけなので、キャプチャされれば簡単に復号されパスワードがバレてしまいます。
そこで今回はネットワークを流れるパスワードを暗号化できるDigest認証を設定してみます。
環境は前回と同じで、Squidはインストール済みとします。
# cat /etc/redhat-release
Scientific Linux release 6.1 (Carbon)
# rpm -qa squid
squid-3.1.10-1.el6_2.1.x86_64
ではここから設定を行います。
パスワードファイルを作成します。(パスワードのハッシュ化はせずにplaintextで保存すること)
# htpasswd -bcp /etc/squid/passwd user01 password
設定ファイルを編集します。
# vi /etc/squid/squid.conf
auth_param digest program /usr/lib64/squid/digest_pw_auth /etc/squid/passwd
auth_param digest children 20 startup=0 idle=1
auth_param digest realm Mattari SE
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
acl mattarise proxy_auth REQUIRED
http_access allow mattarise
サービスを再起動します。
# service squid restart
Webブラウザにプロキシの設定を行い、適当なページを開くと認証画面が表示されるようになります。
さきほど設定したユーザー名とパスワードを入力します。
ユーザから見ればBasic認証と何ら違いはありませんが、通信経路上のパスワードは暗号化され安全になっています。

パスワードファイルについて
Basic認証のときは、パスワードファイルのパスワードハッシュ化を指定しなかった為、CRYPTで暗号化されて
いましたが、今回はplaintextを指定しました。
これはDigest認証のときはハッシュ化されたパスワードファイルを使うことができないからです。
パスワードファイルのハッシュアルゴリズムには CRYPT/MD5/SHA などがあります。
プレーンテキストでパスワードを保存
# htpasswd -bp passwd user_plain password
MD5でパスワードを保存
# htpasswd -bm passwd user_md5 password
SHAでパスワードを保存
# htpasswd -bs passwd user_sha password
CRYPTでパスワードを保存
# htpasswd -bd passwd user_crypt password
パスワードファイルの中身を表示してみると、それぞれ指定されたハッシュアルゴリズムでパスワードが
保存されていることが分かります。
# cat passwd
user_plain:password
user_md5:$apr1$/waWhqkm$fKCO51ooSPiJDqv2VBvqS/
user_sha:{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=
user_crypt:fuNA9szthqt2k
今回の環境で検証してみたところ、
Digest認証の場合、パスワードファイルで使えるのは
PLAIN TEXT ○
MD5 ×
SHA ×
CRYPT ×
Basic認証の場合、パスワードファイルで使えるのは
PLAIN TEXT ×
MD5 ○
SHA ×
CRYPT ○
という結果になりました。
スポンサーサイト