WEB開発の為のサーバー権限設定

2015年4月12日

サーバー

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を使って、一元管理する。 ※基本的に削除することのないようにする。

問題点

サーバーの台数分に対して、上記の作業が発生するので、初回時の設定と、ユーザーが作業ローテーションするタイミングでの設定は、かなりの時間を要することになる。 でも、基本的に、パスワード運用と違い、一度セットしておくと、ユーザー側もパスワードを意識することがないし、端末での認証を固定化できるので、日々の作業は効率化するはずだ。 この作業の自動化バッチでも作成しておけば、再設定時などもかなりの効率化になる予定。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。