Webブラウザがブラウザというより環境って感じになってきた昨今、いかがお過ごしでしょうか。
何でもかんでもWebサービスでまかなえすぎて、ぼちぼちブラウザのセキュリティが一番のリスクになってきてますね😇
セキュリティやネットワークの試験でもUTMや認証付きProxyが当たり前に導入されてますし、私しかいない自室のセキュリティといえど負けてられないと自室のサーバに認証付きProxyをいれることにしました。
お前は一体何と戦っているんだ?_(:3」∠)_
Proxyの認証には前回までで入れたKerberos認証を使います。
認証付きProxyを導入するに当たって一番嫌だったのが認証によるWebアクセスへの一手間だったんですよねー。Kerberos導入でそこが改善できることになったので、じゃぁProxy認証を導入してみようと。
Squidサーバの登録
KerberosがSquidにチケットを発行できるようKerberosのDBにSquidが動いているホストを登録します。
Squid用のプリンシパルはHTTP/minipc.home@HOMEらしいです。
$ kadmin.local
kadmin.local: addprinc -randkey HTTP/minipc.home@HOME
Squid用のキータブを作成する
前回まではSSSDに認証を全てお任せしてたので、SSSDの実行者であるrootしかアクセスできない/etc/krb5.keytabにプリンシパルの登録をまとめてきました。
SquidはSSSDに丸投げはできないみたいでSquid自身(実行者squid)がkeytabにアクセスする必要があるため、Squid用のキータブファイルを別に用意します。
$ kadmin.local
kadmin.local: ktadd -k /etc/squid/squid.keytab HTTP/minipc.home@HOME
kadmin.local: quit
$ chown squid:squid /etc/squid/squid.keytab
squid.confを修正する
kerberos認証を使うようにsquid.confを書き換えます。
上から順番にチェックして一致したらそこで確定という手順なので、Kerberos認証のallowより前に別のallowやdenyがマッチしたらKerberos認証が行われません。順番が大切です。
# Kerberos認証との連携
auth_param negotiate program /usr/lib64/squid/negotiate_kerberos_auth -k /etc/squid/squid.keytab -s HTTP/minipc.home@HOME
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
# localnetの無条件allowを停止する
# http_access allow localnet
Squidを再起動すればKerberos認証が通らない場合407を返すようになります。
$ systectl restart squid
# 407 Proxy Authentication Required
$ curl --proxy http://minipc.home:3128 https://www.google.com
# 200 OK
$ curl --proxy http://minipc.home:3128 --proxy-negotiate https://www.google.com
ブラウザ(Firefox)を対応させる
FirefoxでのWebブラウズもProxyを通している場合は認証で弾かれるようになります。
Firefoxの設定を修正します。
- アドレスバーに
about:config
と入力し設定画面を開く -
network.negotiate-auth.trusted-uris
にproxyサーバ(minipc.home)を設定 -
network.auth.use-sspi
にfalse
を設定
use-sspiをfalseにすることでWindows統合認証ではなくMIT Kerberosの方を使用するようになります。
この設定でFirefoxのproxyの設定だけでなくFoxyProxyでも認証を通過しました。アドオンでのproxy設定も認証がちゃんと通るみたいです。