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

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

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

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

Монтирование /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

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn
  • SaveThis.ru

Связанные записи

31
Дек
2008

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

  1. Николай Громов (nicothin) says:

    в RSS пост импортировался некорректно - в GReader все кириллические символы заменены на “?”.

    • Vladimir says:

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

Подписаться на RSS-ленту комментариев к статье «Запрет выполнения файлов на /tmp» Trackback URL: http://blog.sjinks.org.ua/security/467-making-tmp-non-executable/trackback/

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

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

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

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