수퍼 유저 활동을 추적하는 방법


21

Linux 환경에서 수퍼 유저 활동을 추적하는 가장 좋은 방법이 무엇인지 알고 싶습니다.

특히, 나는이 기능을 찾고 있습니다 :

  • A) 보안 syslog 서버에 키 입력 기록
  • B) 쉘 세션을 재생하는 기능 (스크립트 재생과 같은 것)
  • C) 이상적으로는 서버에 물리적으로 액세스하지 않고 피할 수없는 (또는 상당히 어려운) 것이 이상적입니다.

다른 시스템 관리자 (또는 타사)가 서버에서 권한있는 작업을 수행 할 수 있어야하는 환경에서 보안 / 감사 관점에서이 점을 고려하십시오.

모든 관리자는 자신의 명목 계정을 가지고 있으며 모든 대화식 세션은 필요할 때 재생할 수있는 상태로 완전히 기록되어야합니다 (예를 들어, 누군가 mc를 사용하여 중요한 파일을 삭제하거나 변경하는 경우에는 충분하지 않습니다) 해당 사용자가 mc 명령을 실행했음을 알고 mc를 시작한 후 수행 된 작업을 정확하게 볼 수있는 방법이 있어야합니다).

추가 사항 :

  1. womble이 지적했듯이 서버에서 변경을 수행하기 위해 루트 권한으로 로그인하지 않고 구성 관리 시스템을 통해 수행하는 것이 가장 좋은 방법 일 수 있습니다. 따라서 그러한 시스템이없는 상황을 가정하고 동일한 서버를 통해 다른 사람들에게 루트 수준의 액세스 권한을 부여해야합니다 .
  2. 나는 이것을 명백하게하는 일에 전혀 관심이 없다 : 루트 권한을 가진 서버에 로그인하는 모든 사람은 세션이 기록 될 것임을 충분히 알고있을 것이다 (예를 들어, 콜센터 운영자는 그들의 대화가 기록 중)
  3. 아무도 일반 수퍼 유저 계정 ( "루트")을 사용하지 않습니다.
  4. 나는 ttyrpld를 알고 있으며 내가 찾고있는 것을하는 것 같습니다. 그러나 그렇게하기 전에 수정되지 않은 커널을 사용 하여이 문제를 해결할 수 있는지 알고 싶습니다. 쉘이나 커널을 패치하지 않고 수퍼 유저 계정을 완전히 감사 할 수있는 데비안 용 도구 (또는 일반적으로 Linux)가 있는지 알고 싶습니다.

2
(횡령 의자와 팝콘)이해야 좋은 ...
에이버리 페인

+1 ... 똑같은 생각을하고있었습니다. LOL
KPWINC

또한이 관련 질문에 유의하십시오 : serverfault.com/questions/46614/…
sleske

여전히 구성 관리 시스템을 사용해야한다고 생각합니다. (puppet / cfengine / chef / systemimager / chef / etc ...)
KevinRae

케빈, 동의합니다 예를 들어 womble의 답변에 대한 의견 : serverfault.com/questions/50710/… 을 참조하십시오 . 불행히도, 이것은이 환경에서 옵션이 아니므로 구성 관리 시스템을 사용할 수없는 시나리오를 가정했습니다. 어쨌든이 주제에 대한 여러분의 의견에 감사드립니다.
mfriedman

답변:


8

관리자가 여러 명인 환경에서는 가능한 경우 루트를 사용하지 마십시오.

모든 것에 sudo를 사용하십시오-sudo는 매우 구성 가능하고 쉽게 기록 할 수 있습니다.

누군가가 당신의 확립 된 규칙을 따라갈 때, 모든 로그인 또는 su를 기록하고 근절하기 위해 조사하십시오.


3
그래, sudo는의 훌륭한 기록을 가지고 - 항목은 모든 "루트로 움블으로 실행 / 빈 / SH" 실제 도움을. 구성 관리가 없으면 사람들은 항상 관리 작업을 수행하기 위해 루트가 될 것이며, 악의적 인 작업을 수행하려는 사람은 올바른 작업을 수행하는 것과 동일한 루트 세션에서 자신의 작업을 수행 할 수 있습니다. 완벽한 커버.
womble

정책은 단순히이 루트를 근본으로 삼는 것을 권장하지 않아야하며, 일단 예약을
마치면

2
정책 : "sudo / bin / sh"= 해고 / 조사. 매우 명확하고 매우 쉬운 솔루션입니다.
Karl Katzke

5
사람들이 합법적으로 실행 해야하는 프로그램 (예 : sudo vi)에서 쉘을 얻는 방법은 너무 많습니다. 가능한 모든 방법을 차단하면 더 모호한 방법을 찾는 데 어려움을 겪을 것입니다. 어쨌든 a) 때로는 sudo / bin / sh가 필요하며 b) 기술이 아닌 관리 문제입니다.
cas

