特定のユーザーアカウントのsyslogおよびwtmpへのSUDOおよびSSHログインの過度のロギングを停止します。

特定のユーザーアカウントのsyslogおよびwtmpへのSUDOおよびSSHログインの過度のロギングを停止します。

通常のユーザーアカウントを使用してログインする監視サーバー(「ClusterControl」)があります。「対話型シェル」sudo メンテナンスコマンドを実行します。

このアカウントは、SSHキー(パスワードなし)を介して毎分4回ログインしているようです。

、何千ものログインとsudoエントリで/var/log/wtmpいっぱいです。/var/log/auth.log/var/log/syslog

3つの問題が発生します。

  1. さまざまなフィルタでログインエントリをマスクしないと、システムログ監査が利用できないため失敗します/var/log/sysloggrep

  2. システムディスク容量が不足しています。これらのファイルの/var/log/wtmpサイズは/var/log/auth.log急速に/var/log/syslog非常に大きくなり、深刻な記憶領域の問題を引き起こす可能性があります。

  3. lastサービスアカウントのユーザー名が何千回も記録され、表示され、他のアカウントログインが表示されず、サービスが利用できなくなったため、アカウント監査コマンドで事実上サービス拒否が発生しました。

質問

このユーザーアカウントが記録されないようにするにはどうすればよいですか?

systemd [success=ok default=1] pam_succeed_if.so user in usernamePSいくつかの記事の指示に従って、フォルダ内のさまざまなpamファイルにPAMエントリを追加しようとしましたが、うまくいきませ/etc/pam.dんでした。

どのファイルを使用するのか、正しい構文が何であるかはわかりません。

/var/log/syslog"systemd"によって記録されたSSHユーザー名ログインがログ行の先頭に表示されます。

サーバーはUbuntu 18.04です

編集する

ClusterControl は以下を実行します。インタラクティブシェルssh -t会社のシステムサポートエンジニアの1人がブログ投稿で説明したように、ログインを使用するときここ。しかし、彼らの推奨事項は、単に対数回転をより頻繁に有効にすることです。

ベストアンサー1

2つのオプションがあります。

長い話を短く

1. システムログフィルタ

使用システムログ フィルターこれまでの最速のソリューションですが、次のものを使用するほど包括的ではありません。ポリアクリルアミド

あなたの上システムログデフォルトのconfファイルにフィルタリングしたいキーワードとフィルタコマンドを追加します。この場合、フィルタコマンドはdelete( ' ~')です。

$ vi /etc/rsyslog.d/50-default.conf
:msg, contains, "clustercontrol" ~
:msg, contains, "pam_unix(sudo:session): session closed for user root" ~
:msg, contains, "Removed session" ~

2. ログファイルの管理

syslog毎日何千ものログがログインしてログアウトするのを防ぎましたが、サービスアカウントのSSHログインがClusterControlとファイルauth.logに書き込まれるのを止める方法はないようです。/var/log/wtmp/var/log/lastlog

そのためにログの回転(下記参照)。

ログの回転

最後のログ+ wtmp

グローバル設定noupdatenowtmpディレクティブもpam_lastlog.soシステムに影響を与えないため、以下のlogrotate構成を使用して定期的にこれらのログを圧縮して回転させる必要があります。

次の構成は、毎月または200 Mbごとにログを循環します(どちらの最初に到着するか)。ログは圧縮され、最大12ヶ月間保存されます。

$ vi /etc/logrotate.conf
# no packages own wtmp, or btmp -- we'll rotate them here
/var/log/wtmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 12
    size 200M
    compress
}

/var/log/btmp {
    missingok
    monthly
    create 0660 root utmp
    rotate 12
    size 200M
    compress
}

PAMの使用

デバッグ

何が起こっているのかを理解する最初のステップは、デバッグメッセージを有効にすることです。問題は、Ubuntu 18.04でpamデバッグメッセージが記録されないことです。明らかに言うシステムログデバッグメッセージの記録に使用するファイルは次のとおりです。

$ vi /etc/rsyslog.d/50-default.conf
*.debug           /var/log/debug.log

$ service rsyslog restart

pam_succeed_if.so

これは、pam を使用して条件付きテストを作成するために使用する pam モジュールです。文書は少し不完全で乾燥しており、ルールがどのように機能するか、およびすべてのディレクティブの機能について詳しく説明していません。数十の記事を読んだ後、次のようにまとめました。

