Node.jsで作成したアプリケーションを外部サーバに配置して運用する際のセキュリティ設定となります。
Node.jsのアービトラージツールを想定しており、Webアプリケーションの場合は別途Webアプリケーション専用のセキュリティ設定が必要となります。
サーバはCentOS7、アプリケーションはNode.js、データベースはMongoDBを前提にご説明します。
Contents
セキュリティ対策リスト
・セキュリティ設定の前に(一番大事なこと)
・サーバセキュリティ設定
・Node.jsアプリケーションセキュリティ設定
・データベースセキュリティ設定
セキュリティ設定の前に(一番大事なこと)
重要なデータの取り扱い
セキュリティ設定の前に気をつけたいこととして、重要なデータの取り扱いには気をつけましょう。
盗まれて困るデータがない状態が最善のセキュリティ対策となります。
個人情報(名前、電話番号、メールアドレスなど)やログイン情報(ユーザID、パスワード)はファイル、データベース問わず、サーバに極力配置しないことが重要です。
アービトラージツールの場合は暗号資産取引所のAPI認証情報をサーバに配置する必要がありますが、最低限必要な権限のみになっていることを確認しておきましょう。
送金権限もつけるとリスクが高くなるので、買いと売りの取引権限、自分の資産情報にアクセスできる権限だけが望ましいです。
また、ログイン情報を配置する必要がある場合は、普段使用しているパスワードを配置することがないように注意が必要です。
セキュリティ対策は時間がかかるので、重要な情報が少なければその分セキュリティにかける労力を削ることができます。
セキュリティ意識を持とう(一回設定して終わりじゃないよ)
また、ここではセキュリティ設定を説明しますが、セキュリティに対する攻撃は日に日に進歩しており、セキュリティの性質上一回設定したら終わりというものではないので、定期的に見直すようにしましょう。
Node.js(Node.js本体や利用しているライブラリ等)やシステムのバージョンは定期的に最新の安定板を利用するように心がけてください。
サーバセキュリティ設定
サーバセキュリティ(ここではCentOS7)については、サーバに不正アクセスされないことが重要です。
不正アクセスされるとサーバを利用して別の攻撃に使用されてしまったり、重要な情報が盗まれる原因となります。
具体的にはrootで作業しない(権限がrootより弱い一般ユーザを利用して作業する)、firewalldで不要なポートを塞ぐ、SSHでアクセスする必要があります。
ポートについては例えばhttpだと80、httpsだと443のように決まっていて通信を行う際に必要な設定値となります。(変更もできます)
httpやhttps通信を行わないのであればfirewalld設定で80、443の通信を無効にすることができます。
また、サーバを操作する際に自分のパソコンからサーバにアクセスが必要となりますが、その際SSH通信を利用することでやりとりしている通信が暗号化されて安全になります。
Node.jsアプリケーション
Webアプリケーションを公開するには難易度がグッとあがりますが、アービトラージツールだけであればセキュリティ対策の優先度は高くありません。
前述していますが、Node.js(Node.js本体や利用しているライブラリ等)のバージョンを定期的に最新の安定版にすること、不要なパスワード等のファイルは配置しないようにします。
データベース
データベース(ここではMongoDB)についても、不正アクセスに気をつける必要があります。
デフォルトのMongoDBの設定はセキュリティ的には弱いので、対策は必須となります。
最低限、最新の安定版バージョンを利用すること、ポート番号の変更は簡単にできるので行っておきましょう。
また、権限設定はやや癖がありますが、MongoDB操作になれてきたら早期に入れておきたいセキュリティ設定となります。
さいごに。セキュリティスキルは必須スキル
ここまでがセキュリティ設定のプロセスとなります。
慣れないうちは一つ一つ設定していくのは大変な作業となりますが、上にあげたどの作業も基本的なことで他でも利用シーンはよくでてくる必須スキルです。
ぜひ、モノにしてくださいね。
コメントを残す