Chris는 기술 문제가 아니라 관리 문제를 지적합니다.
Karl Katzke

2

우선, 어떤 유형의 루트 사용자 액세스를 모니터하려고합니까? 바보 같은 관리자 실수 또는 악의적 인 내부자? 전자는 이미 제안했듯이 좋은 구성 관리 솔루션을 원할 것입니다. 후자-그들이하고있는 일을 안다면 조사 할 가치가있는 일을 지적하기에 충분할뿐입니다. 당신은 어떤 형태의 무단 활동이 시작되었다는 것을 알고 싶어하고, 그 사실에주의를 기울여야합니다. 똑똑한 사람이라면 서버 상태를 변경하거나 자체 도구를 가져 와서 대부분의 로깅을 비활성화하지만 사건의 시작 부분을 잡을 수 있기를 바랍니다.

즉, 사용할 수있는 몇 가지 도구를 제안합니다. 먼저 좋은 sudo 정책으로 시작하십시오 (이미 제 안됨). 둘째, 관리자에게 루트 셸 액세스 권한을 부여해야하는 경우 sudoshell을 확인하십시오. 셋째, 가장 좋은 방법은 (가장 집중적이지만) Linux 커널 감사를 살펴보십시오.


+1 sudoshell을 제안하고, 특히 Linux 커널의 감사 시스템을 설명해 주셔서 감사합니다. 이는 제가 달성하려는 것에 대한 보완이 될 수 있습니다.
mfriedman

2

당신이 할 수있는 일은 sudo 에이 라이브러리를 사용 하고 , 모든 사람에게 자신의 사용자 계정을 부여하고, sudo -i를 모든 사람의 프로필에 넣는 것입니다. 그렇게하면 즉각적인 루트 액세스 권한이 있으며 사용하는 모든 명령이 기록됩니다.


+1 나는 그 도서관에 대해 몰랐다. 공유해 주셔서 감사합니다!
mfriedman

1

그들은 뿌리가 있습니다. 당신이 기대할 수있는 최선은 그들이 당신의 작은 모니터링 유토피아에서 벗어나기로 결정한 시점을 보는 것이지만, 그 이상으로 누군가의 추측입니다.

내가 생각할 수있는 "최상의"옵션은 광범위한 구성 자동화 및 관리를 사용하고 개정 제어 시스템을 사용하여 매니페스트를 관리하고이를 통해 업데이트를 배포하는 것입니다. 그런 다음 서버에 대한 실제 루트 로그인을 방지하십시오. (비상 각 및 변경 후 사용 암호 또는 SSH 키를 사용하여 응급 상황 "오노 아 내가 무언가를 깨뜨렸다"액세스를 제공 할 수 있으며, 모든 사람이 sysadmin을보고 실수하지 않도록 확인했습니다. 변경).

예, 이것은 불편하고 성가 시게 될 것입니다. 그러나 당신 이이 정도까지 모든 사람의 행동을 모니터링하고 싶을 정도로 편집증이라면, 당신이 불편하고 성가신 환경에 있다고 생각합니다. 큰 문제는 아닌 것 같습니다.


나는 당신에게 동의해야합니다. 가장 좋은 방법은 사람들이 서버에서 변경을 수행하기 위해 루트 권한으로 로그인하지 않고 구성 관리 시스템을 통해 변경하는 것입니다. 귀하의 의견은 내 질문을 수정하고 명확하게하는 데 도움이됩니다.
mfriedman

1

다른 사람들이 말했듯이 사용자가 비활성화 할 수없는 방식으로 전체 루트 액세스 권한을 가진 사용자를 로깅 할 수있는 방법은 거의 없지만 debian / ubuntu를 실행하는 경우 snoopy 를 살펴보십시오.

snoopy는 syslog (authpriv)에 대한 모든 호출을 기록하기 위해 libc가 제공하는 execve () 함수의 래퍼로 사용되는 공유 라이브러리 일뿐입니다. 시스템 관리자는 가벼운 / 무거운 시스템 모니터링, 다른 관리자의 작업 추적 및 시스템에서 발생하는 상황 (예 : cgi 스크립트를 실행하는 아파치)에 대한 좋은 느낌을 얻는 것과 같은 작업에서 스누피를 유용하게 사용할 수 있습니다.


답변 주셔서 감사합니다. 키 스트로크 로깅 또는 명령 로깅 만 지원합니까?
mfriedman

0

모든 것에 sudo를 사용하는 것에 대한 disabledleopard의 의견에 동의합니다. 확실히 기록하기가 더 쉽습니다.

또한 bash 기록 파일 백업을 주기적으로 추가합니다. 간과되는 경우가 많지만 정보의 원천이 될 수 있습니다. Goldman Sachs에게 문의하십시오. ;-)

