Собственно… меня снова начали спрашивать куда я пропал… Да-да-да… стыдно. На выходных сплю по 18 часов, а в будни — смотрим тег #yakit в твиттере. Ну и работа стала отнимать намного больше времени, в связи с вводом в строй кластера. А ещё на днях начну пробовать UEC (его же допилили, да?) на рекордных 5 серверах! хД
Ну а теперь перейдем к делу. Спросили меня тут — как быстрее всего защитить систему (ну в смысле сам Linux) от тех, кто может загружать php-файлы на сервер. Я немного подумал и решил, что нужна защита от php-шеллов. Как обычно, я оказался прав. Решение нашлось отличное, пуленепробиваемое, работающее…. Ну в общем мы воткнем библиотеку amon.so. Решение работает, как в Debian, так и в мильёне остальных дистрибутивов.
Если нет компилятора, поставим его:
root@host:~# apt-get install build-essential
Скачаем библиотеку amon:
root@host:~# wget http://www.lucaercoli.it/amon/amon.c
Скомпилируем её:
root@host:~# gcc -fPIC -shared -ldl -o amon.so amon.c
Положим в более адекватный каталог:
root@host:~# mv ./amon.so /lib/
Далее, представим, что мы используем mod_php для apache2. В файл /etc/apache2/envvars впишем строчку:
export LD_PRELOAD=amon.so
Ну и перезапустим apache:
root@host:~# /etc/init.d/apache2 restart
Если всё проделано правильно — на страничке вывода phpinfo мы увидим упоминание библиотеки amon.so. Теперь через php можно выполнить только следующие системные команды:
"/usr/sbin/sendmail"
"/usr/lib/sendmail"
"/etc/alternatives/lib.sendmail"
"/usr/lib/sm.bin/sendmail"
"/usr/bin/mail"
"/bin/mv"
"/bin/rm"
"/usr/bin/unlink"
"/bin/rmdir"
"/bin/cp"
"/bin/date"
"/bin/bzip2"
"/bin/gunzip"
"/bin/gzip"
"/usr/bin/unzip"
"/bin/tar"
"/usr/bin/host"
"/usr/bin/file"
"/usr/bin/uptime"
"/bin/grep"
"/usr/bin/diff3"
"/bin/pwd"
В общем-то при правильных правах на файлы системы повредить при помощи этих команд будет уже проблематично. Хотя и можно. Навскидку — корень забить +)
Забавно, я найти такое в свое время не смог. Будет интересно почитать еще пару статтей про защиту.
Больше спасибо
А если у меня nginx как быть с
В файл /etc/apache2/envvars впишем строчку:
export LD_PRELOAD=amon.so
??
Ответил на почту, оно по сути под апач собрано. Пробуйте в php.ini вписывать.
apt-get install build-essential
а удалять кто будет? гцц постоянно не сервере не нужен.
Скорее всего, пригодится в ближайшее время.
Правильным было бы собрать дебку по соседству, согласен.
Здравствуйте. Сделал все по инструкции, после ребута апача получаю:
# /etc/init.d/apache2 restart
Restarting web server: apache2/etc/init.d/apache2: line 75: /bin/pidof: Нет такого файла или каталога
/etc/init.d/apache2: line 77: /bin/cat: Нет такого файла или каталога
/etc/init.d/apache2: line 75: /bin/pidof: Нет такого файла или каталога
/etc/init.d/apache2: line 77: /bin/cat: Нет такого файла или каталога
/etc/init.d/apache2: line 75: /bin/pidof: Нет такого файла или каталога
/etc/init.d/apache2: line 77: /bin/cat: Нет такого файла или каталога
/etc/init.d/apache2: line 107: /bin/pidof: Нет такого файла или каталога
/etc/init.d/apache2: line 202: /usr/bin/env: Нет такого файла или каталога
/lib/lsb/init-functions: line 320: /bin/echo: Победа
Как избавиться? Можно на почту ответ.
Вам все проблемы написали по русски.
Подскажите пожалуйста, а как его собрать на 8 дебиане 64 бит
Да так же, в общем-то.
На что ругается?
Рабочая ссылка: https://www.lucaercoli.it/amon.c