su/sudoed를 사용하여 루트의 원래 사용자 이름에 대한 모든 루트 활동을 기록합니다.

su/sudoed를 사용하여 루트의 원래 사용자 이름에 대한 모든 루트 활동을 기록합니다.

sudo -i루트 로그인(SSH)이 비활성화되어 있지만 사용자가 루트를 실행하거나 su -루트가 될 수 있는 경우 로그에서 누가 루트 역할을 하는지 추적하는 데 선호되는 방법은 무엇입니까? 또한 원래 사용자 이름을 사용하여 각 명령을 실행하고 싶습니다. RHEL 6 또는 Linux rsyslog 등

답변1

가장 강력한 접근 방식이 감사되는 것 같습니다.

요구 사항 10: 네트워크 리소스 및 카드 소지자 데이터에 대한 모든 액세스를 추적하고 모니터링합니다.

Auditd는 기본적으로 모든 시스템 호출을 가로채서 규칙 세트와 비교하여 확인합니다. 따라서 파일에는 /etc/audit/audit.rules다음과 같은 내용이 있습니다.

# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.

# First rule - delete all
-D

# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320

# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION

마지막 규칙은 기본값이 아닌 유일한 규칙입니다.

이 접근 방식의 가장 큰 단점(그리고 대안을 찾는 동안 이 질문을 찾은 이유)은 원시 로그 파일이 매우 비밀스럽고 원시 로그 파일에서 쿼리 프로그램을 실행한 후에만 유용하다는 것입니다.ausearch

이 규칙에 대한 예시 쿼리는 다음과 같습니다.

ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f

상식적인 해결책은 원시 감사 로그를 쿼리한 다음 이를 로깅 솔루션으로 보내는 cron을 만드는 것입니다.

답변2

Red Hat 배포판에서는 일반적으로 로그를 사용하여 Fedora/CentOS/RHEL 시스템에 /var/log/secure로그인하거나 사용하는 사람을 식별합니다 .sudo

sudo 예
$ sudo -Es

결과 기록:

9월 1일 19:32:51 greeneggs sudo: TTY=pts/2; PWD=/home/saml; command=/bin/bash

수의 예
$ su -

결과 기록:

9월 1일 19:34:49 greeneggs su: pam_unix(su-l:session): saml(uid=1000) 루트 사용자를 위한 세션이 열렸습니다.

답변3

협력하는 사용자가 있는 경우 루트 사용자가 입력하는 모든 내용을 시스템 로그에 기록하도록 rootsh를 설정할 수 있습니다.

http://linux.die.net/man/1/rootsh

rootsh rpm은 EPEL에서 사용할 수 있습니다.

RHEL6의 sudo 버전에는 각 sudo 세션의 stdout을 파일에 기록하는 기능도 있습니다. sudo_plugins 매뉴얼 페이지를 확인하세요.

이러한 방법 중 어느 것도 완전히 무적은 아닙니다.

관련 정보