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


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.