Итак, мой сервер был взломан на прошлой неделе. Хакер атаковал устаревшего стороннего редактора (в php) и внедрил скрипт backdoor в PHP и нанёс серьезный ущерб моим сайтам. Я провел целый уик-энд, читая бэкдор-скрипты и любые вредоносные коды, которые он оставил на моем сервере. И чтобы избежать взлома, я сделал следующее на своем сервере:Является ли мой сервер достаточно безопасным сейчас?
отключить file_upload в PHP. Так как взломанный загрузил бэкдор через PHP, я отключил функцию в php.ini. Так что теперь я могу загружать только через ftp.
disable create_function in php. Ни одна из моих программ не использует эту функцию. Хакер использовал эту функцию так же, как eval(), чтобы выполнять команды в виде строк.
disable popen, exec, system, passthru, proc_open, shell_exec, show_source, phpinfo в php.ini. Эти функции в основном используются скриптом задней двери для изменения моих файлов и каталогов.
Установить suhosin. Найдите юридические функции, вызываемые в eval(), поместите их в файл suhosin.executor.eval.whitelist. Хакер поместил вредоносные коды в мою программу и обрезал его с помощью base64_encode, а затем выполнил их в eval(). Поэтому я разрешаю только пару юридических функций, вызываемых в eval().
Включите suhosin.executor.disable_emodifier. Хакер поместил еще один обфискованный код в мою программу и использовал модификатор preg_replace() e для выполнения любых php-команд, которые он надел в своем браузере. Поэтому он мог загружать или изменять любые файлы на сервере через свой браузер. (Поскольку я отключил file_upload, он больше не мог загружать, но все же он мог изменять и удалять файлы по своему усмотрению).
При отключении create_function, preg_replace() е модификатора и ограничение Eval(), даже есть вредоносные коды остаются неочищенными на моем сервере, хакер не мог ничего сделать. Это 3 наиболее опасных функции в PHP.
- Добавить .htaccess в каждой папке, но в корневой каталог и запрещающего PHP от выполняется непосредственно из браузера:
Order Deny, Allow Deny от всех
я поставил другой * после Php, потому что я нашел бэкдор-файл, который был назван missing.php.DISABLED, и это может быть выполнено, если я не ставил * после php
Установите корневой каталог (единственное место, которое позволяет выполнить .php) только для чтения. Установите все файлы в этой папке только для чтения. Таким образом, хакеру не удалось загрузить какой-либо новый сценарий задней двери в единственный каталог, в котором может быть запущен php. Также он не мог изменять файлы в этом каталоге.
Для входа в WordPress, я добавил
Order Deny, Allow Запретить все
позволяют с xxx.xxx.xxx.xxx
.htaccess в корневом каталоге, где xxx.xxx.xxx.xxx - это мой ip.
- Установить все .htaccess только для чтения.
Ну, это то, что я могу сделать, чтобы обеспечить безопасность моего сервера. Я что-то пропустил?
Благодарим вас за советы.
Значит, вы защищали себя? – zerkms
Никто, кроме вас, не знает, какие у вас есть другие дыры. Большинство проблем написано в коде, а не в конфигурации сервера. – deceze
Где сейчас находится часть _ ", я всегда буду обновлять свой сторонний код" _? Это все еще не гарантия, но если есть какой-то урок, чтобы узнать, это так. – Halcyon