2

私は厳しいセキュリティ要件を持つ組織で働いていますが、時には過度にそうです。私のプロジェクトチームはSVNリポジトリを作成しようとしていますが、ニーズとセキュリティ要件の両方に準拠するようにSVNリポジトリを設定するのに苦労しています。

IT部門では、2要素認証を使用して自分自身を認証する必要があります。各開発者は、SSH経由でリポジトリホストマシンにログインするために使用する必要があるRSAトークンを持っています。トークンに表示される値は1分に1回変更され、各値は1回だけ使用できます。

開発者には、パスワードを保存する機能が必要です。これによりsvn+ssh、リポジトリへのログインにを使用できなくなります。RSAトークンは1分に1回変更されるため、SSHパスワードを保存できません。さらに悪いことに、RSAトークンは1分あたり1回のSVN操作に削減されます。これは、特に複数のSVN操作を連鎖させるスクリプトがあるため、まったく受け入れられません。

ポートフォワーディングでSSHトンネルを開くことで妥協を試みました。を使用してトンネルを開き、ローカルマシン上のすべてのSVN要求を、プロセスが実行さssh user@hostmachine -L 3690:localhost:3690れている安全なマシンに転送します。svnserveこれは、2要素認証でログインしてから、ユーティリティで個別のSVNユーザー名とパスワード(保存可能)を使用できることを意味します。

残念ながら、トンネルは必要ないことに気づきました。ポート3690は、ホスト名が表示されているすべてのコンピューターで使用可能でした。これはITには受け入れられず、システム管理者はそれsvnserveが問題であると考えているため、に戻る必要があるかどうか疑問に思っていsvn+sshます。

うまくいく解決策はありますか?私たちのシステム管理者は正しいですか?svnserveローカルホストからのトラフィックのみをリッスンするように強制するオプションはありますか?

4

2 に答える 2

2

使用する:

svnserve -dr /my/repo --listen-host 127.0.0.1

このように、サービスはループバックインターフェイスでのみリッスンします。sshを使用して接続する場合:

ssh -L3690:127.0.0.1:3690 user@svnserver.mycompany.com

も参照してください:

vince@f12 ~ > svnserve --help
usage: svnserve [-d | -i | -t | -X] [options]

Valid options:
  -d [--daemon]            : daemon mode
  -i [--inetd]             : inetd mode
  -t [--tunnel]            : tunnel mode
  -X [--listen-once]       : listen-once mode (useful for debugging)
  -r [--root] ARG          : root of directory to serve
  -R [--read-only]         : force read only, overriding repository config file
  --config-file ARG        : read configuration from file ARG
  --listen-port ARG        : listen port
                             [mode: daemon, listen-once]
  --listen-host ARG        : listen hostname or IP address
                             [mode: daemon, listen-once]
  -T [--threads]           : use threads instead of fork [mode: daemon]
  --foreground             : run in foreground (useful for debugging)
                             [mode: daemon]
  --log-file ARG           : svnserve log file
  --pid-file ARG           : write server process ID to file ARG
                             [mode: daemon, listen-once]
  --tunnel-user ARG        : tunnel username (default is current uid's name)
                             [mode: tunnel]
  -h [--help]              : display this help
  --version                : show program version information
于 2012-04-06T21:28:35.777 に答える
0

svnserveにはローカルホストでのみリッスンするオプションがあるかもしれませんが、これはファイアウォール構成の問題のように聞こえます。

ポート3690が外部からアクセスできるようになっていない場合は、ファイアウォールでブロックする必要があります。svnserveまたは他の何かがそのポートでリッスンしているかどうかは関係ありません。その後、svnserveは3690でリッスンを継続できますが、他のユーザーがファイアウォールによってブロックされているため、ローカルホストからの接続のみを受信します。

于 2012-04-05T21:29:26.147 に答える