誰が記録しているかを調べる

内部には、/var/log/auth.logこのユーザーアカウントに対して停止したいログメッセージが表示されます。

3月17日 13:05:27 dev1 sshd[18833]: pam_unix(sshd:session): ユーザークラスタ制御のためにセッションが開かれる (uid=0)

3月17日 13:04:25 dev1 sudo: pam_unix(sudo:session): Clustercontrol(uid=0) root ユーザーのセッションを開く

上記のログでは、私たちは見ることができますpam_unix.soロギングを実行する pam 認証モジュールです。 2つの別々のサービスによって呼び出されます。SSHDそしてSudo

パムタイプタグこのモジュールで使用する認証の種類をPamに教えてください。この場合、会議これは、ユーザーが認証前および/または認証後に実行する必要がある操作です。

責任あるPAMの設定

pam_unix.soそれでは、システム構成でこれらのログを担当するpamモジュールを見つけてみましょう。

$ cd /etc/pam.d

$ grep 'pam_unix.so' * -in
common-account:17:account       [success=1 new_authtok_reqd=done default=ignore]        pam_unix.so 
common-auth:17:auth     [success=1 default=ignore]      pam_unix.so nullok_secure
common-password:25:password     [success=1 default=ignore]      pam_unix.so obscure sha512
common-session:29:session       required        pam_unix.so 
common-session-noninteractive:30:session        required        pam_unix.so 
runuser:5:session               required        pam_unix.so

上から見ると、 ':session' モジュールがpam_unix.soオンラインファイルにあることがわかります。common-session#29

重要
  1. 線を探す/etc/pam.d/SSHDファイルを含め、common-sessionカスタムpam_succeed_if.soステートメントを追加します。今後それ。

  2. 今やるほぼまったく同じ/etc/pam.d/Sudoファイルですが、ここではカスタムルールの構文が少し異なります。

カスタムPAMルール

順序が重要です

pam_unix.soファイルからルールを実行する前にモジュールルールを@include common-session配置します。pam_succeed.so

SSHDルール

$ grep -in include /etc/pam.d/sshd
5:@include common-auth
15:@include common-account
29:@include common-session
32:# This includes a dynamically generated part from /run/motd.dynamic
56:@include common-password

29号線私たちの場合。

$ vi /etc/pam.d/sshd +29
session [success=done default=ignore] pam_succeed_if.so quiet service in sshd user = clustercontrol
# Standard Un*x session setup and teardown.
@include common-session

ルールを後ろから前方に読むと簡単です。

ユーザーの名前が指定されていることを確認してください。クラスター制御user = clustercontrol)確認済みSSHD()このルールは一致し、ロギングを引き起こすservice in sshdコマンド()を実行します。quiet静かな

この部分は、[success=done このルールに一致するものがある場合は、done次のルール処理をスキップまたはスキップします。次へPamスタックのルール。

これにより、そのユーザーのsshdロギングが効果的に停止されます。

sudo ルール

これを行うには、次の行を追加しました。#6到着/etc/pam.d/sudo:

$ vi /etc/pam.d/sudo
:set number 

  1 #%PAM-1.0
  2 
  3 session    required   pam_env.so readenv=1 user_readenv=0
  4 session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
  5 
  6 session [success=done default=ignore] pam_succeed_if.so quiet uid = 0 ruser = clustercontrol
  7 @include common-auth
  8 @include common-account
  9 @include common-session-noninteractive

セッション[成功=完了デフォルト=無視] pam_succeed_if.so Quiet uid=0 ruser=clustercontrol

ここで構文は若干異なります。 sudo は通常コマンドを実行します。ユーザー(特別な指示で別段の指定がない限り)Unixシリーズシステムでユーザー0

したがって、私たちのカスタムルールは次のとおりです。Sudoコマンドはuid 0(ルーター)、私たちの場合クラスター制御、それでは静かなロギングを通じて、完璧したがって、このタイプのユーザーの追加ルールはスキップされます。会議確認してください。

気づく
コメントを書くのを忘れないでください*。デバッグライン入力/etc/rsyslog.d/50-default.conf再起動サービスを使用してください$ service rsyslog restart

おすすめ記事