일반 사용자 계정을 사용하여 로그인하는 모니터링 서버("ClusterControl")가 있습니다."대화형 쉘"sudo 유지 관리 명령을 실행하세요.
해당 계정은 SSH 키(비밀번호 없음)를 통해 분당 4회 로그인하는 것으로 보입니다.
, 수천 개의 로그인 및 sudo 항목 으로 /var/log/wtmp
채워져 있습니다 ./var/log/auth.log
/var/log/syslog
세 가지 문제가 발생합니다.
다양한 필터를 통해 로그인 항목을 마스킹하지 않으면 시스템 로그 감사를 사용할 수 없기 때문에 실패합니다
/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 사용자 이름 로그인이 로그 줄 시작 부분에 표시됩니다.
서버는 우분투 18.04 입니다
편집하다
ClusterControl은 다음을 실행합니다.대화형 쉘ssh -t
회사의 시스템 지원 엔지니어 중 한 명이 블로그 게시물에서 설명했듯이 로그인 사용 시여기. 그러나 그들의 권장 사항은 단순히 로그 회전을 더 자주 활성화하는 것입니다.
답변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 구성을 사용하여 정기적으로 이러한 로그를 압축하고 회전해야 합니다.
다음 구성은 매월 또는 200Mb마다 로그를 순환합니다(둘 중 먼저 도래하는 기준). 로그는 압축되어 최대 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) 루트 사용자에 대한 세션 열기
위의 로그에서 우리는 볼 수 있습니다pam_unix.so로깅을 수행하는 pam 인증 모듈입니다. 두 개의 별도 서비스에 의해 호출됩니다.SSHD그리고스도.
팸유형 태그이 모듈에 사용할 인증 유형을 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/스도파일이지만 여기에서는 사용자 정의 규칙 구문이 약간 다릅니다.
사용자 정의 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는 일반적으로 명령을 실행합니다.뿌리사용자(특별 지침에 의해 달리 지정되지 않는 한) 유닉스 계열 시스템에서사용자 0.
따라서 우리의 맞춤 규칙은 다음과 같습니다.스도명령은 uid 0(루터), 우리의 경우에는클러스터 제어, 그럼 그렇지조용한로깅을 통해 우리는완벽한따라서 이 유형의 사용자에 대한 추가 규칙은 건너뜁니다.회의확인하다.
알아채다
댓글을 작성하는 것을 잊지 마세요 *. 디버그라인 입력/etc/rsyslog.d/50-default.conf재시작 서비스를 사용하십시오 $ service rsyslog restart
.