Có phải là một rủi ro bảo mật để chạy các công việc crontab của tôi là root?


8

Tôi có một số công việc định kỳ mà tôi đang chạy - chủ yếu là các công cụ liên quan đến sao lưu.

Tôi phải sao lưu bị kẹt như / etc / apache2 / site / có sẵn, v.v., yêu cầu quyền truy cập root.

Tôi có một vài câu hỏi:

Khi chạy trên máy chủ không đầu:

  1. Tập lệnh nào được chạy theo (giả sử tôi không chỉ định người dùng trong mục công việc định kỳ)?
  2. Có ổn không khi chạy tập lệnh sao lưu dưới quyền root - hoặc điều đó đặt ra một câu hỏi bảo mật?

BTW, máy chủ của tôi đang chạy Ubuntu 10.0.4 LTS

Câu trả lời:


15

Nếu bạn có quyền truy cập bảo mật vào tập lệnh đầy đủ và thực hiện các biện pháp phòng ngừa hợp lý, việc chạy một cái gì đó từ root crontab thường không phải là một rủi ro bảo mật.

Nhưng đừng chạy tập lệnh dưới dạng root mà người dùng không root có thể chỉnh sửa hoặc ghi đè. Điều này áp dụng cho các công việc chạy từ cron cũng như tương tác.

Nếu tập lệnh đó bao gồm các tập tin khác cũng áp dụng cho chúng.

Nếu nghi ngờ luôn luôn sử dụng nguyên tắc đặc quyền tối thiểu. Nếu bạn vẫn không chắc chắn, bạn luôn có thể đặt câu hỏi cụ thể trên các diễn đàn và trong IRC.


Luôn luôn có một cách để chạy một cái gì đó với tư cách là người dùng không root. Nếu tất cả những thứ khác không sử dụng sudo để giới hạn người dùng đối với các lệnh cụ thể cũng hạn chế khả năng gây hại.

Vì vậy, với ví dụ bạn đã đưa ra để sao lưu / etc / apache2 / site-Available, tệp đó theo mặc định có thể đọc được bởi bất kỳ ai, do đó ngụ ý rằng nó chỉ có quyền truy cập vào đích mà chỉ có thể ghi được bằng root.

Bạn có thể khắc phục điều đó bằng cách

  • tạo một nhóm được gọi là backupadins (ví dụ)
  • Đặt nhóm trên thư mục đích thành backupadmins
  • thêm một người dùng được gọi là backupuser (ví dụ)
  • thêm sao lưu người dùng vào sao lưu nhóm.
  • làm cho thư mục có thể ghi được bởi nhóm backupadmins
  • chạy công việc định kỳ từ crontab của người dự phòng.

+1 cho các hướng dẫn hữu ích, từng bước. Câu trả lời của bạn đã vô cùng hữu ích. Dù sao tôi cũng định đi theo con đường này, nhưng vì đây là lần đầu tiên tôi làm nó, nên tôi yên tâm khi thấy nó được khuyến nghị ở đây (và khá nhiều người có vẻ đồng ý với đề xuất của bạn).
dùng35402

BTW, nếu tôi tạo nhóm người dùng và người dùng như bạn đề xuất, tôi có thể truy cập / etc / apache / site-Available và các thư mục khác (hoàn toàn đúng), chỉ giới hạn truy cập root?. Làm thế nào để tôi có được xung quanh vấn đề đó?
dùng35402

3

Nó phụ thuộc vào những gì các kịch bản đang làm. Nếu họ đang sao lưu nội dung thì có lẽ họ đã bị root - nếu người dùng độc hại ghi đè lên các tập lệnh này thì có lẽ bạn đã gặp vấn đề lớn hơn.

Nếu họ làm những việc ngu ngốc như thực thi các tập tin được tìm thấy trong các thư mục, hoặc bất cứ điều gì có thể bị ảnh hưởng bởi nội dung của các thư mục web, thì có lẽ bạn cần phải xem xét các lựa chọn thay thế.


2

Hàng triệu công việc định kỳ trên toàn thế giới đang được điều hành tận gốc mỗi ngày (hoặc bất kỳ khoảng thời gian nào chúng được thiết lập để chạy).

Điều quan trọng là các quyền thích hợp được thiết lập. Nếu bạn đang chạy thứ gì đó có thể ghi được bởi mọi người, thì người dùng hoặc quy trình độc hại có thể thay đổi những gì nó đang làm.

Nói chung, các công việc cron được điều hành bởi chủ sở hữu của crontab. Một crontab người dùng có thể là /var/spool/cron/crontabs/usernameví dụ. Cronjobs có trong /etc/crontab, /etc/cron.d/hoặc /etc/cron.hourly(hàng ngày, hàng tuần, hàng tháng) sẽ được điều hành bởi root. Điều quan trọng là quyền sở hữu và quyền cũng đúng đối với các tệp crontab này.

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.