CSO(최고 보안 책임자)는 권한 있는 계정(루트)의 활동을 기록하려고 합니다. 에 설명된 대로 사용자 입력(키 입력) 및 콘솔/터미널 출력(stdout/stderr)을 기록하도록 sudo를 구성할 수 있다는 것을 알고 있습니다."sudo su -"에 명령을 기록하는 방법은 무엇입니까?. 그러나 콘텐츠는 항상 로컬 파일에 기록됩니다. 루트 사용자는 쉽게 파일을 지울 수 있습니다!
/etc/sudoers 로그인을 활성화했습니다.
Defaults>root log_input, log_output
Defaults iolog_dir=/var/log/sudo-io
또는 이에 상응하는
root ALL = (ALL) LOG_INPUT: LOG_OUTPUT: ALL
파일이 삭제되지 않도록 보호하는 방법은 무엇입니까?
답변1
서버에서 로컬로 수행하는 모든 작업은 관리자나 해커의 재량에 따라 관리자나 해커가 우회할 수 있습니다. 로그의 무결성을 보장하는 유일한 방법은 로그를 원격 syslog 서버에 기록(또는 최소한 복사)하는 것입니다. 이 작업을 수행하는 방법은 잘 알려진 개념이므로 자세히 설명하지 않겠습니다. 모르시면 검색해서 읽어보세요 syslog-ng
. 원격 syslog 서버는 CSO 팀만 액세스할 수 있고 sysadmin 팀의 누구도 액세스할 수 없는지 확인하십시오. 업무 분리는 로그가 변조되지 않도록 하는 유일한 방법입니다. 제가 귀하의 CSO라면 운영자나 시스템 관리자가 접근할 수 없는 곳에 물리적으로 서버를 배치할 것입니다. 왜냐하면 어떤 상자에든 물리적으로 접근할 수 있게 되면 보안이 사라지기 때문입니다. 내 2센트.
답변2
두 가지 옵션:
로컬 로깅(그러나 루트 계정은 어떤 방식으로든 파일을 지울 수 있음)
chattr +a
디렉토리를 사용하여 만들 수 있습니다추가만. 그러나 불행하게도 이 속성은 새 파일 및 디렉터리에 상속되지 않습니다("chattr +a"는 디렉토리에 대해 무엇을 합니까?).
chattr -R +a /var/log/sudo-io
그런 다음 커널의 inotify 기능을 활용하는 도구를 사용하여 설정할 수 있습니다.추가만새 파일 및 디렉터리의 속성(참조: 새로 생성된 파일/폴더에 대한 추가 속성을 자동으로 설정하시겠습니까?). (여기서 타이밍 공격이 있을 수 있습니다)
SELinux는 여기에서 사용자 권한 계정을 제한하는 데 확실히 도움이 될 수 있습니다! ( 로그에 액세스할 수 없음 staff_u
)sysadm_u
원격 녹음
안타깝게도 로그 파일의 레이아웃과 형식으로 인해 syslog 전달(세션당 5개 파일)을 사용하기가 어렵습니다.
/var/log/sudo-io
/var/log/sudo-io/seq
/var/log/sudo-io/00
/var/log/sudo-io/00/00
/var/log/sudo-io/00/00/02
/var/log/sudo-io/00/00/02/stdout
/var/log/sudo-io/00/00/02/log
/var/log/sudo-io/00/00/02/timing
/var/log/sudo-io/00/00/02/stderr
/var/log/sudo-io/00/00/02/ttyout
/var/log/sudo-io/00/00/01
/var/log/sudo-io/00/00/01/stdin
/var/log/sudo-io/00/00/01/stdout
/var/log/sudo-io/00/00/01/log
/var/log/sudo-io/00/00/01/timing
/var/log/sudo-io/00/00/01/ttyin
/var/log/sudo-io/00/00/01/stderr
/var/log/sudo-io/00/00/01/ttyout
iolog_dir
NFS/CIFS를 사용하여 sudo로 지정된 디렉터리를 원격 서버에 마운트하면 로그 파일을 원격 서버에 쉽게 쓸 수 있습니다. NFS 내보내기 디렉터리는 chattr +
위에 설명된 것과 같아야 합니다.
분명히 서버는 사용자가 서버에 연결하여 파일을 삭제할 수 없도록 더욱 안전해야 합니다. :-).
알아채다sudo는 실행을 거부합니다로그 파일을 생성할 수 없는 경우:sudo: /var/log/sudo-io/seq를 열 수 없습니다: 권한이 거부되었습니다.