5

2 要素認証を使用して SVN アクセスを保護するソリューションを実装する必要があります。理想的には、基本認証と一緒に Google Authenticator を使用したいと思います。このようなソリューションの実装をどのように進めますか?

最初にブラウザを介して認証する必要があり、認証されると、SVNコマンドが通過するWebプロキシページの開発を検討しています。これは実現可能と思われますか、それともより良い解決策がありますか?

ありがとう!

4

1 に答える 1

11

これらの指示は、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 コードを使用します。

于 2013-11-05T02:38:13.293 に答える