사용자가 로그 파일에 대한 읽기 액세스를 허용하는 가장 안전한 방법은 무엇입니까?


21

내 응용 프로그램에 대한 읽기 액세스 권한이 필요하며 /var/log/messages, 이는 사용자 및 그룹에 속합니다 root. /var/log/messages내 응용 프로그램에서 읽을 수 있도록 필요한 최소 노출 수준은 얼마입니까?

현재 내 계획은의 그룹 소유권을 변경하는 것입니다 /var/log/messages 새 그룹 루트 및 내 응용 프로그램 사용자를 추가하는 것입니다. 그러나이 경우 응용 프로그램에 대한 쓰기 권한도 부여됩니다 /var/log/messages.

운영체제 : Centos 5.5

답변:


7

어쨌든 사용자 개인을 통해 액세스 할 수 있으므로 그룹에 루트를 추가 할 필요가 없습니다. 단지 결정한 그룹에 그룹 읽기를 제공하십시오. logrotate로도 변경해야합니다. 그렇지 않으면 그룹 변경이 매일 밤 지워집니다.


logrotate 스크립트는 어디에 있습니까?
— gambooka

1
/etc/logrotate.d/는 분리 된 logrotate 스크립트의 폴더입니다. / var / log / messages는 /etc/logrotate.d/syslog에 있습니다. / var / log / messages를 /etc/logrotate.conf 내의 자체 파일로 이동 한 다음 'create 0640 root new_group'과 같은 것을 사용하여 파일을 올바르게 작성하도록 지시하십시오.
— rfelsburg

/ var / log / messages를 /etc/logrotate.d/ 내부의 자체 파일로 이동해야합니다.
— Massimo

17

위의 답변을 조금만 확장하면 실제 사용 사례가 있습니다. 엔터프라이즈 로그 분석 응용 프로그램 Splunk를 Redhat 상자에서 실행합니다. splunk user 및 splunk 그룹에서 실행됩니다. 이는 루트 (또는 sudo 관리자) 만 액세스 할 수 있기 때문에 splunk가 / var / log의 로그에 액세스하지 못하게합니다

splunk에 대해서만 읽기 전용 액세스를 허용하기 위해 일부 ACL을 사용하고 logrotate를 수정하여 유지했습니다.

ACL을 수동으로 설정할 수 있습니다

sudo setfacl -m g:splunk:rx /var/log/messages

logrotate가 ACL 설정을 다시 적용하지 않기 때문에 지속되지 않으므로보다 영구적 인 솔루션을 위해 ACL을 재설정하기 위해 logrotate 규칙을 추가했습니다. 파일을 추가했습니다 ..

/etc/logrotate.d/Splunk_ACLs

와

{
    postrotate
        /usr/bin/setfacl -m g:splunk:rx /var/log/cron
        /usr/bin/setfacl -m g:splunk:rx /var/log/maillog
        /usr/bin/setfacl -m g:splunk:rx /var/log/messages
        /usr/bin/setfacl -m g:splunk:rx /var/log/secure
        /usr/bin/setfacl -m g:splunk:rx /var/log/spooler
    endscript
}

파일의 ACL 상태를 확인하여

$ getfacl /var/log/messages

ACL에 대한 자세한 내용은 https://help.ubuntu.com/community/FilePermissionsACL을 참조 하십시오. http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/



1
splunk는 로그 파일에 대한 실행 권한이 필요하지 않으며 읽기만하면됩니다.
— rojs

@nickfox /etc/logrotate.d/Splunk_ACLs귀하가 게시 한 컨텐츠의 전체 내용 입니까? 실제로 회전 후 비트를 처리하기 위해 logrotate에 대한 경로를 지정할 필요가 없습니까?
— 데일 앤더슨

흠, 그렇게 생각하지 마십시오. 시스템 로그에 대한 기존 logrotate 구성을 수정하고 싶지 않았으며 시스템 로그를 자신의 것으로 바꾸고 싶지 않았습니다. 이런 식으로 splunk에 대한 사용자 지정 수정은 독립적으로 존재합니다. /app.d/ 디렉토리가 무엇인지 패키지 또는 퍼펫 등으로 배포 할 수 있습니다. 물론 내가 틀렸을 수도있다. 내가 그렇게한지 1 년이 지났다.
— nick fox

1
X 옵션 (x가 아닌 대문자 X에서와 같이)을 사용하는 경우 파일이 디렉토리이거나 이미 일부 사용자에 대한 실행 권한이있는 경우에만 실행이
— 추가됨을 제안하는 메모

5

귀하의 계획은 수용 가능하며 "전통적인"Unix 권한 체계가 최선의 방법입니다.
또 다른 옵션은 syslog가 관심있는 메시지를 다른 파일로 전환하도록하는 것입니다 (앱 사용자에게에있을 수있는 민감한 항목에 대한 액세스 권한을 제공하지 /var/log/messages않음).

당신의 전통적인 권한 방식에 얽매 기분하지 않는 경우 사용자 / 그룹 / 당신은 또한 사용할 수있는 다른 POSIX ACL을 앱 사용자를 제공하기 위해 (Google을 통해 사용할 수있는 다른, 어쩌면 더 나은 하우투 / 정보)에 대한 읽기 전용 액세스 /var/log/messages- 이것은 좀 더 세밀하고 실수로 다른 사람을 응용 프로그램 그룹에 배치하여 볼 수 없어야 할 것들에 대한 액세스 권한을 부여 할 위험이 없습니다.


2

사용했던 Yip setfaclmail.log , 고객 이 파일에 액세스 할 수 있도록이 작업을 수행 logrotate.conf했지만 로그를 회전 한 후 ACL을 재설정하기 위해 파일에 명령을 추가 할 필요는 없습니다 .

postrotate
         /usr/bin/setfacl -m o::r /var/log/mail.log  
endscript

참고 나는 이것을 설정하고 테스트하지는 않았지만 여기에 다시 게시 되어도 왜 작동하지 않을 수 있는지, 내가 틀렸다면 누군가 나를 수정합니다.


0

이를 위해 ACL 을 사용할 수 있습니다 . 특정 사용자 및 파일에 대한 특정 추가 액세스 규칙을 설정할 수 있습니다.


-1

다른 사람들이 말한대로 ACL을 구성한 후에는 모든 acl 규칙을 사후 회전 구성에 두지 않고 매번 새 로그 파일을 작성하는 대신 copytruncate를 사용하도록 srotrotate를 사용할 수 있습니다.

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