質問
SSH公開鍵認証とnftables設定を使用してSSH試行を記録する最良の方法は何ですか?また、これをテストする最良の方法は何ですか?
これは私にとって学習練習なので、「ただ処理」パッケージをインストールせずにこれを実行したいと思います。
説明する
ネットワーキングの概念をテストして学ぶために、かなり空の新しいシステムをセットアップしました。システムはArch Linuxを実行します。 nftablesが実行されており、SSH公開鍵認証を使用してシステムにログインできます。テストシステムでもsshd.socketが役に立つので、これを使用してください。
ただし、nftableルールの1つが期待どおりにログアウトされていないようです。
log prefix "REJECTED" reject with icmpx type port-unreachable
このルールはnftables.confの入力チェーンの一番下にあるため、拒否されたすべての入力トラフィックはこのルールに従う必要があります(私の考えでは)。
私のテストは間違っているかもしれませんが、実行してみると、journalctl -k | grep "REJECTED"
他のコンピュータを介してログインしようとした後に何も表示されません。ただし、正しいキーを持つ別のコンピュータが1分以内に複数回ログインしようとすると、エントリが表示されます。
また、このnftableルール(上記の拒否ルールの上にある)を使用して成功したSSHログインを表示できることに注意してください。
tcp dport ssh limit rate 2/minute log prefix "SSH connection" accept
実行すると、journalctl -k | grep "SSH"
期待どおりにこれらの接続が表示されます。
ベストアンサー1
どのTCP接続がログインに失敗したのか、どのようにログインに失敗したのかは、ネットワーク層(またはログ)では確認できません。 SSHデーモンは、ログインが失敗するタイミングを決定し、それを記録した後に再試行を許可するか、接続を閉じます(通常、特定の回数の試行失敗後)。
失敗したログイン試行は認証ログインに保存されます/var/log/auth.log
。ここでは、失敗したログインと成功したログインのログエントリを見つけることができます。
ネットワーク層では、SSHデーモンへの新しい接続を記録できます。次の例は、nftablesから直接インポートしたものです。Wiki ドキュメント:
tcp dport 22 ct state new log prefix \"New SSH connection: \" accept