Рейтинг:-2

Полное руководство по переходу с сервера Ubuntu 20.04 с одним на несколько разделов в уже установленной системе с использованием LVM

флаг tr

Название - моя просьба. Я читал несколько часов и нашел руководства по перемещению /home в раздел и /tmp в раздел. Но нет для преобразования всех рекомендуемых каталогов в разделы для Ubuntu Server. Один учебник приблизился, но затем проигнорировал очевидно необходимый шаг копирования данных из предыдущих каталогов в новые разделы.

Во всяком случае, после многих часов я все еще не нашел учебник, который охватывает мою довольно распространенную ситуацию.

Ситуация:
Я установил Ubuntu Server на серверы Prod и Test (vps и virtualbox соответственно), немного поработал. Читая руководства по усилению защиты сервера, я понял, что лучше всего иметь /boot /home /swapfile /tmp /usr и var... /opt? все на отдельных разделах для управления ресурсами и по соображениям безопасности.

Правильный способ создания вышеупомянутых разделов — использование LVM.

Однако ни в одном из руководств не обсуждаются / не рекомендуются размеры разделов (пропорционально, поскольку, очевидно, разные системы имеют разное доступное дисковое пространство, у меня 80 ГБ на / )

Кроме того, в некоторых руководствах упоминаются необходимые изменения в /etc/fstab а некоторые нет.

Моя цель состоит в том, чтобы преобразовать мою установку с одним разделом размером 80 ГБ в несколько разделов, а затем защитить разделы от распространенных атак и эксплойтов, используя: комбинацию узел, noexec, nosuid в /etc/fstab

Я могу целыми днями тестировать и ломать разные конфигурации в виртуальном боксе... Или какой-нибудь красивый и/или красивый"Гуру по разделам сервера Ubuntu" может публиковать простую для понимания (промежуточную пользовательскую целевую аудиторию) полное руководство как я описал выше, и станьте интернет-известными, так как многие пользователи, размещающие свои собственные проекты на vps, будут вечно любить и обожать вас. :-)

ОБНОВИТЬ
Первоначально я не публиковал руководство по усилению защиты основного сервера, потому что не хотел, чтобы этот пост превратился в «дискуссию» по поводу очень тщательной работы этого парня. Однако, оглядываясь назад, я думаю, что людям, которые хотят ответить на этот пост, было бы полезно увидеть реальные преимущества безопасности, которых я пытаюсь достичь.

https://linoxid.com/ultimate-guide-secure-ubuntu/

