WEBサービスを複数で開発する場合のサーバーで、セキュリティなどを考慮して、いかに便利に開発できるかを考えてみた。
普通の設定と問題点
サーバーに対して、apache権限を付与したユーザーアカウントに対して、sshでパスワードを入力して、ターミナルやsftpでアクセスすることができる。
問題点としては、ターミナルでアクセスする時に、ユーザーアカウントが1つだと、コマンド履歴が1つにまとまってしまい、使用ログが綺麗にならない。
また、ユーザーを人数分アカウント作成することも可能だが、運用ルールでの定期パスワード変更などが、かなり大変な作業になる。
※使用ユーザーがパスワード変更する事も可能だが、サーバー台数が多いサービスだと、かなり大変になることが容易に想像できる。
解決法
パスワード運用は、定期変更などの作業が発生するため、単純に工数を要する。
会社などであれば、開発者に対してPCが固定化されているので、あれば、クライアントの鍵運用が望ましいと判断しました。
もし、会社がフリーアドレスを採用していて、使用するPCも、全員共通で、毎日使うPCが変わるようなタイプの場合は、鍵運用は望ましくない。
フリーアドレスの場合、windowsでActiveDirectoryを利用した、ドメインコントローラセキュリティの場合は、非常に鍵運用が難しい。
この場合は、パスワード運用で、もう少し効率化できる方法を考えよう。
実際の設定
1.公開鍵と秘密鍵の作成は、下記ブログを参考にしてセットしよう。(人数分)
サーバーのよく使うコマンドメモ| ssh-keygen
クライアント端末1つにつき、公開鍵と秘密鍵の2つを作って、サーバー管理者で一括管理すると、運用は楽になるかも。(秘密鍵は、個別管理でもいいが)
2.対象サーバーに人数分のアカウントを作成(10人いたら10アカウント作成)
# centOSの場合は www-data -> apache
$ useradd -g www-data user-1
3.ユーザーアカウントの権限をapacheに合わせる
# viエディタでパスワード管理ファイルを開く
$ vi /etc/passwd
apache:x:48:48:www-data:/var/www:/sbin/nologin
test:x:501:48::/home/test:/bin/bash
hoge:x:502:48::/home/hoge:/bin/bash
apache:x:48:48:www-data:/var/www:/sbin/nologin
test:x:48:48::/home/test:/bin/bash
hoge:x:48:48::/home/hoge:/bin/bash
全てのユーザーの権限を「apache」にすることで、ファイルの権限を奪い合うことが無くなる。
さらにセキュアにするために
・ユーザー毎の操作ログを記録するために、historyログをfluentdを使って、一元管理する。
※基本的に削除することのないようにする。
問題点
サーバーの台数分に対して、上記の作業が発生するので、初回時の設定と、ユーザーが作業ローテーションするタイミングでの設定は、かなりの時間を要することになる。
でも、基本的に、パスワード運用と違い、一度セットしておくと、ユーザー側もパスワードを意識することがないし、端末での認証を固定化できるので、日々の作業は効率化するはずだ。
この作業の自動化バッチでも作成しておけば、再設定時などもかなりの効率化になる予定。
0 件のコメント:
コメントを投稿