web-dev-qa-db-ja.com

SSH Raspberry Piのセキュリティ

Raspberry PiにSSHサーバーをセットアップしました。 RSAキーを使用してログインし、rootログインとパスワード認証を無効にし、ポート転送を使用してネットワークの外部からログインします。

/var/log/auth.logファイルから接続ログを確認できますが、定期的に(数日と思いますが)クリアされ、標準ユーザーが変更できることに気付きました。

これはセキュリティ上の問題ではありませんか?それに侵入した管理者がログをクリアして痕跡を残さない可能性があります。これを防ぐことはできますか?

5
Matteo

Rootとしてlogrotateを毎日実行するcronジョブがあり、/etc/logrotate.conf/etc/logrotate.d/*で設定を確認できます。変更を行う場合は、/usr/sbin/logrotate -dv /etc/logrotate.confを実行して、新しい構成にエラーがないことを確認してください。

auth.logに加えて、wtmpbtmpをローテーションして保持する必要があります(2番目は失敗したログイン試行を追跡します)。ほとんどのシステムは、これらのローテーションを1つだけ保持します。

通常の設定では、/var/log/はWordで書き込み可能ではなく、その中のログファイルも誰もが書き込み可能ではなく、時には誰もが読み取れません(後者はauth.logのようなファイルでは後者 誤ってパスワードを含む ユーザー名フィールドに入力 CWE-532 )。

ファイルの権限が期待どおりであることを確認する必要があります。新しいログファイルを作成し、正しい所有者/権限を設定するのはlogrotateの仕事です(createディレクティブを参照)。ただし、デフォルトでは、現在のファイルの権限と所有権が適用されます。所有者/権限が一度変更されると、それらはそのログファイルのすべての新しいインスタンスで維持されます(そのため、以前のミスが戻ってくる可能性があります)。

通常のユーザーはこれらのファイルに書き込みまたは直接変更することはできませんが、ローカルユーザーはおそらくsyslogを介してそれらにファイルに追加間接的にできます。

logger -p auth.info -it sshd \
  "Accepted password for root from Host.badguys.com port 31337 ssh2"

(ネットワーク経由でUDP経由でSyslogメッセージを受け入れると状況は悪化しますが、通常、正常な構成ではデフォルトで有効になっていません。)これは CWE-117 の例であり、 syslogに関する問題の数。

攻撃者(または信頼できないユーザー)がログインを取得した場合、実際にデータを上書きまたは削除するには、別の方法を使用する必要があります。特権の昇格、またはsetuid/setgidプログラムの創造的な使用。

しかし、ここにはサービス拒否型の攻撃の機会があります。 sshdに何らかのレート制限やロックアウトがない場合、攻撃者は接続ログでログをフラッディングできる可能性があります(侵入した場合、攻撃者は偽造で自分のトラックをカバーできる可能性があります)エントリ)。 logrotateがサイズベースのローテーションを使用している場合(デフォルトではありません)、追加の権限なしで、存在しないエントリをローテーションできる場合があります。時間ベースのローテーションを使用する場合、彼はあなたがロギングしているファイルシステムを簡単にいっぱいにして、それ以上のイベントがログに記録されるのを防ぐことができるかもしれません。

要約すると:

  • ログファイルのアクセス許可が間違っている場合、はい、攻撃者はわかりにくいログファイルエントリを削除する可能性があります(攻撃者が他のローカル権限昇格を利用できる場合は、もちろんこれを行うことができますが、より大きな問題が発生します)
  • ログファイルの権限が満足のいくものであることを確認する必要があります。世界的に書き込み可能ではなく、おそらく世界的に読み取り可能ではありません—ほとんどの構成はlogrotate.confに偏執狂的な権限をハードコードしていません
  • 標準のsyslogには、信頼性、整合性、レート制限など、多くの問題があります。
  • /etc/hosts.allowを使用して、sshdアクセスのリモートIPブロックをホワイトリストに登録することを検討してください。可能であれば、それは合理的な緩和策です。
  • ある種の動的ブロッキングを使用する必要があります(Piでは Micro Fail2Ban を見る場合があります)

攻撃者がログファイルに対して実行できることを制限する最良の方法の1つは、安全なネットワークを介して別のシステムにログファイルを記録することです。その他の可能な解決策には、OSによって強制される追加専用ファイルが含まれます(UNIXとLinux.SEでは thisを参照 を参照)、これは改ざん防止

Rsyslogメンテナーのブログで * nixロギングの改善 について読むこともできます。そこで説明されている機能の1つは linked-timestamping で、これはtamper-evidentです。

5
mr.spuratic