Tôi đang viết một chương trình sinh ra các tiến trình con. Vì lý do bảo mật, tôi muốn giới hạn những quy trình này có thể làm gì. Tôi biết các biện pháp an ninh từ bên ngoài chương trình như chroot
hoặc ulimit
, nhưng tôi muốn làm điều gì đó hơn thế. Tôi muốn giới hạn các cuộc gọi hệ thống được thực hiện bởi quá trình con (ví dụ: ngăn chặn các cuộc gọi đến open()
, fork()
và những thứ như vậy). Có cách nào để làm điều đó? Tối ưu, các cuộc gọi hệ thống bị chặn sẽ trở lại với một lỗi nhưng nếu điều đó là không thể, sau đó giết chết quá trình cũng tốt.Ngăn chặn các quá trình thực thi các cuộc gọi hệ thống nhất định
Tôi đoán nó có thể được thực hiện wuth ptrace()
nhưng từ trang người đàn ông tôi thực sự không hiểu làm thế nào để sử dụng nó cho mục đích này.
Bạn có thể muốn SELinux http://en.wikipedia.org/wiki/Security-Enhanced_Linux Tôi không chắc chắn 100%, nhưng nó phải có API lập trình. –
['prctl (PR_SET_SECCOMP, ...)'] (http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html) có thể là những gì bạn muốn. Đó là gần với "không cho phép syscalls" như bạn có thể nhận được. – Damon
Vấn đề với 'prctl (PR_SET_SECCOMP, ...)' là nó cũng chặn cuộc gọi 'exec()', vì vậy nó không thể sử dụng được với tôi. – petersohn