Запрет выполнения файлов на /tmp

Многие эксплоиты полагаются на возможность выполнения команд в каталоге /tmp. Администраторы, зная о такой проблеме, часто разбивают диск таким образом, чтобы для /tmp выделялся свой раздел, который затем монтируется в режиме запрета выполнения файлов.

Однако остаётся одна неприятная проблема: APT может работать неправильно с такой конфигурацией.

В данной статье мы рассмотрим:

  • монтирование /tmp в режиме запрета выполнения файлов как для отдельного раздела, так и в случае использования единственного раздела;
  • решение проблем с apt-get/.

Монтирование /tmp в режиме запрета выполнения файлов для отдельного раздела

Здесь всё очень просто: открываем файл /etc/fstab и ищем /tmp. Строка может, например, иметь следующий вид:

[-]
View Code Text
/dev/sdc2       /tmp            ext3    defaults,noatime  0       1

К defaults добавляем два параметра: nosuid и noexec (можно еще добавить nodev):

[-]
View Code Text
/dev/sdc2       /tmp            ext3    defaults,nosuid,noexec,noatime  0       1

Очень рекомендую прочитать man mount, чтобы понять, что nosuid/noexec могут, а что нет (и почему /bin/sh /tmp/test.sh сработает).

После внесения изменений перемонтируем /tmp:

[-]
View Code Bash
mount /tmp -o remount

Создание псевдораздела для /tmp

Если при установке системы диск не был разбит на разделы, есть способ создания псевдораздела. Он ужасный, но работает.

[-]
View Code Bash
# Размер псевдораздела: 100,000*1024=102,4M
sudo dd if=/dev/zero of=/dev/TMPFILE bs=1024 count=100000
sudo mkfs.ext3 /dev/TMPFILE

Добавляем в /etc/fstab строку

[-]
View Code Text
/dev/TMPFILE       /tmp            ext3    loop,nosuid,noexec,nodev,noatime,rw  0       0

Некоторые люди говорят, что добавление nodev конфликтует с дисковыми квотами. Не проверял, не знаю.

После сохранения файла желательно перезагрузиться (и избежать секса с перезапуском сервисов и неожиданной потерей временных файлов). После перезагрузки все должно работать. Проверяется очень просто:

[-]
View Code Bash
grep "/tmp" /etc/fstab
# /dev/loop0 on /tmp type ext3 (rw,noatime,noexec,nosuid,nodev)

Исправление конфигурации APT

В файл /etc/apt/apt.conf (или в /etc/apt/apt.conf.d/70debconf, в зависимости от дистрибутива) нужно внести такие изменения:

[-]
View Code Text
DPkg::Pre-Invoke {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

Прочее

Кроме /tmp есть еще /var/tmp

Автор: ; опубликовано в: Linux, Безопасность; метки: aptitude, Linux, безопасность
31
Дек
2008

RSS Комментарии к статье «Запрет выполнения файлов на /tmp» (2)  »

  1. в RSS пост импортировался некорректно – в GReader все кириллические символы заменены на «?».

    • Привет FeedBurner’у… Специально проверил — сервер отдаёт все в UTF-8 и фид проходит валидацию FeedValidator. Куда копать дальше — не знаю.

Пожалуйста, не используйте эту форму для комментирования! Данная форма предназначена исключительно для ботов.

Оставить комментарий к записи «Запрет выполнения файлов на /tmp»

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя

गते गते पारगते पारसंगते बोधि स्वाहा