Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
HistoryПеревод нужен?
In the 1940s and 1950s, before the development of virtual memory, all larger programs had to contain logic for managing two levels of storage (primary and secondary); one such management technique is overlaying. The main reason for introducing virtual memory was therefore not simply to extend primary memory, but to make such an extension as easy as possible for programmers to use.
После обновления одного из скриптов пошел жесткий лог ошибок, увеличивался он со скоростью гигабайт/минута
Все разделы, куда обычный пользователь имеет права на запись (/home; /tmp; /var/tmp), необходимо вынести в отдельные разделы.С /home — возможно, остальные — не факт, что нужно:
при переустановке системы нет необходимости впопыхах переносить данные пользователей на другие носители / восстанавливать что откопалось из протухших бэкапов годовалой давностиКто восстанавливает /tmp и /var/tmp? И кто их вообще бэкапит?
получаем возможность монтировать данные разделы с noexec, чтобы злостные кулхацкеры не запускали всякую дрянь в вашей системе.Бесполезно и даже вредно (кроме параноидально настроенных серверов, но их администраторам не нужны такие статьи).
спасаемся от hard-link атаки
можем использовать в /tmp файловую систему ext2 (журналирование здесь ни к чему, т.к. в случае сбоя восстанавливать ничего не нужно)А можем и не использовать. Зависит от конкретного случая же.
Стоит помнить, что у нас есть замечательный /var/log, который очень любит забиваться логами под завязкуman logrotate
Все подобные разделы (/var; /home; /tmp) так же желательно вынести за пределы корня.Ага. Вынести /var, поставить systemd, получить проблемы на ровном месте.
Весьма сомнтельная мера, однако не раз встречал подобную рекомендацию: монтировать /usr в readonly.
на пользовательских разделах стоит ставить nosuid и nodev.Нет, их нужно ставить на сменных носителях. Пользовательским разделам это побоку.
Бесполезно и даже вредноА в чем проявляется вред?
Кто восстанавливает /tmp и /var/tmp? И кто их вообще бэкапит?Ну там же написано, что нет необходмости переносить _данные пользователей_, а не данные с /tmp, /vat/tmp и /home.
Сколько SUID-файлов подвержено уязвимостям?
man logrotateУвы, logrotate не спасает от внезапного переполнения логов по вине форс-мажорного случая. Это работа мониторинга, однако не всегда бывает возможность моментально исправить косяк.
Сколько SUID-файлов подвержено уязвимостям?
А в чем проявляется вред?
В сети полно бинарников для брутфорса паролей, попытки повышения привилегий и т.д. noexec защищает именно от них.
Насчет run файлов и различных скриптов в пакетах, то тут стоит немного перенастроить менеджер пакетов.
на сервер.
В практически любой системе есть тьюринг-полный скриптовой язык. От python bruteforcer.py ни один noexec не спасёт.Тем не менее на одну лазейку будет меньше. Спится спокойнее.
На девелоперской машине далеко не всё управляется пакетным менеджером. Как и на многих серверах. Закрытых программ полно.Для закрытых программ не из репозитория есть /opt. Для открытых программ не из репозитория есть админ, который собирает пакеты. Если админ этого не делает, то это не очень хороший админ (речь идет про бинарные дистрибутивы).
А серверы слишком разные, чтобы давать хоть какие-то общие рекомендации.Общие принципы настройки любого сервера приблизительно одинаковые.
mount --bind -o noexec /tmp/ /tmp/разбивку сервера всегда надо делать на 100-200Mb /boot + LVM.
на серверах не надо бекапить /home
а не тупо использовать 1% возможностей железа
С виду простой вопрос на самом деле таит в себе множество подводных камней. Если, конечно же, дело касается серверов. На десктопах все гораздо скучнее и серее.
/dev/ad4s3b none swap sw 0 0
/dev/ad4s3a / ufs rw 1 1
/dev/ad4s3e /tmp ufs rw,noexec 2 2
/dev/ad4s3f /usr ufs rw 2 2
/dev/ad4s3f /usr/home ufs rw,nosuid,nodev 2 2
/dev/ad4s3d /var ufs rw,nodev 2 2собой нужды в свопе на системах нынче нет.
Как и почему следует разбивать диск в никсах