Многие эксплоиты полагаются на возможность выполнения команд в каталоге /tmp
. Администраторы, зная о такой проблеме, часто разбивают диск таким образом, чтобы для /tmp
выделялся свой раздел, который затем монтируется в режиме запрета выполнения файлов.
Однако остаётся одна неприятная проблема: APT может работать неправильно с такой конфигурацией.
В данной статье мы рассмотрим:
- монтирование /tmp в режиме запрета выполнения файлов как для отдельного раздела, так и в случае использования единственного раздела;
- решение проблем с
apt-get
/aptitude
.
Монтирование /tmp
в режиме запрета выполнения файлов для отдельного раздела
Здесь всё очень просто: открываем файл /etc/fstab
и ищем /tmp
. Строка может, например, иметь следующий вид:
К defaults
добавляем два параметра: nosuid
и noexec
(можно еще добавить nodev
):
Очень рекомендую прочитать man mount
, чтобы понять, что nosuid
/noexec
могут, а что нет (и почему /bin/sh /tmp/test.sh
сработает).
После внесения изменений перемонтируем /tmp
:
Создание псевдораздела для /tmp
Если при установке системы диск не был разбит на разделы, есть способ создания псевдораздела. Он ужасный, но работает.
sudo dd if=/dev/zero of=/dev/TMPFILE bs=1024 count=100000
sudo mkfs.ext3 /dev/TMPFILE
Добавляем в /etc/fstab
строку
Некоторые люди говорят, что добавление nodev
конфликтует с дисковыми квотами. Не проверял, не знаю.
После сохранения файла желательно перезагрузиться (и избежать секса с перезапуском сервисов и неожиданной потерей временных файлов). После перезагрузки все должно работать. Проверяется очень просто:
# /dev/loop0 on /tmp type ext3 (rw,noatime,noexec,nosuid,nodev)
Исправление конфигурации APT
В файл /etc/apt/apt.conf
(или в /etc/apt/apt.conf.d/70debconf
, в зависимости от дистрибутива) нужно внести такие изменения:
DPkg::Post-Invoke {"mount -o remount /tmp";};
Прочее
Кроме /tmp
есть еще /var/tmp
…
в RSS пост импортировался некорректно - в GReader все кириллические символы заменены на “?”.
Привет FeedBurner’у… Специально проверил — сервер отдаёт все в UTF-8 и фид проходит валидацию FeedValidator. Куда копать дальше — не знаю.