Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Защита директории TMP на веб-сервере от выполнения

profile picture
Author
Daniel McDonald
Published
2019-03-29
Time to read
3 minutes reading time

About the author- Даниэль — веб-разработчик и дизайнер. Его компания была основана в 2013 году

Введение

Часто веб-серверы пишут в директорию tmp. Было бы хорошо иметь эту директорию чистой и безопасной. Хороший способ защитить директорию tmp на машине linux — запретить выполнение скриптов в ней. Я покажу, как проверить и защитить директорию tmp.

Обратите внимание, что иногда панели управления сервером требуют выполнения в папке tmp.

Шаг 1 — Вход на веб-сервер

Во-первых, войдите на свой сервер через SSH. Убедитесь, что у вас есть права суперпользователя.

Шаг 2 — Проверка директории tmp

С помощью следующей команды вы можете увидеть, есть ли уже директория tmp:

root@server:~# mount | egrep --color -w '^(tmpfs|/tmp)|/tmp'

Скопируйте всю команду, кроме знака #.

Выход может быть что-то вроде этого: «/filesystems/tmp_fs on /tmp type ext3 (rw,nosuid,noexec,relatime,data=ordered)» Если нет, то выходные данные могут выглядеть следующим образом: "tmpfs on /tmp type tmpfs (rw,nosuid,nodev)"

Если такого вывода нет, пожалуйста, продолжайте.

Шаг 3 — Создание раздела 4 ГБ

Выполните три команды одну за другой.

root@server:~# mkdir /filesystems # создание новой директории
root@server:~# dd if=/dev/zero of=/filesystems/tmp_fs seek=2048 count=2048 bs=1M # создание файла размером 2ГБ и именем tmp_fs
root@server:~# mkfs.ext3 /filesystems/tmp_fs # создание файловой системы ext3 в файле из команды выше

Шаг 4 — Настройка монтирования при перезагрузке

Добавьте следующий код в /etc/fstab.

Открыть fstab:

root@server:~# nano /etc/fstab

Вставьте следующее в конец файла:

/filesystems/tmp_fs /tmp ext3 noexec,nosuid,loop 0 0

Важно: в конце файла fstab должна быть пустая строка, иначе fstab не будет работать после перезагрузки.

Сохраните файл и продолжайте.

Шаг 5 — Резервное копирование текущей директории tmp

root@server:~# cd /
root@server:~# cp -R /tmp /tmp_backup

Шаг 6 — Монтирование новой директории tmp

Это будет сделано с опциями noexec, nosuid и rw.

root@server:~# mount -o loop,noexec,nosuid,rw /filesystems/tmp_fs /tmp

Установите правильные разрешения:

root@server:~# chmod 1777 /tmp

Шаг 7 — Копирование старых файлов в новое место

root@server:~# cp -R /tmp_backup/* /tmp/
root@server:~# rm -rf /tmp_backup

Шаг 8 — Проверка директории tmp и попытка выполнения (необязательно)

Проверьте, существует ли новый раздел:

root@server:~# df -h
root@server:~# mount

Проверьте, можно ли выполнить какой-нибудь скрипт:

root@server:~# cp /bin/ls /tmp
root@server:~# chmod 755 /tmp/ls

Выполните ls:

root@server:~# /tmp/ls

Если все настроено верно, то вы должны получить «Permission denied».

Удалить временный скрипт можно при помощи команды:

root@server:~# rm /tmp/ls

Вывод

Ваш веб-сервер теперь защищен от плохих скриптов и атак на директорию tmp. Если у вас есть какие-либо вопросы или пожелания, пожалуйста, свяжитесь со мной.

Лицензия: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue
Try Hetzner Cloud

Get €20/$20 free credit!

Valid until: 31 December 2025 Valid for: 3 months and only for new customers
Get started
Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more