2015-07-20 175 views
2

有沒有辦法訪問php的proc_open函數的命令歷史記錄?我試圖查看是否有任何存儲的命令出於安全目的。proc_open for php的命令歷史記錄

+0

不是我所聽說過的。 PHP不會自動保留任何正常操作的日誌,只是錯誤和警告。 – Barmar

回答

2

PHP's proc_open()不保留任何形式的歷史,也不保留exec()。然而,當你在你的代碼中使用它的時候,你可以把它包裝起來;但是,您必須編寫自己的歷史記錄處理。即使shell_exec()似乎沒有跟蹤歷史。但是,如果我們稍微忽略PHP,我們可以使用Linux的Audit Subsystem來跟蹤系統上執行的所有命令。一個名爲auditd的守護進程會執行此日誌記錄,您可以通過auditctl進行配置。 Here是關於審覈子系統的更多信息,設置和使用它。

要記錄執行的命令,和它們的參數,使用方法:

auditctl -a exit,always -S execve 

日誌應/var/log/audit.log顯示出來,或任何你的發行地方審計日誌。

auditctl有許多選項可以指定記錄哪些程序以及記錄哪些用戶的活動。

您可以使用-F euid=<UID OF PHP USER>-F uid=<UID OF PHP USER>將此限制爲PHP/Apache用戶。

+0

我很欣賞有關如何保存命令歷史記錄的信息,但我的安全問題是不想保存它。是否有任何文件說明它不跟蹤歷史? – Bwata

+0

@Bwata不,因爲沒有理由期待它會。 Shell歷史文件只跟蹤鍵入到交互式shell中的命令,而不是直接或間接在系統上運行的每個命令。 – duskwuff

相關問題