Ubuntuを新しくインストールしたとしましょう。Railsアプリケーションサーバーとして使用するためにセキュリティで保護するには、どのような手順を踏む必要がありますか?
Ubuntu固有の微調整は考えられませんが、すべてのディストリビューションに当てはまるものをいくつか次に示します。
もちろん、このリストは完全なものではなく、完全に安全になることは決してありませんが、実際にはすべてのエクスプロイト[〜#〜] i [〜#〜]が見られます。
また、私が見たエクスプロイトは、ほとんどの場合、安全でない構成ではなく、安全でないユーザーコードに関連しています。最小限のサーバー構成でのデフォルト構成はかなり安全な傾向があります。
私が早い段階で行う1つの簡単なことは、インストール DenyHosts です。定期的に/ var/log/secureを調べ、失敗したログインを探し、2、3回失敗した後、IPをブロックします。最初のno-such-userの後、2回目のrootでの試行時、および実際のユーザーを数回試行した後にブロックするように設定しました(失敗した場合でも、SSH公開鍵を使用してログインする必要があります)。
UbuntuはDebianをベースにしており、 Securing Debian Manual は、Debianベースのディストリビューションで、システム全体を調べ、すべての部分をチェックするのに非常に役立つことがわかりました。それは基本的にあなたの質問に対する本当に、本当に包括的な答えです。
私は通常、ルートキットをスキャンしてさまざまな重要なシステムバイナリの整合性チェックを行うRKHunterをインストールします。これは標準のリポジトリにあり、cronから毎日実行されます。これは完璧ではなく、セキュリティ面でも優れていますが、追加する手間が少なく、保護手段を提供します。
Logcheckをインストールしますが、通常のイベントからメッセージを受信しないように調整してください。そうしないと、電子メールを無視する癖が付きます。
Netstatを使用してリッスンしているプロセスを確認し、実行する必要のないものが実行中でないことを確認します。多くのデーモンは、すべてのインターフェースではなく、内部IP(またはlocalhost)でのみリッスンするように構成できます。
Canが提案することを行う...
ホストをNmapし、すべての重要でないサービスを無効にします。必要に応じてiptablesを使用します。
/tmp
や/var
などのさまざまなディレクトリに個別のパーティションを使用し、可能であればnosuid
、nodev
およびnoexec
を使用してそれらをマウントします。
サーバーのあるインターネットの近くに行く場合は、snortなどの侵入検知システムをインストールします。
ファイアウォールの使い方と、ボックスを適切にロックする概念を学びます。デフォルトのポートを変更することは、ほとんど役に立たないことです。適切なアプリケーションとファイアウォールの構成がはるかに重要です。
どちらもUbuntuリポジトリにあります。
すばらしいドキュメントがあり、構文を学ぶのが非常に簡単です。ゲートウェイ/ファイアウォールを20分でセットアップできました。私がこれから離れた唯一の理由は、それが維持されていないように見えることです(2年前の最後のリリース)。機能しないという意味ではありませんが...
別のものです。 iptablesに似た構文ですが、概念は同じです。 FireHOLよりも多くのコミュニティが維持されていますが、ピックアップに時間がかかります。
私が現在使用しているものです。そのドキュメントは豊富で、その構成フォーマットは表形式です。ファイアウォール/ゲートウェイ構成を実行するために必要なすべてのファイル(6)を理解するのに、約1時間半かかりました。それは非常に強力です。ヒント:さまざまな設定ファイルのmanページは本当に役に立ちます!
これらはすべて、構成ファイルからファイアウォール構成を読み込みます。非常に効果的で、iptablesよりもすぐに使いやすく、(私の意見では)ufwよりも使いやすく、管理が簡単です。
次に、SSHキーの使用に関する推奨事項を示します。
IDSをセットアップします。
AppArmorについて学んでください。実行可能ファイルのファイルアクセスを、指定したディレクトリと必要なファイルのみに制限します。 RHELの世界のSELinuxに似ています。多くのよく使われているプログラム用に事前設定された「プロファイル」をインストールして有効にします。
ここで他の提案と同様に、私は明白であるが完全性のために言及する価値がある3つに言及します。