флаг in
Вы пытаетесь использовать разные *разделы* или разные *тома*? Хотя они могут казаться одинаковыми с высоты 30 000 футов, внутри стойки высотой 2U они работают немного иначе.Поскольку вы пытаетесь переместить основные каталоги, самый простой способ сделать это — использовать Ubuntu Desktop Live Session, который даст вам полный контроль над устройствами хранения Ubuntu Server ... но я не вижу большой выгоды. здесь. Как человеку, который использовал Ubuntu Server более десяти лет в самых разных ситуациях, такого рода настройка никогда не была необходима. LV для данных? Да. ЛВ на все? Нет ...
nightwatch avatar
флаг tr
Разница в объеме и разделе @matigo определенно нова, мне придется читать больше. Исходя из вашего опыта, какие каталоги должны быть на разных «разделах», учитывая мое ограниченное понимание? Только /tmp и /home? и просто не беспокоиться об остальных?
флаг in
Не вдаваясь слишком далеко в «мнения», единственные вещи, которые обычно нуждаются в собственном томе/разделе на Ubuntu Server, — это данные, которые наиболее доступны/важны. Если это база данных/домен/почтовый сервер, то БД должна быть на очень быстром устройстве, а журналы на отдельном устройстве. Если это веб-сервер, то это действительно не имеет значения, потому что вся система одноразовая. Обычно я считаю, что основная ОС сама по себе не имеет значения, поскольку ее можно перестроить с нуля менее чем за час (в худшем случае), и она прекрасно работает с настройкой по умолчанию. Только данные (и логи) имеют значение... (для *моего* флота)
nightwatch avatar
флаг tr
Я понимаю ваши рассуждения и логику. Поэтому я должен сосредоточить свою энергию на перемещении /home (каталог my data/public_html) и /var/log на отдельные разделы, как вы правы с vps. Я могу восстановить саму систему за считанные минуты. Любые рекомендуемые чтения/учебники для достижения этого?
флаг in
[Этот ответ 10-летней давности] (https://askubuntu.com/a/50539/1222991) актуален и сегодня.Поскольку вы также работаете с некоторыми виртуальными машинами, обязательно сначала потренируйтесь на этих экземплярах, если вы беспокоитесь о том, чтобы вывести производственную систему из строя ошибочным шагом. `/var/log` должен находиться в другом месте только в том случае, если вы записываете *много* данных (20 МБ/с и более), что бывает очень редко. Если вы просто используете веб-сервер, достаточно иметь свой код в GitHub (или в каком-либо другом репозитории) и резервное копирование загруженных данных и SSH вне системы без отдельных томов/разделов.
флаг in
Если вашей основной целью является защита данных от различных форм онлайн-атак, самое большое одолжение, которое вы можете сделать сами, — это использовать AppArmor и несложный брандмауэр (ufw). Одни только эти два инструмента заблокируют 99,9% тупой чепухи, которую проигравшие швыряют на ваш сервер. Если вы используете сайт WordPress с плагином, который получает pWn3d, то AppArmor гарантирует, что Apache не сможет писать вне `/var/www`, поэтому базовая ОС будет в основном безопасной, пока вы не возитесь со структурами разрешений системы. .
nightwatch avatar
флаг tr
Спасибо за точку в правильном направлении. Я прочитал достаточно руководств по усилению безопасности веб-серверов, чтобы у меня закружилась голова. Что касается брандмауэров. Я использую Virtualmin с Firewalld, и у меня есть брандмауэр VPS, предоставленный моим интернет-провайдером, этого должно быть достаточно вместо UFW.. (Пожалуйста, поправьте меня, если я ошибаюсь.)
nightwatch avatar
флаг tr
@matigo, спасибо за то, что позволили выбрать свой мозг. Я отложу свою паранойю и вернусь к разработке веб-сайтов. Наслаждайся своими выходными.
Рейтинг:2
флаг eg

Я думаю, что обычно разделение вещей на разные файловые системы не помогает/улучшает безопасность. Если кто-то взломает систему во время ее работы, все равно все будет смонтировано, и нет никакой логической разницы в том, чтобы все было в одной файловой системе. Какие доводы приводились в изученном вами материале?

Тем не менее, это может повысить производительность (другие файловые системы или другое оборудование ниже этих точек монтирования) и сократить время аварийного восстановления (например,если только SSD, на котором хранился /var, сгорел, вам нужно только восстановить эту резервную копию, а все остальное останется работать).

Вы спрашивали о рекомендуемых размерах разделов:

  • За / у вас хорошо с 15-20 ГБ. Мне никогда не требовалось больше для сервера (запуск веб-сервера + почтовый сервер).
  • менять Я обычно ставлю на собственный том/раздел, который имеет тот же размер, что и оперативная память, просто для того, чтобы могла работать приостановка на диск. Раньше люди рекомендовали размер 2xRAM, но с нынешними размерами RAM, когда вы сталкиваетесь с ситуацией, когда вам нужен серьезный объем подкачки, у вас все равно возникают проблемы. Вы заметите это по сильному замедлению, и вам следует быстро увеличить доступную оперативную память.
  • /ботинок просто нужно 500 МБ, что дает место для 8+ версий ядра + initrd. Обязательно запустите автоматическое удаление часто, чтобы сохранить его обрезанным после обновления ядра.
  • я бы оставил /usr и /опт как каталоги на /, просто не вижу смысла перемещать их в свои файловые системы.
  • Как описано в это руководство по закалке, имеющий отдельный том для /tmp имеет смысл, так как позволяет вам сделать этот доступный для записи каталог более ограниченным - как в том, сколько места он может использовать из полностью доступного пространства, так и в том, что можно сделать с файлами, которые там хранятся. Руководство рекомендует использовать опции nodev, nosuid и noexec при монтировании файловой системы. Руководство дает только команды монтирования для «одноразового использования». Преобразование этого в строку в /etc/fstab будет означать, что вы поместите узел, nosuid, noexec в 4-й (параметры) столбец строки, где вы монтируете выделенный том /tmp на /tmp.
  • Это оставляет нас с /дом и /вар - это обычно "важные" вещи. На моих серверах /дом почти пусто, но /вар содержит public_html, журналы, базы данных и т. д. Поэтому я сохраняю /дом как каталог на /, но /вар определенно получает свой собственный том и резервируется чаще всего. Дайте ему все оставшееся пространство после того, как было сделано выше.

Затем вы спросили, как сделать переход:

  • В работающей системе, где все включено /, подключите новый диск (файл VDI, ...), подготовьте его с помощью pvcreate, lvcreate и файловых систем по вашему выбору (например, mkfs.ext4).
  • Затем создайте временные точки монтирования в /mnt, например. /mnt/newroot, /mnt/newvar, ... и смонтировать туда файловые системы.
  • Затем используйте rsync -xaP <источник>/ <назначение>/ для каждой из ваших файловых систем. Параметр «-x» предотвратит пересечение границ файловой системы rsync, т. е. если вы rsync -xaP //mnt/newroot/ он также не будет копировать /var, /home или даже все новые файловые системы, смонтированные в /mnt. «-a» гарантирует, что разрешения и т. д. будут переданы без изменений, а «-P» показывает прогресс. Для получения подробной информации см. человек rsync.

После этого отредактируйте /mnt/newroot/etc/fstab и убедитесь, что вы перечислили все файловые системы в соответствующих точках монтирования. Если вы зашли так далеко, это не должно быть слишком сложно (поскольку вы выбрали все имена /dev/mapper/..., файловые системы и т. д.).

Вам также придется использовать grub-install и, возможно, update-grub, чтобы сделать новый диск загрузочным, но я не уверен в точной процедуре. С виртуальными машинами вы можете легко попробовать его, и если он не загружается, снова подключите старый диск и исправьте его.

Для справки, вот сеанс оболочки, который дает вам некоторые конкретные команды для разбиения на разделы + LVM + форматирование + ссылки в темах fstab. Обратите внимание, что вам, скорее всего, придется изменить их, например, если ваше устройство не /dev/sda, если вы хотите использовать другие файловые системы и т. д. - это просто пример.

# После использования fdisk для создания одного раздела, охватывающего все устройство,
# выглядит так:
root@ubuntu:~# fdisk -l /dev/sda
Диск /dev/sda: 100 ГиБ, 107374182400 байт, 209715200 секторов
Модель диска: VBOX HARDDISK   
Единицы: секторы 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер ввода/вывода (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 18ACB4C9-3F33-7041-8BEB-D819F138A809

Размер начальных и конечных секторов устройства Тип
/dev/sda1 2048 209715166 209713119 100G Linux LVM

# Создаем физический том для LVM
root@ubuntu:~# pvcreate /dev/sda1   
  Физический том "/dev/sda1" успешно создан.
  
# Создайте группу томов с именем "vg1" для LVM, которая будет
# храним все наши логические тома
root@ubuntu:~# vgcreate vg1 /dev/sda1
  Группа томов "vg1" успешно создана

# Создайте логические тома, как описано выше
root@ubuntu:~# lvcreate --name root --size 20G vg1     
  Создан логический том "root".
root@ubuntu:~# lvcreate --name swap --size 8G vg1
  Логический том "своп" создан.
root@ubuntu:~# lvcreate --name boot --size 500M vg1
  Создан логический том "boot".
root@ubuntu:~# lvcreate --name tmp --size 5G vg1
  Создан логический том "tmp".

# Посмотрите на логические тома
root@ubuntu:~# lvs
  LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  загрузка vg1 -wi-a----- 500.00м                                                    
  корень vg1 -wi-a----- 20.00g                                                    
  своп vg1 -wi-a----- 8.00g                                                    
  tmp vg1 -wi-a----- 5.00g                                                    

# Посмотрите на группу томов и посмотрите, сколько места осталось
root@ubuntu:~# vgs
  VG #PV #LV #SN Attr VSize VFree  
  vg1 1 4 0 wz--n- <100,00 г <66,51 г

# Использовать оставшееся место для последнего логического тома, var
root@ubuntu:~# lvcreate --name var --size 66.5G vg1
  Создан логический том "var".

# Посмотрите еще раз на тома
root@ubuntu:~# lvs
  LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
  загрузка vg1 -wi-a----- 500.00м                                                    
  корень vg1 -wi-a----- 20.00g                                                    
  своп vg1 -wi-a----- 8.00g                                                    
  tmp vg1 -wi-a----- 5.00g                                                    
  var vg1 -wi-a----- 66.50g

# Отформатировать все тома с файловой системой ext4
для i в /dev/mapper/vg1-*; сделать mkfs.ext4 $i; сделано
# Превратить vg1-swap в пространство подкачки
mkswap /dev/mapper/vg1-своп

# Создайте записи fstab, которые выглядят так
/dev/mapper/vg1-root / ext4 по умолчанию 0 1
/dev/mapper/vg1-boot /boot ext4 по умолчанию 0 2
/dev/mapper/vg1-var /var ext4 по умолчанию 0 2
/dev/mapper/vg1-tmp /tmp ext4 nosuid,nodev,noexec 0 0
/dev/mapper/vg1-swap нет swap sw 0 0
nightwatch avatar
флаг tr
это одно из многих руководств по усилению защиты сервера, которым я следил. Обратите внимание на меры безопасности для fstab, которые были повторены в других местах. https://linoxid.com/ultimate-guide-secure-ubuntu/
флаг eg
Спасибо. Рекомендации действительно имеют смысл, особенно в части исчерпания ресурсов. Я не подумал об этом. Не уверен, что происходит со службами, которые используют /tmp, когда он заполнен (даже если он находится на другом томе). Возможно, они все равно перестанут работать и, таким образом, вы все равно будете страдать от DoS.
nightwatch avatar
флаг tr
не могли бы вы обновить свой ответ на основе руководства по укреплению?
флаг eg
@ночной дозор готов :)
nightwatch avatar
флаг tr
Я высоко ценю ответ, и я уже проголосовал за ответ, поскольку он полезен, и я извлек из него уроки. Однако я надеялся на практические примеры создания разделов с помощью LVM, как это рекомендовано в руководстве. Из различных руководств я знаю, что создание раздела /tmp несколько отличается от создания раздела /home. Эти тонкости могли стоить мне часов.
флаг eg
@nightwatch Я добавил сеанс оболочки, в котором я выполнил разбиение на разделы + LVM + форматирование + ссылки в fstab, и добавил его в ответ, но это все еще просто пример. В вашем конкретном случае это может выглядеть иначе. Я думаю, вы достигли бы своей цели быстрее, если бы задавали конкретные вопросы, когда застряли в какой-то точке.
nightwatch avatar
флаг tr
"для президента?" у вас есть мой голос :-) спасибо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.