通常のユーザーアカウントを使用してログインする監視サーバー(「ClusterControl」)があります。「対話型シェル」sudo メンテナンスコマンドを実行します。
このアカウントは、SSHキー(パスワードなし)を介して毎分4回ログインしているようです。
、何千ものログインとsudoエントリで/var/log/wtmp
いっぱいです。/var/log/auth.log
/var/log/syslog
3つの問題が発生します。
さまざまなフィルタでログインエントリをマスクしないと、システムログ監査が利用できないため失敗します
/var/log/syslog
。grep
システムディスク容量が不足しています。これらのファイルの
/var/log/wtmp
サイズは/var/log/auth.log
急速に/var/log/syslog
非常に大きくなり、深刻な記憶領域の問題を引き起こす可能性があります。last
サービスアカウントのユーザー名が何千回も記録され、表示され、他のアカウントログインが表示されず、サービスが利用できなくなったため、アカウント監査コマンドで事実上サービス拒否が発生しました。
質問
このユーザーアカウントが記録されないようにするにはどうすればよいですか?
systemd [success=ok default=1] pam_succeed_if.so user in username
PSいくつかの記事の指示に従って、フォルダ内のさまざまな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
グローバル設定noupdate
やnowtmp
ディレクティブも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。
重要
線を探す/etc/pam.d/SSHDファイルを含め、
common-session
カスタムpam_succeed_if.so
ステートメントを追加します。今後それ。今やるほぼまったく同じ/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
。