공유할 서비스 선택

TECH


TECH

OS 누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!

페이지 정보

작성자 OSworker 아이디로 검색 전체게시물 댓글 0건 조회 176회 좋아요 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 

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/auditing-the-system_security-hardening 

 

 


댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
229 OS OSworker 아이디로 검색 전체게시물 10-11 13
audit 로그에 저장된 time 을 날짜/시간 으로 변경하여 보는법

카테고리 : OS

13 0
작성자 : OSworker 24/10/11
228 OS OSworker 아이디로 검색 전체게시물 09-29 133
[보안취약점]"RHSB-2024-002 - OpenPrinting cups-filters"에 대해 설명드리고자합니다.

카테고리 : OS

133 0
작성자 : OSworker 24/09/29
열람중 OS OSworker 아이디로 검색 전체게시물 09-25 177
열람중
누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!

카테고리 : OS

177 0
작성자 : OSworker 24/09/25
226 OS OSworker 아이디로 검색 전체게시물 09-15 142
RHEL6.10 앞으로 어떻게 되나요? 아직도 RHEL6버전을 사용하신다구요?

카테고리 : OS

142 0
작성자 : OSworker 24/09/15
225 OS OSworker 아이디로 검색 전체게시물 08-30 227
SWAP이 왜 자꾸 사용하게 될까요? 누가 사용하는것일까요?

카테고리 : OS

227 0
작성자 : OSworker 24/08/30
224 OS OSworker 아이디로 검색 전체게시물 08-22 224
리눅스 서버에 RDP를 설치하여 윈도우에서 "원격데스크탑접속"으로 연결

카테고리 : OS

224 0
작성자 : OSworker 24/08/22
223 Middleware 미들웨어 아이디로 검색 전체게시물 08-19 194
(IMDG)를 활용한 session 구성 -2 오픈소스 (Hazelcast, Apache Ignite) 설치방법

카테고리 : Middleware

194 0
작성자 : 미들웨어 24/08/19
222 OS OSworker 아이디로 검색 전체게시물 08-17 296
OpenSSH 의 암호화 또는 Hashing과 관련된 알고리즘에 대해 알아보려 합니다

카테고리 : OS

296 0
작성자 : OSworker 24/08/17
221 Middleware 미들웨어 아이디로 검색 전체게시물 08-09 201
(IMDG) Data Grid란? (IMDG)를 활용한 session 구성 -1

카테고리 : Middleware

201 0
작성자 : 미들웨어 24/08/09
220 OS OSworker 아이디로 검색 전체게시물 07-31 321
Red Hat 이벤트 행사에 대해 알고계신가요?

카테고리 : OS

321 0
작성자 : OSworker 24/07/31
Total 229건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top