2 要素認証を使用して SVN アクセスを保護するソリューションを実装する必要があります。理想的には、基本認証と一緒に Google Authenticator を使用したいと思います。このようなソリューションの実装をどのように進めますか?
最初にブラウザを介して認証する必要があり、認証されると、SVNコマンドが通過するWebプロキシページの開発を検討しています。これは実現可能と思われますか、それともより良い解決策がありますか?
ありがとう!
2 要素認証を使用して SVN アクセスを保護するソリューションを実装する必要があります。理想的には、基本認証と一緒に Google Authenticator を使用したいと思います。このようなソリューションの実装をどのように進めますか?
最初にブラウザを介して認証する必要があり、認証されると、SVNコマンドが通過するWebプロキシページの開発を検討しています。これは実現可能と思われますか、それともより良い解決策がありますか?
ありがとう!
これらの指示は、Ubuntu 12.04 で機能します。これらの指示は、ウェブ上のいくつかの異なる情報源から引き出されたことに注意する必要があります。このセットアップを取得するための決定的なガイドはありませんでした。
最初に、更新プログラムと C/C++ コンパイラがまだ存在しない場合はインストールします。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
Subversion と Apache をインストールします。
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn apache2
SSL を有効にします。
$ sudo a2enmod ssl
$ sudo vi /etc/apache2/ports.conf
開いているファイルで、「NameVirtualHost *」を「NameVirtualHost *:443」に変更します。
証明書の生成:
$ sudo apt-get install ssl-cert
$ sudo mkdir /etc/apache2/ssl
$ sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Enter キーを押して、証明書の localhost 値を受け入れます。
仮想ホストの作成:
$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/svnserver
$ sudo vim /etc/apache2/sites-available/svnserver
開いているファイルで、VirtualHost * を VirtualHost *:443 に変更します。
開いたファイルの ServerAdmin タグの下に次を追加し、保存して閉じます。
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.pem
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
サイトを有効にします。
$ sudo a2ensite svnserver
$ sudo vi /etc/apache2/apache2.conf
開いているファイルに次の行を追加し、保存して閉じます。
ServerName localhost
アパッチを再起動します。
$ sudo /etc/init.d/apache2 restart
SVN へのリポジトリの追加:
$ sudo mkdir /var/svn
$ REPOS=myFirstRepo
$ sudo svnadmin create /var/svn/$REPOS
$ sudo chown -R www-data:www-data /var/svn/$REPOS
$ sudo chmod -R g+ws /var/svn/$REPOS
mkdir /var/svn 以外のすべてを繰り返して、追加のリポジトリを作成します
Google 認証システム
PAM をインストールし、Google Authenticator をダウンロードしてビルドします。
$ sudo apt-get install libpam0g-dev
$ cd ~
$ sudo wget http://google-authenticator.googlecode.com/files/libpam-google-authenticator-1.0-source.tar.bz2
$ sudo tar -jxf libpam-google*
$ cd libpam-google*
$ sudo make install
Google 認証 Apache モジュール
Google Auth Apache モジュールをダウンロードしてインストールします。
$ wget https://google-authenticator-apache-module.googlecode.com/files/GoogleAuthApache.src.r10.bz2
$ sudo tar -jxf GoogleAuthApache.src.r10.bz2
$ cd google-authenticator*
$ sudo apt-get install apache2-prefork-dev
$ sudo vi Makefile
開いたファイルの 1 行目を次のように変更します。
APXS=apxs2
次に、7 行目をインストール先の場所に変更し、ファイルを保存して閉じます。
install: all
sudo cp .libs/mod_authn_google.so /usr/lib/apache2/modules/
mod_authn_google.c をプロジェクト サイトの r21 のコードに置き換えます: https://code.google.com/p/google-authenticator-apache-module/source/detail?r=21 (これは真の 2 要素認証の場合です)認証が追加されました)
$ sudo make install
Apache で 2 要素認証をセットアップします。
$ cd /etc/apache2/
$ sudo mkdir two-factor
$ sudo vi httpd.conf
開いたファイルに次の行を追加し、保存して閉じます。
Loadmodule authn_google_module /usr/lib/apache2/modules/mod_authn_google.so
$ sudo vi ports.conf
開いているファイルを次のように変更します
$ cd /etc/apache2/mods-available
$ sudo vi dav_svn.conf
開いているファイルに以下のテキストを追加し、保存して閉じます。
<Location /svn>
DAV svn
SVNParentPath /var/svn
AuthType Basic
AuthName "Google Authenticator Code"
AuthBasicProvider "google_authenticator"
Require valid-user
GoogleAuthUserPath /etc/apache2/two-factor/
GoogleAuthCookieLife 3600
GoogleAuthEntryWindow 2
SSLRequireSSL
</Location>
アパッチを再起動します。
$ sudo /etc/init.d/apache2 restart
この時点で、SVN、Apache、および Google Authenticator が構成されています。これでユーザーを追加できます。
ユーザーの追加
まず、ユーザーをシステム ユーザーとして追加して、Google Auth クライアントに適切に表示されるようにする必要があります。
$ sudo adduser firstName.lastName --force-badname
$ sudo su - firstName.LastName
# google-authenticator
Google Authenticator はいくつかの質問をします。これらは、展開先の環境に基づいて確認する必要があります。
最初の質問に答えた後に表示される URL をコピーします。これは QR コードの URL であり、キーを Google 認証クライアントに追加するために使用されます。
# exit
$ cd /etc/apache2/two-factor
$ sudo cp /home/firstName.lastName/.google_authenticator firstName.lastName
$ sudo chown -R :www-data /etc/apache2/two-factor/
$ sudo chmod g+r firstName.lastName
$ sudo vi firstName.lastName
開いたファイルを変更して、次の行と同様の行を含め、保存して閉じます。
" PASSWORD=myTestPassword
これですべてが構成されます。ログインするには、URL を参照し、ユーザー名とパスワード + 6 文字の Google Authenticator コードを使用します。