Cách an toàn nhất để cho phép người dùng đọc quyền truy cập vào tệp nhật ký là gì?


21

Ứng dụng của tôi yêu cầu quyền truy cập đọc /var/log/messages, thuộc về người dùng và nhóm root. Mức độ phơi sáng tối thiểu cần thiết /var/log/messagesđể ứng dụng của tôi có thể đọc được là gì?

Hiện tại, kế hoạch của tôi là thay đổi quyền sở hữu nhóm /var/log/messagesthành một nhóm mới và thêm root và người dùng ứng dụng của tôi vào đó, nhưng điều này cũng sẽ cung cấp cho các đặc quyền ghi ứng dụng /var/log/messages.

HĐH: Centos 5.5

Câu trả lời:


7

Không cần thêm root vào nhóm vì dù sao nó cũng sẽ có quyền truy cập thông qua quyền riêng tư của người dùng, chỉ cần cho nhóm đọc vào bất cứ nhóm nào bạn quyết định. Hãy nhớ thực hiện các thay đổi với logrotate hoặc thay đổi nhóm sẽ bị xóa hàng đêm.


Các kịch bản logrotate nằm ở đâu?
gAMBOOKa

1
/etc/logrotate.d/ là thư mục dành cho các tập lệnh logrotate bị hỏng. / var / log / message nằm trong /etc/logrotate.d/syslog. Bạn sẽ cần di chuyển / var / log / message vào tệp riêng của nó bên trong /etc/logrotate.conf và sau đó sử dụng cái gì đó như 'tạo 0640 root new_group' để nói với nó để tạo tệp đúng cách.
rfelsburg

Bạn sẽ cần di chuyển / var / log / message vào tập tin của chính nó trong /etc/logrotate.d/
Massimo

17

Chỉ cần mở rộng một chút về các câu trả lời ở trên là trường hợp sử dụng trong thế giới thực. Tôi chạy ứng dụng phân tích nhật ký doanh nghiệp Splunk trên hộp Redhat. Nó chạy dưới người dùng splunk và nhóm splunk. Điều này ngăn chặn truy cập vào các bản ghi trong / var / log vì chúng chỉ có thể được truy cập bởi root (hoặc quản trị viên sudo)

Để cho phép truy cập chỉ đọc cho splunk, tôi đã sử dụng một số logrotate của ACL và đã sửa đổi để duy trì nó.

Bạn có thể tự đặt ACL bằng

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

Điều này sẽ không tồn tại vì logrotate sẽ không áp dụng lại cài đặt ACL vì vậy để có giải pháp lâu dài hơn, tôi đã thêm một quy tắc vào logrotate để đặt lại ACL. Tôi đã thêm tập tin ..

/etc/logrotate.d/Splunk_ACLs

với

{
    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
}

Kiểm tra trạng thái ACL của một tệp với

$ getfacl /var/log/messages

Để biết thêm thông tin về ACL, hãy xem https://help.ubfox.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-USE-access-control-lists-on-linux/


cũng được đưa lên Splunk trả lời answers.splunk.com/answers/4253/...
nick fox

1
Lưu ý rằng splunk không yêu cầu quyền thực thi trên các tệp nhật ký, chỉ cần đọc.
rojs

@nickfox Có phải đó là toàn bộ nội dung /etc/logrotate.d/Splunk_ACLsmà bạn đã đăng ở đó không? Bạn thực sự không cần chỉ định bất kỳ đường dẫn nào cho logrotate để xử lý bit postrotate?
Dale Anderson

hmmm Đừng nghĩ vậy Tôi không muốn sửa đổi cấu hình logrotate hiện tại cho nhật ký hệ thống và tôi cũng không muốn thay thế chúng bằng cấu hình của riêng mình. Bằng cách này, sửa đổi tùy chỉnh cho splunk tồn tại độc lập. Cho phép bạn triển khai với một gói hoặc con rối, v.v ... đó là những thư mục /app.d/ dành cho. Tất nhiên tôi có thể sai, đó là hơn một năm trước kể từ khi tôi làm điều đó
nick fox

1
Chỉ cần một lưu ý cho thấy rằng nếu bạn sử dụng tùy chọn X (như viết hoa X chứ không phải x), nó sẽ chỉ thực thi nếu tệp là thư mục hoặc đã có quyền thực thi cho một số người dùng
steoleary

5

Kế hoạch của bạn có thể chấp nhận được và trong sơ đồ cấp phép Unix "truyền thống" là cách tốt nhất để thực hiện.
Một tùy chọn khác là để syslog chuyển hướng các tin nhắn quan tâm đến một tệp khác (điều này tránh cho phép người dùng ứng dụng truy cập vào bất cứ điều gì nhạy cảm có thể có /var/log/messages).

Nếu bạn không cảm thấy bị ràng buộc bởi lược đồ quyền truyền thống của Người dùng / Nhóm / Khác, bạn cũng có thể sử dụng POSIX ACL (khác, có thể là howtos / thông tin tốt hơn có sẵn thông qua Google) để cấp cho người dùng ứng dụng của bạn quyền truy cập chỉ đọc /var/log/messages- đây là một chi tiết nhỏ hơn và không có nguy cơ vô tình đưa người khác vào nhóm của ứng dụng và cho họ quyền truy cập vào những thứ mà họ không thể nhìn thấy.


2

Yip tôi đã từng setfacllàm điều này để cấp quyền truy cập vào mail.logtệp cho khách hàng, không phải bạn cũng cần phải dán một lệnh trong logrotate.conftệp để đặt lại ACL sau khi nhật ký được xoay, ví dụ:

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

Lưu ý Tôi chỉ mới thiết lập tính năng này và chưa thử nghiệm, nhưng mặc dù nó sẽ đăng lại ở đây, nhưng không thể hiểu tại sao nó không hoạt động, ai đó sẽ sửa cho tôi nếu tôi sai.


0

Bạn có thể sử dụng ACL cho việc này. Nó cho phép bạn đặt quy tắc truy cập bổ sung cụ thể cho người dùng và tệp cụ thể.


-1

một khi bạn đã cấu hình ACL của mình như những người khác đã nói, thay vì đặt tất cả các quy tắc acl của bạn vào cấu hình postrotate, bạn có thể swith logrotate để sử dụng copytruncate thay vì tạo tệp nhật ký mới mỗi lần

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.