http://www.guardian.co.uk/business/2009/jul/12/goldman-sachs-sergey-aleynikov


2
더 많은 시간을 보냈다면 /var/lib/history/$user.$tty-or-IP.$yymmddhhss에 기록의 타임 스탬프 사본을 만드는 .bash_logout 스크립트가 있습니다. 프로세스 회계 또는 적절한 설정 감사 도구 ...하지만 실제로 보안을위한 것은 아닙니다. 따라서 누가 바보 같은 일을했는지 ​​알아 내고 a) 다시하지 말고 b) 올바르게 수행하는 방법을 알 수 있습니다. 후배의 단서 수준을 높이는 것은 신뢰보다 훨씬 더 중요한 문제입니다.
cas

1
하급 판매원이 백만 달러 거래를 한 이야기를 상기시켜줍니다. 그는 상사가 그를 해고 할 것을 기대하고 상사는“안돼! 훈련하는데 백만 달러가 들었다!” 우리가 말하면서 주니어의 "단서 수준"이 증가하는 것을 느낄 수 있습니다. ;-)
KPWINC

0

어려울 것입니다 ...

root는 모든 보안 조치 (킬 모니터링 프로세스), 로그 파일 파쇄 / 트림 등을 위반할 수있는 신중하게 테스트 된 스크립트를 실행할 수 있습니다. 그러나 여전히 ...

루트 권한이 부여 된 여러 관리자가 팀으로 작업한다고 가정합니다. 그리고 루트는 모든 모니터링 프로세스를 중단시킬 수 있습니다. 불행히도 그 로그인 / 암호는 공개됩니다. 아니면 그들은 원치 않는 회사를 얻습니다.

권장하지는 않지만 UID 0으로 여러 루트 계정을 만드는 것이 여기에 해당 될 수 있습니다.

/ etc / ssh / sshd_config에서 행을 다음으로 변경 : PermitRootLogin no

추천합니다. 따라서 여기에서 사용자는 자신의 일반 계정을 사용하여 로그인합니다 (날짜 시간 소인이 스푸핑 된 IP 주소와 함께 기록됨). 그런 다음 루트로 전환합니다. su 명령 사용

이와 같이 루트로 직접 로그인 할 수 없습니다.

우리는 루트가 할 수없는 일을 생각해야합니다.

sudo는 좋아야한다. / etc 디렉토리 백업 구성 파일이 양호해야합니다. / var / directory 로그 파일은 주기적으로 이메일로 보내거나 별도의 NFS에 저장해야합니다.

SMS를 모든 루트 사용자의 모바일로 그룹화하는 모바일 게이트웨이 회사의 API를 통합하는 스크립트 작성은 어떻습니까? 나는 그것이 짜증나지만 그래도 알고 있습니다.

SSH를 깨는 것은 대부분 의문의 여지가 없습니다.


0

고객 사이트에는 다음과 같은 설정이 있습니다.

  • AD (개인 계정)에서 kerberos로 인증 할 수 있도록 개방
  • Unix 관리자의 특정 AD 그룹에게만 권한 부여
  • sudoers 그룹 == AD 그룹
  • 모든 서버의 OSSEC HIDS 에이전트 및 강화 된 서버의 관리자
  • OSSEC 웹 UI
  • Splunk -for-OSSEC를 사용하는 Splunk 3

서버에서 모든 sudo 사용을 기록하고 파일 변경, 패키지 설치, 의심스러운 프로세스 등을 추적합니다.


0

모든 장비에 액세스 할 수있는 터미널 서버가 여러 개 있습니다. 즉, 터미널 서버에서 또는 물리적으로 액세스 할 수있는 모든 서버에 로그인 할 수 있습니다.

터미널 서버의 Sshd는 http://www.kdvelectronics.eu/ssh-logging/ssh-logging.html 로 패치되어 정상적으로 작동하지만 오랫동안 업데이트되지 않았습니다. openssh 4.7에서 작동하도록 약간 수정했지만 5.1에서는 실패했습니다. 패치 된 sshd segfaults, 그리고 그것을 고칠 시간이 충분하지 않으면 거의 ttyrpld로 전환했습니다.


0

지금까지 이것은 내가 가진 것입니다.

  • sudosh : A와 B를 지원하는 것 같습니다 (A에 대해서는 확실하지는 않습니다)
  • Sudoscript : B를 지원하는 것 같습니다 (Sudoscript에는 sudoshell이라는 구성 요소가 있으며, 그것이 romandas가 제안한 경우 팁 주셔서 감사합니다)
  • Snoopy Logger 또는 sudo_exetrace : 내가 찾고있는 것이 아니지만 좋은 보완이 될 수 있습니다 (그 링크에 대한 다른 수신 및 blauwblaatje 덕분에)

커널이나 다른 시스템 구성 요소 패치와 관련이없는 다른 유사한 도구를 알고 있습니까?

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.