Raspberry PiにSSHサーバーをセットアップしました。 RSAキーを使用してログインし、rootログインとパスワード認証を無効にし、ポート転送を使用してネットワークの外部からログインします。
/var/log/auth.logファイルから接続ログを確認できますが、定期的に(数日と思いますが)クリアされ、標準ユーザーが変更できることに気付きました。
これはセキュリティ上の問題ではありませんか?それに侵入した管理者がログをクリアして痕跡を残さない可能性があります。これを防ぐことはできますか?
Rootとしてlogrotate
を毎日実行するcronジョブがあり、/etc/logrotate.conf
と/etc/logrotate.d/*
で設定を確認できます。変更を行う場合は、/usr/sbin/logrotate -dv /etc/logrotate.conf
を実行して、新しい構成にエラーがないことを確認してください。
auth.log
に加えて、wtmp
とbtmp
をローテーションして保持する必要があります(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
に偏執狂的な権限をハードコードしていません/etc/hosts.allow
を使用して、sshdアクセスのリモートIPブロックをホワイトリストに登録することを検討してください。可能であれば、それは合理的な緩和策です。攻撃者がログファイルに対して実行できることを制限する最良の方法の1つは、安全なネットワークを介して別のシステムにログファイルを記録することです。その他の可能な解決策には、OSによって強制される追加専用ファイルが含まれます(UNIXとLinux.SEでは thisを参照 を参照)、これは改ざん防止。
Rsyslogメンテナーのブログで * nixロギングの改善 について読むこともできます。そこで説明されている機能の1つは linked-timestamping で、これはtamper-evidentです。