OS 누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!
페이지 정보
작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 446회 좋아요 0회 작성일 24-09-25 00:40본문
안녕하세요~
오늘은 OS 감시 모니터링 데몬 auditd 에 대해 알아보겠습니다.
시스템 관리자는 audit 를 사용하여 시스템에서 보안 위반을 발견하고 보안 관련 정보를 추적합니다.
감사 데몬(auditd)은 사전 구성된 규칙과 속성을 기반으로 로그 항목을 생성하여 시스템에서 발생하는 이벤트에 대한 정보를 기록합니다. 관리자는 이 정보를 사용하여 보안 정책에 무엇이 잘못되었는지 분석하고 추가 조치를 취하여 보안 정책을 더욱 개선합니다.
==> 사실 auditd 에는 아래와 같이 여러 가지 기능이 있습니다. 오늘은 아래 설명중에 "1. 파일 액세스감시"에 대해 알아보려 합니다. 그이유는 보통 운영서버에는 각 담당자별
User를 생성해서 사용하기도 하지만, root를 공용으로 사용하기도 합니다. 하지만 누가 파일을 수정하게 되면 알수가 없습니다. 이럴때 보통 auditd을 설치하여 감시를 하게됩니다.
> auditd 사용 예
1) 파일 액세스 감시
감사는 파일 또는 디렉터리가 액세스, 수정, 실행 또는 파일의 속성이 변경되었는지 여부를 추적할 수 있습니다. 예를 들어 중요한 파일에 대한 액세스를 감지하고 이러한 파일 중 하나가 손상된 경우 감사 추적을 사용할 수 있도록 하는 것이 유용합니다.
2) 시스템 호출 모니터링
특정 시스템 호출을 사용할 때마다 로그 항목을 생성하도록 감사를 구성할 수 있습니다. 예를 들어 settimeofday,clock_adjtime 및 기타 시간 관련 시스템 호출을 모니터링하여 시스템 시간을 추적하는 데 사용할 수 있습니다.
3) 사용자가 실행한 명령 레코딩
감사는 파일이 실행되었는지 여부를 추적할 수 있으므로 특정 명령의 모든 실행을 기록하도록 규칙을 정의할 수 있습니다. 예를 들어 /bin 디렉터리의 모든 실행 파일에 대해 규칙을 정의할 수 있습니다. 그런 다음 사용자 ID로 생성된 로그 항목을 검색하여 사용자별로 실행된 명령에 대한 감사 추적을 생성할 수 있습니다.
4) 시스템 경로 이름 실행 기록
규칙 호출 시 경로를 inode로 변환하는 파일 액세스를 감시하는 것 외에도 감사는 이제 규칙 호출 시 존재하지 않거나 파일이 규칙 호출 후 교체되는 경우에도 경로 실행을 모니터링할 수 있습니다. 이를 통해 프로그램 실행 파일을 업그레이드하거나 프로그램을 설치하기 전에 규칙이 계속 작동할 수 있습니다.
5) 보안 이벤트 기록
샌드 박스 인증 모듈은 실패한 로그인 시도를 기록할 수 있습니다. 실패한 로그인 시도를 기록하도록 감사를 설정하고 로그인을 시도한 사용자에 대한 추가 정보를 제공할 수 있습니다.
6)이벤트 검색
감사에서는 ausearch 유틸리티를 제공합니다. 이 유틸리티는 로그 항목을 필터링하고 여러 조건에 따라 완전한 감사 추적을 제공하는 데 사용할 수 있습니다.
7)요약 보고서 실행
aureport 유틸리티는 기록 된 이벤트에 대한 일일 보고서를 생성하는 데 사용할 수 있습니다. 그런 다음 시스템 관리자는 이러한 보고서를 분석하고 의심 스러운 활동을 더 조사할 수 있습니다.
8)네트워크 액세스 모니터링
시스템 관리자가 네트워크 액세스를 모니터링할 수 있도록 nftables,iptables, ebtables 유틸리티를 구성하여 감사 이벤트를 트리거할 수 있습니다.
- 이 글에서는 감사 서비스를 설치, 구성 및 관리하는 방법을 다룹니다.
또한 감사 규칙을 정의하고, 감사 로그를 검색하고, 감사 보고서를 작성하는 방법도 보여줍니다. 시스템 감사를 처음 접하는 경우 이 문서를 통해 시스템에서 감사에 대한 기본적인 이해와 사용법을 파악할 수 있습니다.
1. audit 설치
# yum install audit
Dependencies resolved.
==========================================================================================================================================================================================================
Package Architecture Version Repository Size
==========================================================================================================================================================================================================
Upgrading:
audit x86_64 3.1.2-1.el8 rhel-8-for-x86_64-baseos-rpms 265 k
audit-libs x86_64 3.1.2-1.el8 rhel-8-for-x86_64-baseos-rpms 125 k
python3-audit x86_64 3.1.2-1.el8 rhel-8-for-x86_64-baseos-rpms 88 k
Transaction Summary
==========================================================================================================================================================================================================
Upgrade 3 Packages
Total download size: 478 k
Is this ok [y/N]: y
audit 설정 파일은 /etc/audit/auditd.conf 입니다.
2. audit 서비스 시작 및 활성화
- systemctl 대신 service 명령을 사용하는 유일한 이유는 사용자 ID(UID) 값을 올바르게 기록하기 위해서입니다.
# service auditd start
- 부팅 시 시작할 수 있도록 auditd 데몬을 활성화합니다.
# systemctl enable auditd
--참고------
# auditctl -e 0 명령을 사용하여 auditd 를 일시적으로 비활성화하고 # auditctl -e 1 을 사용하여 다시 활성화할 수 있습니다.
-------------
3. audit rules 정의
- 감시 규칙을 정의하는 구문은 다음과 같습니다.
auditctl -w path_to_file -p permissions -k key_name
---설명-------------------------
auditctl: 리눅스 감사 시스템(audit system)을 제어하는 명령어로, 감사 규칙을 추가하거나 제거할 때 사용됩니다.
-w path_to_file: -w 옵션은 특정 파일 또는 디렉터리를 감시하겠다는 뜻입니다. 여기서는 path_to_file 파일을 감시하겠다는 의미입니다. 이 파일은 사용자 계정 정보가 저장된 중요한 시스템 파일입니다.
-p wa: 감시할 권한 유형을 지정합니다. 각 권한에 대한 의미는 다음과 같습니다:
w (write): 파일이 쓰기 동작으로 변경될 때(즉, 파일이 수정될 때) 감시합니다.
a (attribute): 파일의 속성(attribute)이 변경될 때 감시합니다. 예를 들어, 파일 권한이나 소유자가 변경될 때입니다.
즉, 이 명령어는 path_to_file 파일에 쓰기 작업이 발생하거나 속성이 변경될 때 이를 감사하겠다는 의미입니다.
-k user-modify: -k 옵션은 감사 규칙에 태그를 추가하는 기능입니다. user-modify는 사용자가 임의로 지정한 태그 이름으로, 이 규칙과 관련된 로그를 나중에 쉽게 찾을 수 있도록 식별할 수 있습니다.
---------------------------------
- 명령어를 사용하여 audit rules를 만들어보겠습니다.
1) 사용자 생성 작업을 감사하려면 먼저 /etc/passwd 파일에 감시를 추가하여 쓰기 및 속성 변경 액세스를 추적하고 모든 메시지를 기록하는 맞춤 키를 추가합니다(이 맞춤 키는 로그 메시지를 필터링하는 데 유용합니다).
> rules 있는지 확인
# auditctl -l
No rules // 아무것도 없음을 확인
#
# auditctl -w /etc/passwd -p wa -k user-modify
# auditctl -l
-w /etc/passwd -p wa -k user-modify
# useradd test
# less /var/log/audit/audit.log | grep user
...........
type=SYSCALL msg=audit(1727192060.474:180): arch=c000003e syscall=257 success=yes exit=5 a0=ffffff9c a1=55628b682da0 a2=20902 a3=0 items=1 ppid=2873 pid=3676 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="useradd" exe="/usr/sbin/useradd" key="user-modify"ARCH=x86_64 SYSCALL=openat AUID="root" UID="root" GID="root" EUID="root" SUID="root" FSUID="root" EGID="root" SGID="root" FSGID="root"
type=ADD_GROUP msg=audit(1727192060.476:181): pid=3676 uid=0 auid=0 ses=2 msg='op=add-group acct="test" exe="/usr/sbin/useradd" hostname=RHEL8-audit addr=? terminal=pts/0 res=success'UID="root" AUID="root"
type=ADD_USER msg=audit(1727192060.478:182): pid=3676 uid=0 auid=0 ses=2 msg='op=add-user acct="test" exe="/usr/sbin/useradd" hostname=RHEL8-audit addr=? terminal=pts/0 res=success'UID="root" AUID="root"
............
- 위에 보는것과 같이 /etc/passwd 파일에 감시를 걸어놓고 useradd test를 하니 바로 audit.log 에 기록을 하게됩니다.
그리고 우리는 명령어로 rules을 추가했는데, 해당 룰은 리부팅을 하면 사라집니다.
그럼 리부팅 후에도 rules이 적용되게끔 해보겠습니다.
# vi /etc/audit/audit.rules
-w /etc/passwd -p wa -k user-modify // 추가
- Rules를 적용하기 위해 데몬을 reload
# service auditd reload
Stopping logging:
Redirecting start to /bin/systemctl start auditd.service
# auditctl -l
-w /etc/passwd -p wa -k user-modify
이렇게 하면 리부팅 한 후에도 Rules 이 적용됩니다.
예로 아래와 같이 중요하다고 판단되는 파일들을 Rules로 만들어서 적용시키면 됩니다.
-w /etc/hosts -p wa -k hosts_change
-w /etc/ssh/sshd_config -p wa -k sshd_change
4. audit logs 확인
- 기본적으로 /var/log/audit/audit.log을 볼수 있지만, Rules가 많을때는 보기가 힘들수있습니다.
그래서 아래와 같이 명령어를 사용하면 해당 Rules에 대한 내용만 볼수있습니다.
# ausearch -i -k user-modify
----
type=PROCTITLE msg=audit(09/25/2024 00:34:02.338:179) : proctitle=auditctl -w /etc/passwd -p wa -k user-modify
type=SYSCALL msg=audit(09/25/2024 00:34:02.338:179) : arch=x86_64 syscall=sendto success=yes exit=1080 a0=0x4 a1=0x7ffe078edeb0 a2=0x438 a3=0x0 items=0 ppid=2873 pid=3669 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=auditctl exe=/usr/sbin/auditctl key=(null)
type=CONFIG_CHANGE msg=audit(09/25/2024 00:34:02.338:179) : auid=root ses=2 op=add_rule key=user-modify list=exit res=yes
----
type=PROCTITLE msg=audit(09/25/2024 00:34:20.474:180) : proctitle=useradd test
type=PATH msg=audit(09/25/2024 00:34:20.474:180) : item=0 name=/etc/passwd inode=18516061 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(09/25/2024 00:34:20.474:180) : cwd=/etc/audit
type=SYSCALL msg=audit(09/25/2024 00:34:20.474:180) : arch=x86_64 syscall=openat success=yes exit=5 a0=AT_FDCWD a1=0x55628b682da0 a2=O_RDWR|O_NOCTTY|O_NONBLOCK|O_NOFOLLOW a3=0x0 items=1 ppid=2873 pid=3676 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=useradd exe=/usr/sbin/useradd key=user-modify
----
type=PROCTITLE msg=audit(09/25/2024 00:34:20.480:183) : proctitle=useradd test
type=PATH msg=audit(09/25/2024 00:34:20.480:183) : item=4 name=/etc/passwd inode=18213003 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=CREATE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(09/25/2024 00:34:20.480:183) : item=3 name=/etc/passwd inode=18516061 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(09/25/2024 00:34:20.480:183) : item=2 name=/etc/passwd+ inode=18213003 dev=fd:00 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=DELETE cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(09/25/2024 00:34:20.480:183) : item=1 name=/etc/ inode=16777345 dev=fd:00 mode=dir,755 ouid=root ogid=root rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=PATH msg=audit(09/25/2024 00:34:20.480:183) : item=0 name=/etc/ inode=16777345 dev=fd:00 mode=dir,755 ouid=root ogid=root rdev=00:00 nametype=PARENT cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(09/25/2024 00:34:20.480:183) : cwd=/etc/audit
type=SYSCALL msg=audit(09/25/2024 00:34:20.480:183) : arch=x86_64 syscall=rename success=yes exit=0 a0=0x7ffcbdaba800 a1=0x55628b682da0 a2=0x7ffcbdaba770 a3=0x55628bc64d50 items=5 ppid=2873 pid=3676 auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts0 ses=2 comm=useradd exe=/usr/sbin/useradd key=user-modify
----
type=PROCTITLE msg=audit(09/25/2024 00:44:59.736:177) : proctitle=/sbin/auditctl -R /etc/audit/audit.rules
type=SYSCALL msg=audit(09/25/2024 00:44:59.736:177) : arch=x86_64 syscall=sendto success=yes exit=1080 a0=0x3 a1=0x7ffd87846580 a2=0x438 a3=0x0 items=0 ppid=3778 pid=3781 auid=unset uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=(none) ses=unset comm=auditctl exe=/usr/sbin/auditctl key=(null)
type=CONFIG_CHANGE msg=audit(09/25/2024 00:44:59.736:177) : auid=unset ses=unset op=add_rule key=user-modify list=exit res=yes
이렇게 중요하다라고 생각되는 파일이라고 audit 설정을 해주면 문제를 파악하는데 도움이 됩니다.
혹, 궁금한점 있으시면 댓글 남겨 주세요
긴글 읽어주셔서 감사합니다.
참고링크
https://www.redhat.com/sysadmin/configure-linux-auditing-auditd
댓글목록
등록된 댓글이 없습니다.