В качестве примера рассматриваем небольшое производство (металлообработка, столярный цех), состоящее из нескольких обрабатывающих центров (станки с ЧПУ, возможно Windows-станция в качестве управляющего контроллера). На производстве 3-5 операторов, 2-3 конструктора, бухгалтер, менеджер, руководитель. Компания не может содержать на постоянной основе сетевого администратора или специалиста по ИБ. На производстве вообще нет специалистов с необходимыми компетенциями по организации компьютерных сетей, администрированию WINDOWS или Linux. Знания персонала ограничены прикладными программами на уровне пользователя, знание операционных систем и сетей на «бытовом уровне». Основная задача – обеспечить устойчивую работу оборудования в производственном сегменте, обеспечить безопасное хранение данных, защитить критичные данные от вируса-шифровальщика или уничтожения.

Схема организации ЛВС
Схема организации ЛВС

Для построения ЛВС предприятия выделяем два сегмента сети: административный и производственный. Для организации каждого сегмента используется отдельный коммутатор (понятно, самый простой, неуправляемый). Сегменты соединяются через шлюз (специальный ПК с двумя сетевыми интерфейсами и Linux в качестве операционной системы). Шлюз одновременно является файл-сервером. Максимально простой и бюджетный вариант организации сети, не требующий постоянного внимания сетевого администратора. Выход в интернет имеет только административный сегмент сети через простой маршрутизатор с NAT.

Производственный сетевой сегмент – предполагается, что в сегменте расположены обрабатывающие центры и другое производственное оборудование (под управлением специализированного ПО). При наличии сетевых интерфейсов оборудование подключается к коммутатору производственного сегмента и может обмениваться файлами с Linux-шлюзом (FTP, Samba сервер). При отсутствии сетевых интерфейсов, файлы с Linux-шлюза на оборудование переносятся USB-накопителем, который используется только в производственном сегменте (подключение этого накопителя к компьютерам за производственным сегментом не допускается). Из производственного сегмента ЛВС нет выхода в административный сегмент сети или внешнюю сеть (интернет), сквозная пересылка пакетов через шлюз из производственного сегмента в административный запрещена.

В административном сегменте расположены все офисные компьютеры и рабочие места конструкторов. Все компьютеры работают под управлением Windows. Домена или какого-либо ограничения прав пользователей нет, любой пользователь может получить полные права на своем компьютере, может устанавливать произвольное ПО, свободно «бродить» по внешней сети. Каждый пользователь имеет локальную папку с критической для производства информацией, необходимо обеспечить копирование этой информации и надежное хранение. Административный сегмент подключен через маршрутизатор с NAT к внешней сети (интернет). Доступ к компьютерам в административной сети из внешней сети не предполагается. Минимальные требования по защите административного сегмента: применение антивирусной защиты на рабочих местах, ограничение использования переносных накопителей, периодическое резервное копирование важной информации, настройка фильтрации пакетов и NAT на маршрутизаторе во внешнюю сеть. Также для обеспечения информационной безопасности необходимо отключить на маршрутизаторе и коммутаторах учетные записи «по умолчанию», отключить протокол telnet, запретить протокол SSH на WAN интерфейсе маршрутизатора.

Основной элемент для разделения производственной и административной сетей - шлюз на базе Linux-desktop. Работа на Linux-desktop практически не отличается от работы в Windows, сложности для «простого» пользователя могут возникнуть только на этапе установки и настройки. На практике все достаточно просто, существуют подробные примеры и пошаговое описание, человеку с минимальными познаниями и техническим мышлением Linux вполне по силам. Главное не пугаться незнакомых слов и не читать форумы недоспециалистов, сыплющих бесконечными аббревиатурами и непонятным сленгом.

Шлюз на базе Linux-сервера несколько сложнее, не имеет графического интерфейса и требует работы в терминале. У простого пользователя Linux без графического интерфейса вызывает панику, поэтому вариант с Linux-сервером рассматривать не будем.

Использовать Linux на шлюзе более целесообразно, так как Linux не подвержен всем вирусам, активным в Windows, соответственно обеспечивает более надежное разделение сетей и хранение данных. Все рассуждения о наличии вирусов для Linux сводятся либо к давно исчезнувшим версиям как вирусов, так и самого Linux, либо к уязвимостям в специализированных приложениях (типа интернет магазин или некоторые версии WEB-сервера) и рассуждению о том, что в будущем вирусы для этой операционной системы могут появиться. Реально, для той конфигурации и под те задачи, для которых мы в данном примере используем Linux, на сегодня вирусов нет и вряд ли они появятся. Если в компании совсем нет человека, способного осилить минимальную настройку Linux, целесообразно пригласить специалиста. Установка и настройка Linux требуется один раз, и далее система работает много лет, весь срок службы аппаратного обеспечения. Периодическое обновление системы можно выполнять один-два раза в год, а в данном применении можно вообще не выполнять, система все равно будет устойчиво работать.

Примеры конфигурации Linux-шлюза с пошаговыми инструкциями и конфигурационными файлами будут приведены в следующей части.

Применение протокола FTP со стороны административного сегмента сети, при правильном использовании, позволяет защитить файлы на сервере от вирусов-шифровальщиков. Со стороны производственной сети можно использовать как FTP, так и SMB протокол. Критика по поводу использования FTP-протокола, как старого и уязвимого, в данном случае некорректна, так как мы защищаемся не от атак профессиональных хакеров, а больше от случайного попадания вируса. Использование FTP-протокола соответствует уровню ответственности задачи и предполагаемой квалификации пользователей и сетевого администратора. Возможно вместо FTP использовать SFTP протокол (с шифрованием данных при передаче по сети), это просто потребует дополнительных настроек FTP-сервера, а при работе в пределах локальной сети особого смысла не имеет.

Для обеспечения безопасности производственного сегмента сети необходимо соблюдать определенные правила, исключающие возможность передачи вирусов из административного сегмента в производственный (вариант работы через FTP сервер):

- передача файлов из административного сегмента в производственный должна выполняться через FTP-сервер, установленный на Linux-шлюзе.

- со стороны административного сегмента сети на пользовательских компьютерах настраиваем доступ к соответствующей папке на Linux FTP-сервере (настраиваем средствами Windows, но наиболее целесообразно использовать бесплатный FTP-клиент FileZilla). По необходимости копируем на FTP-сервер файлы, которые требуется передать в производственный сегмент. Не допускается FTP-папки подключать на Windows станции как сетевые диски, чтобы исключить доступ вирусов-шифровальщиков к файлам на FTP-сервере. FTP-клиент FileZilla будет наилучшим решением.

- из Linux-шлюза на обрабатывающие центры файлы могут быть скопированы: для оборудования, подключенного к производственной сети и поддерживающих протокол FTP или SMB файлы передаются по сети, в противном случае файлы переносятся с сервера на обрабатывающий центр через USB-накопитель (повторю, это USB-накопитель используется только в производственном сегменте, подключение этого накопителя к компьютерам за производственным сегментом не допускается). Также для записи файлов на USB-накопитель возможно использовать любой компьютер производственного сегмента.

Работа с USB-накопителем на Linux-desktop не отличается от работы в Windows. Поскольку для Linux нет вирусов, то заразить USB-накопитель через Linux невозможно. Предполагается, что в производственный сегмент передаются специальные файлы, содержащие код для обрабатывающих центров (например G-код), файлы выполнены в специальном формате и не могут содержать вирусы.

Для решения поставленной задачи рассмотрим два варианта Linux-шлюза:

1.     Простой вариант – используем в качестве шлюза между производственным и административным сегментом сети Linux-desktop станцию, без организации RAID-массива, все пользователи подключаются к FTP серверу с одной учетной записью, разграничение доступа к данным пользователей на FTP-сервере отсутствует. Из производственного сегмента также возможен доступ к данным на Linux шлюзе по SMB протоколу (сетевые папки windows).

2.     Более сложный вариант – для хранения данных на FTP-сервере используется RAID1–массив (одновременное хранение данных на двух дисках, зеркальное хранение), каждый пользователь административной сети имеет свою учетную запись и свою папку на FTP-сервере, для хранения информации ограниченного доступа на FTP-сервере выделена специальная папка. Из производственного сегмента также возможен доступ к данным на Linux шлюзе по SMB протоколу (сетевые папки windows).

Поскольку предполагается, что установка ПО Linux-шлюза выполняется пользователем мало знакомым с Linux (или вообще не знакомым), инструкции будут максимально подробными, опытных пользователей Linux просьба отнестись снисходительно (для более простого
понимания каталоги будут называться папками, на манер windows). Все инструкции и примеры по установке и настройке ПО Linux для решения поставленных задач легко можно найти в глобальной сети, в этой статье все необходимые инструкции собраны вместе и оптимизированы под конкретный пример.

Простой вариант. Часть 1. Установка Linux.

Для организации шлюза необходим компьютер с Linux в следующей минимальной конфигурации: рабочая станция средней производительности (минимум процессор с 2-мя ядрами, 4Gb оперативной памяти, самая простая видеокарта), размер жесткого диска определяется предполагаемым объемом хранения данных, для Linux требуется 20Gb свободного места, две сетевые карты для одновременного подключения к производственному и административному сегменту сети.

На станции устанавливается операционная система Linux Ubuntu-desktop. В зависимости от реализации Ubuntu, как и любой Linux, может содержать разное ПО для выполнения одних и тех же функций (например, управление сетевым подключением может выполняться четырьмя абсолютно разными способами), что всегда вызывает сложности для пользователей. Поэтому описанный далее алгоритм конфигурации Linux-шлюза относится к определенной реализации Ubuntu-desktop и может быть не актуальным для других вариантов Linux.

Для примера будем рассматривать Ubuntu в самом простом исполнении «Xubuntu-24.04 desktop» с рабочим столом Xfce с самым легковесным графическим интерфейсом. Для установки необходимо скачать iso-образ с сайта производителя:

https://mirror.yandex.ru/ubuntu-cdimage/xubuntu/releases/22.04/release/xubuntu-22.04.1-desktop-amd64.iso

С помощью утилиты rufus (или аналогичной, или встроенными средствами windows) записать образ на USB-накопитель (флэшку), загрузить будущий Linux-шлюз с USB-накопителя и начать установку. Последовательность установки хорошо описана в документации производителя и проблем вызывать не должна.

https://linuxcool.net/instrukczii/kak-ustanovit-ubuntu-22-04-desktop-poshagovoe-rukovodstvo-s-kartinkami/

Рекомендуется чтобы компьютер при установке был подключен к сети с выходом в интернет. При установки можно выбрать «русский» язык. Обязательно нужно выбрать «Install Xubuntu» для установки, «Minimal Installation» для установки в минимальной конфигурации без офисных приложений, «Erase disk and install Xubuntu» для полной очистки жесткого диска. Настройте учетную запись, в нашем примере ваше имя «ubuntu-desktop», имя компьютера «ubuntu-desktop», имя пользователя будет «ubuntu», обязательно задайте пароль. Настройте местоположение (часовой диапазон). Дождитесь окончания установки. После перезагрузки вы получите вы получите компьютер, работающий под управлением Linux.

Для дальнейшей настройки необходимо подключение к интернет, одна (и только одна!!) сетевая карта компьютера должна быть подключена к коммутатору административной сети или маршрутизатору во внешнюю сеть.

Для управления сетью на Xubuntu-desktop используется приложение «Network Manager», поэтому описание настройки сети будет соответствовать этому приложению. Настройки «по умолчанию» Xubuntu-desktop, как и в Windows, должны обеспечить подключение к роутеру и выход в интернет, что нам и требуется на начальном этапе.

Дальнейшую настройку легче всего выполнить через эмулятор терминала, с использованием командной строки. Да, придется понабивать команды руками, но это самый простой и быстрый способ. Ранее набранные команды в терминале можно просматривать нажатием клавиш «стрелка вверх», «стрелка вниз», для редактирования команды можно перемещаться клавишами «стрелка влево», «стрелка вправо». Запуск команды на выполнение клавишей «ввод, Inter».

Находим в меню запуска и запускаем терминал, получаем черное окно с командной строкой снизу:

ubuntu@ubuntu-desktop:~$ - это приглашение командной строки, ubuntu – это имя пользователя, ubuntu-desktop – это имя компьютера, знак $ означает, что это обычный пользователь (не супер-пользователь).

Проверяем настройки сети:

ip a - вводим команду и смотрим вывод.

Наличие IP адреса «inet 192.168.1.ххх» означает, что компьютер подключен к сети.

Установим необходимые нам приложения (пакеты).

Перед установкой приложений необходимо обновить актуальный список пакетов, вводим команду и смотрим вывод:

sudo apt update – дожидаемся выполнения команды, это обновление списка доступных пакетов; sudo – в начале команды означает, что команда будет выполняться с правами супер-пользователя (в windows это администратор), поэтому система может запросить ввести пароль для подтверждения действия.

Ели обновление пакетов не проходит, необходимо проверить подключение к сети.

После обновления пакетов, вводим следующие команды.

sudo apt install mc – устанавливаем файловый менеджер Midnight Commander, на все вопросы нажимаем «ввод», дожидаемся выполнения команды;

sudo apt install vsftpd libpam-pwdfile apache2-utils – устанавливаем FTP-сервер (vsftpd) и библиотеку от apache для создания виртуальных пользователей, на все вопросы нажимаем «ввод», дожидаемся выполнения команды;

sudo apt install samba – устанавливаем SMB-сервер, на все вопросы нажимаем «ввод», дожидаемся выполнения команды;

Если все прошло, как показано на скриншотах, значит приложения установлены. На всякий случай проверим запущенные службы.

sudo systemctl --type service --no-pager – смотрим все установленные и запущенные службы, обязательно должны быть службы, выделенные на скриншоте.

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

Простой вариант. Часть 2. Настройка сети.

Конфигурацию сети выполним в соответствии со схемой

Предполагается, что административный сегмент сети имеет адреса 192.168.1.ххх, маска сети 255.255.255.0, адрес маршрутизатора для выхода в интернет 192.168.1.1 (шлюз по умолчанию 192.168.1.1.). Это заводские настройки для маршрутизаторов большинства производителей. На маршрутизаторе необходимо выполнить настройку DHCP-сервера, начальный адрес пула IP-адресов указать 192.168.1.2, конечный адрес пула IP-адресов указать 192.168.1.200 (названия параметров могут отличаться для разных маршрутизаторов, можно уточнить в документации на маршрутизатор). Ниже приведены настройки для KEENETIC.

После настройки маршрутизатора, переходим в терминал Linux шлюза.

В терминале вводим команду:

ip a

В выводе команды мы видим список сетевых интерфейсов, на скриншоте показаны три сетевых интерфейса: lo - нас не интересует, ens160 и ens192 – это и есть наши сетевые интерфейсы (сетевые карты). В вашем случае названия могут значительно отличаться (enp0s2, enp1…). Интерфейс ens160, который подключен к административной сети, имеет IP-адрес, на скриншоте выделен желтым.

Теперь необходимо зайти в панель управления Network Manager на рабочем столе и удалить все настройки, созданные «по умолчанию». Открываем панель Network Manager:

Переходим в терминал, проверяем состояние соединений в Network Manager.

sudo nmcli con – nmcli – это консольная утилита управления Network Manager (настройка через терминал), можно конечно настроить и через панель управления, но панель не всегда корректно работает.

Вводим команды:

sudo nmcli con

sudo nmcli dev

Вывод команды должен показать два наших интерфейса в состоянии «disconnected».

Теперь вводим команду:

sudo nmcli con add con-name AdminNet type ethernet ifname ens160 ip4 192.168.1.254/24 gw4 192.168.1.1

– пояснение: nmcli – утилита для настройки, con – от «connection» соединение, add – добавить, con-name AdminNet – имя соединения «AdminNet», имя можно задать любое, type ethernet – тип соединения «ethernet», ifname ens160 – имя интерфейса, указываем имя, которое было в выводе команды «ip a» для административной сети, ip4 192.168.1.250/24 – задаем IP-адрес в соответствии со схемой сети в Приложении 1 (вместо маски 255.255.255.0 указываем /24, это просто разный способ записи), gw4 192.168.1.1 – задаем шлюз для административного сегмента сети.

Если все указали правильно, в выводе увидим «successfully added».

Если где-то ошиблись при наборе команды и создали неправильное соединение, соединение можно удалить командой sudo con del AdminNet.

Создаем соединение для производственной сети в соответствии с схемой.

sudo nmcli con add con-name PrcessNet type ethernet ifname ens192 ip4 192.168.100.1/24

– не забудьте исправить наименование интерфейса на тот, который был у вас в выводе команды «ip a». Шлюз мы не указываем, так как производственный сегмент не имеет выхода в административный.

проверяем настройки соединений:

sudo nmcli con

Если все сделали правильно, в выводе увидим два соединения, привязанные к соответствующим сетевым интерфейсам. Если что-то пошло не так, нужно проделать заново все действия с момента «удаления настроек по умолчанию».

Для окончания настройки сети осталось прописать имена DNS, вводим команду:

sudo nmcli con mod AdminNet ipv4.dns “192.168.1.1, 8.8.8.8, 8.8.4.4”

Теперь можно перезагрузить компьютер и убедиться, что все работает.

Проверяем состояние службы Network Manager

sudo systemctl status NetworkManager.service – для останова вывода и возврата к командной строке нажмите «q».

Смотрим вывод команды, «active» означает, что сервис работает.

Вводим команду:

ip a

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

Проверяем работу сети, вводим команду:

ping mail.ru - чтобы остановить выполнение команды, нажмите комбинацию клавиш «ctrl» и «c». Если сеть работает правильно, вывод команды будет содержать время обмена пакетами, как на скриншоте.

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

ping 192.168.100.10 – проверка для устройства с адресом 192.168.100.10, вывод будет аналогичен показанному выше.

При необходимости можно проверить доступность маршрутизатора:

ping 192.168.1.1

На этом настройка сети выполнена.

Простой вариант. Часть 3. Работа с Midnight Commander.

Midnight Commander (или mc) – это файловый менеджер, работающий в текстовом режиме, очень похожий на Norton Commander или Far для windows. Менеджер имеет встроенный редактор текстовых файлов, который для новичков гораздо проще или привычнее, чем редактор Vi или nano.

Midnight Commander можно запустить непосредственно из терминала, набрав команду: mc

mc имеет две панели для навигации по файловой системе, переключение между панелями по клавише «Tab» или мышкой. Комбинацией клавиш Ctrl+O можно срыть/показать панели. В нижней части под панелями расположена командная строка (все, что вы набираете на клавиатуре, отображается в командной строке).

По файлам в текущей папке можно перемещаться стрелками вверх/вниз. Чтобы зайти в выбранный каталог нажмите ввод, чтобы перейти в каталог выше подведите курсов в самый верх на панели на значок /.. и нажмите ввод. Символ / - корень файловой системы (что-то похожее на диск C: в windows). Если подвести курсор к нужному файлу, по клавише F3 можно просмотреть содержимое файла, по клавише F4 можно открыть файл для редактирования в текстовом редакторе. Чтобы скопировать выделенный файл между панелями нажмите F5, перенести или переименовать файл нажмите F6, удалить выделенный файл нажмите F8. Чтобы создать новый файл нажмите Shift+F4. Чтобы выйти из mc нажмите F10 или наберите в командной строке exit.

Midnight Commander обладает очень большим функционалом и многократно и хорошо описан на многих сайтах: http://rus-linux.net/MyLDP/consol/midnight-commander.html или https://interface31.ru/tech_it/2020/10/osvaivaem-effektivnuyu-rabotu-v-midnight-commander.html

После запуска терминала вы находитесь в домашней папке пользователя, в нашем случае это папка /home/ubuntu, еще домашняя папка отображается как «~». Можно попробовать переместить курсор на какой-нибудь файл и открыть его на редактирование клавишей F4. При первом открытии Midnight Commander спросит, каким редактором вы хотите пользоваться. На скриншоте показан выбор из 4-х редакторов, надо выбрать цифру, соответствующую mcedit, на скриншоте это цифра 2. Если вы ошибочно выбрали другой редактор, можно изменить выбор командой select-editor.

Все файлы конфигурации системы (или почти все) находятся в папке /etc. Чтобы иметь возможность изменять файлы конфигурации, нужно иметь права супер-пользователя, но при этом надо быть очень аккуратным, так как необдуманные действия могут испортить систему.

Для выполнения настройки FTP-сервера и SAMBA-сервера нам будет необходимо с правами супер-пользователя отредактировать конфигурационные файлы.

Открываем новое окно терминала, в терминале запускаем Midnight Commander с правами супер-пользователя, вводим команду:

sudo mc

Теперь mc работает под пользователем root – супер-пользователем (это видно в приглашении командной строки), и теперь можно изменять все файлы конфигурации.

В одной из панели Midnight Commander переходим в корень файловой системы, затем в папку /etc

По окончанию работы, обязательно нужно выйти из Midnight Commander по клавише F10 или набрав в терминале команду exit. По соображениям безопасности не следует оставлять терминал или Midnight Commander, работающий с правами супер-пользователя.

Простой вариант. Часть 4. Настройка FTP-сервера.

 После запуска mc с правами суперпользователя, переходим в папку /etc и находим файл конфигурации FTP-сервера vsftpd.conf

 Выбираем файл и делаем резервную копию исходного файла, нажимаем F5 и выполняем копирование.

 Клавишей F4 открываем файл на редактирование. Вносим изменения (изменения выделены желтым, дополнения зеленым).

По окончанию редактирования сохраняем файл клавишей F2 и выходим из редактора по клавише F10.

Краткие пояснения к опциям:

listen=YES #Данная опция запускает FTP-сервер как службу

 listen_ipv6=NO #ниже имеется аналогичная взаимоисключающая опция:Первая из них обеспечивает поддержку IPv4, вторая сразу IPv6 и IPv4, поэтому должна быть включена только одна из них.

 anonymous_enable=NO # Запрещаем анонимных пользователей:

 local_enable=YES # И разрешаем локальных (и виртуальных) пользователей:

 write_enable=YES # Также разрешаем запись

 local_umask=022 # и задаем маску для вновь создаваемых файлов и папок: Это обеспечит установку прав 755 на папки и 644 на файлы, т.е. полный доступ только владельцу и чтение для группы и остальных.

 use_localtime=YES # Чтобы FTP использовал локальное время сервера, а не GMT установим:

 xferlog_enable=YES # И включим лог загружаемых и скачиваемых файлов:

connect_from_port_20=YES # Разрешаем передачу данных через порт 20, требуется для лучшей совместимости с некоторыми клиентами:

 xferlog_file=/var/log/vsftpd.log # Задаем путь к логу и его формат:

xferlog_std_format=YES

 idle_session_timeout=600 # Укажем таймауты: Первый задает время отключения бездействующего пользователя, а второй время ожидания возобновления неоконченной передачи.

data_connection_timeout=120

 ascii_upload_enable=YES # Для корректной работы с текстовыми данными, в частности с символами переноса строки в разных ОС (CR+LF в Windows, LF в Linux) включим поддержку ASCII, это полезно, если вы скачиваете скрипты или файлы с Linux сервера, правите их в среде Windows и заливаете обратно. В этом случае FTP автоматически будет менять символы переноса строки для соответствия стандартам системы.

ascii_download_enable=YES

 chroot_local_user=YES # Обязательно изолируем пользователя в корне его домашней директории и рядом впишем опцию, разрешающую запись в корень:

allow_writeable_chroot=YES

 #Остальные опции оставляем без изменения.

# Теперь в конце файла надо дописать необходимые нам настройки. Разрешим пассивный режим и явно укажем диапазон портов:

pasv_enable=YES

pasv_min_port=62000

pasv_max_port=62999

 guest_enable=YES # Включим виртуальных пользователей

 guest_username=ubuntu # Укажем от имени какого реального пользователя они будут работать, в нашем примере это пользователь ubuntu.

 virtual_use_local_privs=YES # Применяем к виртуальным пользователям настройки локальных, иначе к ним будут применены ограничения анонимных.

 user_sub_token=$USER # задаем переменную для имени пользователя

 local_root=/FTP # задаем паку для расположения данных, все файлы хранящиеся на FTP сервере будут находится в этой папке  (папку необходимо создать и назначить ей владельца и права)

 hide_ids=YES # Также иногда неплохо будет скрыть реальных владельцев содержимого

 seccomp_sandbox=NO # Если вы используете Ubuntu, то добавьте следующую недокументированную опцию: Это позволит избежать ошибки 500 OOPS: prctl PR_SET_SECCOMP failed, которая возникает из некорректной совместной работы vsftpd и системы безопасности seccomp, в Debian данная ошибка не проявляется.

Далее необходимо отредактировать файл /etc/pam.d/vsftpd (настройка правил аутентификации). Переходим в папку /etc/pam.d находим файл vsftpd и нажимаем F4.

закомментируем все строки (добавим в начале каждой строки символ #) и в конце добавим две новые строчки:

auth required pam_pwdfile.so pwdfile /etc/vsftpwd

account required pam_permit.so

Опция pwdfile /etc/vsftpwd указывает путь к файлу паролей, его нам необходимо будет создать на следующем шаге.

Сохраняем файл по F2 и выходим из редактора.

Редактирование файлов закончено, нажимаем F10 для выхода из mc.

Далее работаем в терминале (без mc). Создаем папку для данных FTP-сервера, вводим команды:

sudo mkdir /FTP – создать папку /FTP, в этой папке будут храниться все данные, загруженные на FTP-сервер.

sudo chown -R ubuntu:ubuntu /FTP – назначаем владельцем папки пользователя ubuntu.

sudo chmod -R 755 /FTP – задаем права на папку и все вложенное содержимое.

Теперь надо создать виртуального пользователя для FTP сервера. Виртуальные пользователи – это специальные пользователи, которые могут «заходить» на FTP сервер (FTP клиенты), но не могут работать локально в Linux. Соответственно необходимо задать имя и пароль, под которым клиенты будут заходить на FTP сервер. Имя и пароль виртуальных пользователей должны отличатся от локального пользователя (под которым вы работаете в Linux). В нашем примере назовем виртуального пользователя «ftp-user». Можно создать любое количество виртуальных пользователей (например, для каждого сотрудника в компании задать отдельное имя и пароль для входа на FTP сервер). Для создания виртуальных пользователей будем использовать утилиту htpasswd из состава apache2-utils, для создания файла паролей и первого пользователя введите в терминале:

sudo htpasswd -c -d /etc/vsftpwd ftp-user

– ключ -c предписывает создать файл паролей, если он существует, то все данные в нем будут очищены, а файл перезаписан, -d задает необходимый для vsftpd алгоритм шифрования хэша пароля, /etc/vsftpwd – имя файла с паролями, «ftp-user» - это имя пользователя. При выполнении команды надо будет указать пароль для создаваемого пользователя.

Для создания второго и последующих пользователей должна использоваться команда без ключа «–с», например, для пользователя «ftp-user1»:

sudo htpasswd -d /etc/vsftpwd ftp-user1

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

sudo htpasswd -D /etc/vsftpwd ftp-user1

Теперь надо перезапустить службу FTP и проверить ее работу:

sudo systemctl restart vsftpd.service – перезапустить FTP сервер

sudo systemctl status vsftpd.service – посмотреть состояние FTP сервера

если вывод команды соответствует скриншоту, значит все сделано правильно. При наличии ошибок в конфигурационном файле, vsftpd может не запустится, тогда надо перепроверить все настройки, и перезапустить еще раз.

Осталось настроить брандмауэр (или файрвол) Linux и разрешить доступ к портам FTP-сервера. Для управления брандмауэром в Ubuntu-desktop используется утилита «ufw». Подробно утилита ufw описана в документации https://losst.pro/nastrojka-ufw-ubuntu.

Для наших целей нам достаточно внести небольшие корректировки в настройки «по умолчанию», а именно разрешить доступ к портам FTP-сервера.

Вводим в терминале команды:

sudo systemctl status ufw.service –  команда чтобы убедится, что брандмауэр установлен и используется (активен), если ufw не используется, команда выдаст ошибку.

разрешаем входящие TCP соединения на порт 20,21 и порты 62000:62999 (этот диапазон указан в нашем конфигурационном файле vsftpd.conf)

sudo ufw allow 20/tcp

sudo ufw allow 21/tcp

sudo ufw allow 62000:62999/tcp

Проверяем настройки брандмауэра, перезапускаем и проверяем статус:

sudo ufw status – смотрим настройки ufw

sudo systemctl restart ufw.service – перезапускаем ufw

sudo systemctl status ufw.service – проверяем статус ufw

Если вывод команд соответствует скриншоту (выделенные строки), значит все сделано правильно.

Если с брандмауэром возникли проблемы, его можно отключить командой sudo ufw disable и проверить работу FTP-сервера без брандмауэра, а потом устранив проблемы снова включить sudo ufw enable

На этом настройка FTP сервера ЗАКОНЧЕНА!!

Проверяем доступ к FTP серверу с windows компьютеров в административном сегменте сети: на windows запускаем командную строку (в строке поиска вводим cmd), в командной строке набираем IP адрес нашего FTP
сервера ping 192.168.1.254. Если FTP сервер доступен в сети, вывод команды будет содержать время обмена пакетами (как на скриншоте).

Для обмена с FTP сервером на Windows можно использовать бесплатный FTP-клиент FileZilla https://lumpics.ru/how-to-configure-filezilla/ , для Linux лучше использовать lftp, его нужно будет установить, стандартный ftp работает некорректно, его лучше удалить (sudo apt purge ftp, sudo apt install lftp).

В настройках соединения с FTP сервером указываем: хост – 192.168.1.254, порт – 21, протокол –  FTP, шифрование – использовать обычный FTP (небезопасно), имя пользователя – ftp-user (имя виртуального пользователя), пароль – пароль виртуального пользователя. Если все сделали правильно, FileZilla установит соединение с FTP сервером. Теперь можно загружать файлы.

Для доступа из производственного сегмента сети к FTP серверу нужно использовать такие же настройки, только указать IP адрес 192.168.100.1 в соответствии со схемой.

Простой вариант. Часть 5. Настройка резервного копирования.

Для более надежного хранения данных, можно дополнительно настроить резервное копирование папки с файлами на FTP-сервере. В примере рассматривается ежедневное автоматическое создание архива, каждому дню недели будет соответствовать свой файл архива, в соответствующий день недели файл архива будет обновляться, т.е. у вас всегда будет семь последних архивных копий.

Для размещения резервных копий создадим папку /Arhiv, в терминале сервера выполним команды:

sudo mkdir /Arhiv – создать папку /Arhiv, в этой папке будут храниться резервные копии.

sudo chown -R ubuntu:ubuntu /Arhiv – назначаем владельцем папки пользователя ubuntu.

sudo chmod -R 755 /Arhiv – задаем права на папку и все вложенное содержимое.

Для создания архива можно использовать программу zip. Для установки zip введите в терминале:

sudo apt install zip

Теперь, если ввести в терминале команду zip, в выводе будет показана помощь к программе.

Для запуска команд по расписанию в Linux можно использовать утилиту «crontab».

Для редактирования расписания введите в терминале команду:

crontab -e

Откроется окно редактора, теперь надо ввести 7 строчек для создания архивов по дням неделе, каждая строчка означает: в 0 минут 3 часа утра в 0 день недели (нулевой день недели - воскресенье) выполняем команду zip и создаем архив с именем «arhiv_sun.zip», в 1-день (понедельник) выполняем команду zip и создаем архив с именем «arhiv_mon.zip» и т.д.

0 3 * * 0 zip -1 -r -q /Arhiv/arhiv_sun.zip /FTP

0 3 * * 1 zip -1 -r -q /Arhiv/arhiv_mon.zip /FTP

0 3 * * 2 zip -1 -r -q /Arhiv/arhiv_tue.zip /FTP

0 3 * * 3 zip -1 -r -q /Arhiv/arhiv_wed.zip /FTP

0 3 * * 4 zip -1 -r -q /Arhiv/arhiv_thu.zip /FTP

0 3 * * 5 zip -1 -r -q /Arhiv/arhiv_fri.zip /FTP

0 3 * * 6 zip -1 -r -q /Arhiv/arhiv_sat.zip /FTP

После ввода последней строчки обязательно нужно перейти на следующую строку (последняя строка в расписании должна быть пустой).

В команде zip используем следующие ключи: -1 – минимальное сжатие, -r – включая подкаталоги, -q – без вывода информации в консоль. /Arhiv/arhiv_sat.zip – имя файла архива. /FTP – папка, которую архивируем.

Сохраняем изменения расписания клавишей F2 и закрываем редактор F10. Если все сделано правильно, через неделю в папке /Arhiv у вас будут созданы все семь файлов архива.

Настройка резервного копирования выполнена.

Дополнительно можно установить и настроить утилиту «rclone» для резервного копирования ваших данных на внешнее облако (mail-диск, yandex-диск, любое другое облако). Примеров настройки rclone для ubuntu в интернете достаточно https://www.dmosk.ru/miniinstruktions.php?mini=rclone-example

При необходимости можно организовать хранение архивных копий на внешнем носителе (внешнем USB диске). Надо понимать, что в Linux нет дисков C: D: и т.д. В Linux есть файловая система, начинающаяся с корня «/» и далее вниз в виде дерева каталогов. Любое дисковое устройство (устройство хранения данных) может быть «смонтировано» в любую точку файловой системы. При этом физическая организация устройства не имеет значения (HDD, SDD, Flash-накопители, внешний USB диск, CD-ROM, виртуальный диск в оперативной памяти и т.д.). Все физические дисковые устройства начинаются с /dev/.., например /dev/sda, /dev/sdb, /dev/nvme0n1p1, /dev/md0. Понятно, что какое-то устройство должно быть смонтировано в качестве корня файловой системы «/», и есть «специальные устройства» которые монтируются в определенные точки, и это делает система при запуске. «Дополнительные» устройства, такие как внешние диски или Flash-накопители могут быть смонтированы пользователем в любую точку файловой системы. «По умолчанию» такие устройства монтируются в каталог /media/…

Для создания резервной копии наших данных на внешнем диске нам надо: подключить внешний USB-диск, смонтировать его в определенную точку файловой системы, организовать автоматическое копирование архивов на внешний диск.

Запустим терминал, до подключения внешнего диска введем команду:

sudo lsblk

вывод команды содержит все дисковые устройства, известные системе

В качестве корня файловой системы «/» в данном примере используется раздел /dev/sda2 на устройстве /dev/sda (sda – это физическое устройство жесткий диск, диск размечен на два раздела sda1 и sda2. sda1– раздел смонтирован системой в точку /boot/efi, sda2 – это основной раздел, который содержит все файлы системы и смонтирован в корень файловой системы «/»). Также в выводе может быть большое количество «виртуальных» устройств, например loop0 и т.д.

теперь подключим внешний диск и снова повторим команду

sudo lsblk

в выводе мы видом новое подключенное устройство sdd с разделом sdd1, это и есть наш внешний диск. В вашем случае название БУДЕТ отличаться. Диск смонтирован по умолчанию в каталог /media/ubuntu/945CE…

Посмотреть точку монтирования и параметры можно также командой

mount

В выводе команды также показаны разделы дисков и точки их монтирования. Чтобы размонтировать раздел надо ввести команду

sudo umount /dev/sdd1

Еще раз вводим команду sudo lsblk, теперь видим что раздел sdd1 не смонтирован, вводим команду

sudo fdisk –l /dev/sdd

в выводе мы видим параметры раздела /dev/sdd1, в частности нас интересует тип файловой системе, в нашем примере это ntfs

Теперь создадим более удобный каталог для монтирования внешнего диска, введем команды:

sudo mrdir /Arhiv_usb – создаем каталог

sudo chown –R ubuntu:ubuntu /Arhiv_usb  - назначаем владельцем каталога пользователя ubuntu

sudo chmod –R 755 /Arhiv_usb – назначаем права на каталог

Для того, чтобы внешний диск автоматически монтировался в нужный нам каталог, нужно внести соответствующую строчку в файл /ets/fstab. В терминале запускаем Midnight Commander командой

sudo mc

переходим в каталог /etc, находим файл fstab и открываем на редактирование клавишей F4. В конце файла добавляем строчку:

/dev/sdd1 /Arhiv_usb ntfs default 0 0

/dev/sdd1 – это раздел нашего внешнего диска, который мы хотим смонтировать

/Arhiv_usb – это созданный нами каталог, куда мы хотим монтировать диск

ntfs – это тип файловой системы нашего внешнего диска, мы его смотрели выше в выводе команды fdisk, тип может отличаться (fat32, ext4 и т.д.)

default – остальные настройки по умолчанию

0 0 – порядок монтирования при запуске

Сохраняем изменения в файле по клавише F2 и выходим по F10, выходим из mc еще раз F10.

Проверяем монтирование раздела, вводим команду:

sudo mount –a

если все сделано правильно, система смонтирует наш диск в указанный каталог, вводим команду mount и смотрим вывод

В выводе мы видим, что раздел /dev/sdd1 смонтирован в каталог /Arhiv_usb.

Прежде, чем извлечь USB-диск, надо в терминале выполнить команду:

sudo umount /dev/sdd1

После выполнения команды диск можно безопасно отключить.

Осталось настроить непосредственно копирование файлов архива по расписанию.

Для редактирования расписания введите в терминале команду:

crontab -e

и по процедуре, описанной выше добавьте в конце файла строчку:

0 6 * * * cp -u /Arhiv/* /Arhiv_usb

т.е. в 6 утра 0 минут каждый день выполняем копирование всех новых файлов из папки /Arhiv/* в папку /Arhiv_usb, ключ –u означает что будут копироваться только измененные файлы, в конце файла расписания не забываем добавить свободную строчку.

Периодически надо в терминале командой sudo lsblk проверять наличие, исправность и точку монтирования внешнего диска.

На этом настройка резервного копирование файлов архива на внешний диск выполнена.

Простой вариант. Часть 6. Настройка SAMBA для доступа из производственной сети

SAMBA – это утилита Linux для организации доступа к ресурсам (файлам, принтерам) по протоколу SMB с поддержкой сетевого окружения windows (сетевые папки и сетевые принтеры windows).

Для пользователей и программ в windows работа с файлами на сетевых папках практически не отличается от работы с локальными файлами, с одной стороны это создает меньше неудобств для пользователей, но при этом файлы становятся доступны для вирусов, заразивших компьютеры пользователей. Поэтому с целью повышения безопасности, рекомендуется использовать SMB протокол только в технологическом сегменте сети, если это необходимо (например, для передачи файлов на обрабатывающие центры).

Установка SAMBA была выполнена ранее, поэтому просто напоминаю команду для установки, если потребуется:

sudo apt install samba

Запускаем в терминале mc с правами супер-пользователя:

sudo mc

переходим в папку /etc/samba, находим и выбираем файл конфигурации smb.conf, по клавиши F5 делаем резервную копию файла, по клавиши F4 открываем файл на редактирование.

Как правило все настройки «по умолчанию» smb.conf не требуют изменения, просто необходимо убедится, что настройки «по умолчанию» не были изменены. Ключевые строки конфигурационного файла:

Должна быть задана одна рабочая группа windows как в настройках пользовательских компьютеров, так и в файле конфигурации SAMBA, «по умолчанию» рабочая группа называется «WORKGROUP».

workgroup = WORKGROUP

Роль сервера – простой стандартный

server role = standalone server

синхронизация пользователей SAMBA и Linux

unix password sync = yes

если пользователь неизвестен, считаем его гостем

map to guest = bad user

Секцию [printers] можно полностью удалить или закомментировать (в начале каждой строки поставить знак #), так как организовывать сервер печати мы не планируем.

В конце конфигурационного файла необходимо добавить строки для нашей «шары» - сетевой папки:

[FTP]

comment = общая папка

path = /FTP

public = yes

browsable = yes

writable = yes

guest ok = yes

read only = no

create mask = 0755

directory mask = 0755

force create mode = 0755

force directory mode = 0755

force user = ubuntu

force group = ubuntu

hosts allow = 192.168.100.

пояснения:

comment = общая папка – просто строка, которая будет «всплывать» при наведении мышкой на папку, можно и не писать.

path = /FTP – папка на Linux, которую мы хотим сделать доступной по сети. В этом примере эта папка, которая доступна через FTP-сервер

public = yes – папка доступна всем

browsable = yes – папка показывается при просмотре доступных ресурсов

writable = yes – разрешаем запись файлов в папку

guest ok = yes – папка доступна для гостей, т.е. всем пользователям, без проверки имени и пароля

read only = no – папка доступна для записи (не только для чтения)

create mask = 0755 – при создании файлов или папок им будут назначены соответствующие права доступа

directory mask = 0755 ­

force create mode = 0755

force directory mode = 0755

force user = ubuntu – задаем пользователя и группу Linux, под которым будет работать SAMBA (поскольку в нашем примере владельцем папки /FTP является пользователь ubuntu, то мы указываем, что SAMBA работает с файлами от имени этого пользователя, иначе будут проблемы с правами доступа)

force group = ubuntu

hosts allow = 192.168.100. – этот параметр разрешает доступ к
«шаре» только из нашей производственной сети 192.168.1.ххх, из
административного сегмента сети доступа не будет. Если убрать эту строчку, шара
будет доступна из любой сети

Сохраняем изменения в конфигурационном файле по клавише F2, выходим из редактора по F10, выходим из mc по F10.

Перезагружаем и проверяем сервис SAMBA, вводим в терминале команды:

sudo systemctl restart smbd – перезапускаем SAMBA

sudo systemctl status smbd – проверяем статус SAMBA

Теперь необходимо брандмауэр Linux разрешить доступ к портам SAMBA.

Вводим в терминале команды:

sudo ufw allow 445/tcp

sudo ufw allow 139/tcp

sudo ufw allow 137:138/udp

разрешаем входящие TCP соединения на порт 445,139 и UDP порты 137:138 (можно разрешить порты явно, как это указано выше, или одной командой sudo ufw allow Samba)

Проверяем настройки брандмауэра, перезапускаем и проверяем статус:

sudo ufw status – смотрим настройки ufw

sudo ufw app list

sudo systemctl restart ufw – перезапускаем ufw

sudo systemctl status ufw – проверяем статус ufw

Если вывод команд соответствует скриншоту (выделенные строки), значит все сделано правильно.

Для проверки доступа к сетевой папке, откройте Проводник на windows компьютере в производственной сети, введите адрес Linux сервера, вы должны увидеть созданную сетевую папку.

На этом настройка доступа по протоколу SMB для реализации наших задач выполнена.

Конечно, мы создали самую простую конфигурацию с минимальным количеством настроек. Возможности пакета SAMBA гораздо шире, чем мы показываем в нашем примере. При необходимости можно настроить ограничение доступа по имени и паролю, создать разные шары с разным уровнем доступа и т.д. В интернет можно найти большое количество инструкций с подробными пояснениями https://www.dmosk.ru/instruktions.php?object=samba-ubuntu

Расширенный вариант. Часть 7. Настройка RAID.

Чтобы повысить надежность хранения данных, целесообразно использовать RAID массив из нескольких физических дисков, обеспечивающий одновременное хранение каждого элемента данных на нескольких физических носителях и гарантирующий полную сохранность информации при отказе одного физического диска. Для нашей задачи, организации простого файл-сервера с доступом по FTP или SAMBA, достаточно создания программного RAID массива первого уровня. RAID-1 это два зеркальных (параллельно работающих) диска, вся информация одновременно копируется на оба диска, поэтому отказ одного диска не приведет к потере данных.

Для создания программного RAID-1 массива в Linux потребуется два дополнительных жестких диска, диски могут быть разных производителей, разного размера и разного типа (HDD, SDD, USB-накопители). Целесообразно для наших задач использовать простые HDD диски.

Подключаем к компьютеру два дополнительных диска (в примере рассматриваются два HDD диска), после включения и загрузки открываем терминал и вводим команду:

sudo lsblk

в выводе команды видим два дополнительных диска /dev/sdb и /dev/sdc (в примере показаны «чистые диски» по 50 Гигабайт без разделов, если диск содержит разделы, то на следующим этапе мы их удалим, в вашем случае названия дисков могут отличаться).

Для создания массива в Linux используется утилита mdadm, для установки утилиты вводим в терминале команду

sudo apt install mdadm

На всякий случай можно ввести команды для очистки старых метаданных дисков

sudo mdadm --zero-superblock --force /dev/sdb

sudo mdadm --zero-superblock --force /dev/sdc

sudo wipefs --all --force /dev/sdb

sudo wipefs --all --force /dev/sdc

Теперь создадим на дисках разделы, в примере я специально создаю разделы разного размера, на диске /dev/sdb размер будет 30 Гигабайт, на /dev/sdc раздел будет на весь объем диска (50G). В большинстве случаев и на первом и на втором диске целесообразно создать разделы на весь объем диска.

Итоговая емкость RAID-1 массива будет равна размеру наименьшего раздела.

Для создания разделов можно использовать графическую утилиту GParted (для тех, кто не любит терминал, возможно GParted придется установить sudo apt install gparted), или как показано далее, воспользоваться консольной утилитой fdisk, т.е. в терминале ввести команду:

sudo fdisk /dev/sdb – для работы с диском /dev/sdb, будьте очень внимательны с названием диска, так как вы удаляете все данные с диска.

Внутри утилиты нажимаем клавишу «p» и смотрим в выводе информацию о диске (видим размер диска, тип таблицы разделов «gpt», разделов на диске в нашем случае нет. На всякий случай нажимаем «g» и «ввод», заново создаем таблицу разделов (на скрине этот шаг отсутствует), затем нажимаем «n» и «ввод» и еще раз «ввод», чтобы создать первый раздел, на запрос о первом секторе «First sector» нажимаем «ввод» чтобы принять значение «по умолчанию». На запрос о последнем секторе раздела «Last sector» для диска /dev/sdb я указал размер «+30G» и «ввод» (чтобы раздел занял весь объем диска надо принять значение «по умолчанию» и просто нажать «ввод»). Создание раздела выполнено. Еще раз нажимаем клавишу «p» и в выводе теперь видим раздел /dev/sdb1 размером 30G. Нажимаем клавишу «w» чтобы сохранить изменения разметки и выйти.

Точна такие же действия проделаем с диском /dev/sdc, введем в терминале

sudo fdisk /dev/sdc

внутри утилиты последовательно нажмем:

«p» «ввод», «g» «ввод», «n» «ввод», «ввод», «ввод», «ввод», «w» «ввод». Для диска /dev/sdc в нашем примере мы не указываем размер и создаем раздел на весь объем диска.

Проверяем созданные разделы, вводим в терминале команду:

sudo lsblk

В выводе команды теперь видим раздел /dev/sdb1 размером 30G и раздел /dev/sdc1 размером 50G. Эти разделы мы и будем объединять в RAID-1 массив.

Чтобы создать RAID-1 массив вводим в терминале команду:

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1

пояснения:

--create – создать

/dev/md0 – имя нашего RAID массива (можно задать любое, хоть md125)

--level=1 – уровень массива, мы создаем RAID-1, поэтому указываем «1»

--raid-devices=2 – количество устройств в массиве, у нас 2

/dev/sdb1 /dev/sdc1 – имена устройств в массив (разделы, которые мы создали ранее)

На вопрос отвечаем «y», и, если все прошло хорошо, в выводе мы видим, что массив стартовал.

Еще раз проверяем разделы:

sudo lsblk

и в выводе видим, что на разделах /dev/sdb1 и /dev/sdc1 создан RAID-1 с именем md0 и размером 30G.

Чтобы сохранить конфигурацию RAID от изменения при перезагрузке, надо внести в файл /etc/mdadm/mdadm.conf запись о массиве, для этого вводим в терминале команду:

sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf

чтобы проверить содержимое файла /etc/mdadm/mdadm.conf вводим команду:

sudo cat /etc/mdadm/mdadm.conf

В выводе команды мы видим в конце файла запись о массиве.

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

sudo mkfs -t ext4 /dev/md0

Для включения информации о массиве в ядро Linux вводим в терминале команду:

sudo update-initramfs -u

На этом создание RAID массива выполнено. Осталось настроить монтирование раздела RAID в нужную нам точку файловой системы. Поскольку для хранения всех данных файл-сервера мы используем папку /FTP, то целесообразно смонтировать раздел RAID на эту папку. Если у вас в папке /FTP уже есть данные, временно перенесите их в другое место. После монтирования RAID массива, данные надо будет вернуть.

В терминале запускаем mc с правами супер-пользователя:

sudo mc

переходим в папку /etc, находим файл fstab и открываем на редактирование клавишей F4

В конце файла fstab дописываем строчку:

/dev/md0 /FTP ext4 defaults 0 0

Сохраняем изменения файла по клавише F2 и выходим из редактора F10, выходим из mc по F10.

В терминале вводим команду монтирования разделов, указанных в fstab

sudo mount -a

если все сделано правильно, раздел /dev/md0 будет смонтирован в точку /FTP. Проверяем, вводим в терминале команду

mount

В выводе команды мы видим, что раздел /dev/md0 смонтирован в точку /FTP. На этом организация хранения данных на RAID массиве выполнена. Теперь вся информация, записанная в папку /FTP физически будет храниться на RAID массиве. Теперь можно вернуть все данные в папку /FTP.

Проверка состояния и обслуживание RAID.

Поскольку через какое-то время диски в RAID массиве могут выйти из строя, необходимо периодически проверять состояние дисков и при обнаружении неисправно, своевременно заменить.

Для проверки состояния RAID массива введите в терминале команду:

sudo mdadm --examine /dev/sdb1 /dev/sdc1

В выводе команды мы видим, что оба диска в RAID в активном состоянии.

Так же состояние RAID можно посмотреть командой:

sudo mdadm --detail /dev/md0

В выводе мы видим информацию о RAID, объем, количество установленных и используемых дисков, информацию о каждом диске.

Состояние неисправного диска будет указано как «degraded»

Чтобы заменить диск в RAID массиве, необходимо сначала удалить из массива неисправный диск (показано на примере диска /dev/sdc1):

sudo mdadm /dev/md0 --remove /dev/sdc1

заменить физический диск на исправный, подготовить на новом диске раздел, как это было описано выше (например для диска /dev/sdd создаем раздел /dev/sdd1), и добавляем раздел нового диска в RAID:

sudo mdadm /dev/md0 --add /dev/sdd1

смотрим состояние массива

sudo mdadm --detail /dev/md0

В выводе мы видим, что выполняется синхронизация данных массива на новый диск, синхронизация потребует какого-то времени. После окончания синхронизации массив снова будет в исправном состоянии.

Восстановления RAID после переустановки Linux или замены компьютера.

Если вы переустановили Linux на вашем компьютере, или ваш компьютер сломался, и вы поставили Linux на другом компьютере, чтобы восстановить ваш RAID массив и данные на массиве, вам надо:

 - подключить диски (один или оба) к новому компьютеру с Linux,

- в терминале ввести команду sudo mdadm --assemble –scan, Linux по данным метаблоков на дисках найдет и восстановит информацию о массиве;

- можно более точно указать Linux на каких искать RAID, для этого сначала командой sudo lsblk надо уточнить имена дисков с RAID, а потом ввести команду sudo mdadm –assemble /dev/sdb1 /dev/sdc1;

- если массив обнаружен, вывод команды sudo lsblk покажет вам расположение на устройствах RAID массива;

- для сохранение обнаруженного массива введите команды:

sudo mdadm --detail --scan --verbose | sudo tee -a /etc/mdadm/mdadm.conf

sudo update-initramfs –u

и отредактируйте файл /etc/fstab как было описано выше.

Более подробное описание работы с RAID массивом

 https://losst.pro/programmnyj-raid-v-linux

 https://www.dmosk.ru/miniinstruktions.php?mini=mdadm

Расширенный вариант. Часть 8. Настройка FTP с персональными папками пользователей.

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

При небольшом усложнении конфигурации FTP сервера можно разделить хранение данных пользователей с ограничением доступа к персонализированным данным.

В качестве исходного фала конфигурации FTP возьмем итоговый файл из части 4.

Для реализации индивидуальных настроек каждого виртуального пользователя FTP сервера создадим специальную папку хранения файлов настроек, в терминале введем команду:

sudo mkdir /etc/vsftpd_virtuser_conf

все настройки хранятся в папке /etc, доступ к ним возможен только с правами супер-пользователя, поэтому для редактирования конфигурации запустим Midnight Commander с правами супер-пользователя:

sudo mc

Переходим в папку /etc, находим конфигурационный файл /etc/vsftpd.conf и открываем на редактирование клавишей F4. В конце файла находим строку local_root=/FTP, комментируем эту строку или удаляем. В конце файла дописываем новую строчку с указанием расположения индивидуальных файлов конфигурации пользователей user_config_dir=/etc/vsftpd_virtuser_conf, сохраняем изменения по клавише F2 и выходим из редактора по клавише F10.

Теперь необходимо создать индивидуальные файлы конфигурации виртуальных пользователей, для примера примем имена пользователей ftp-user, ftp-user1, ftp-user2 и т.д. Переходим в папку /etc/vsftpd_virtuser_conf и сочетанием клавиш Shift+F4 открываем редактор с новым файлом, в редактор вводим строку с указанием персональной папки для первого пользователя

local_root=/FTP/FTP-USER

сохраняем файл по клавише F2 под именем ftp-user, название файла должно соответствовать имени виртуального пользователя, закрываем редактор по клавише F10.

Создаем еще один файл для следующего пользователя ftp-user1, снова сочетанием клавиш Shift+F4 открываем редактор с новым файлом, в редакторе вводим строку

local_root=/FTP/FTP-USER1

сохраняем файл по клавише F2 под именем ftp-user1, по клавише F10 закрываем редактор.

Повторяем процедуру создания индивидуальных файлов конфигурации для всех пользователей FTP сервера. Имена могут и наименования папок могут быть произвольные.

После создания всех файлов пользователей выходим из mc по клавише F10.

Для создания папок пользователей в терминале вводим команды:

sudo mkdir /FTP/FTP-USER

sudo mkdir /FTP/FTP-USER1

sudo mkdir /FTP/FTP-USER2

и так для всех пользователей.

Теперь необходимо подправить владельца и права доступа к папкам, введем в терминале команды:

sudo chown -R ubuntu:ubuntu /FTP

sudo chmod -R 755 /FTP

Теперь необходимо создать виртуальных пользователей, повторим действия, описанные в части 4. Для создания виртуальных пользователей будем использовать утилиту htpasswd из состава apache2-utils, для создания файла паролей и первого пользователя введите в терминале:

sudo htpasswd -c -d /etc/vsftpwd ftp-user

– ключ -c предписывает создать файл паролей, если он существует, то все данные в нем будут очищены, а файл перезаписан, -d задает необходимый для vsftpd алгоритм шифрования хэша пароля, /etc/vsftpwd – имя файла с паролями, «ftp-user» - это имя пользователя. При выполнении команды надо будет указать пароль для создаваемого пользователя.

Для создания второго и последующих пользователей должна использоваться команда без ключа «–с», например, для пользователя «ftp-user1»:

sudo htpasswd -d /etc/vsftpwd ftp-user1

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

sudo htpasswd -D /etc/vsftpwd ftp-user1

Теперь надо перезапустить службу FTP и проверить ее работу:

sudo systemctl restart vsftpd.service – перезапустить FTP сервер

sudo systemctl status vsftpd.service – посмотреть состояние FTP сервера

Предполагается, что папка /FTP/FTP-USER будет общая для всех пользователей, а папки /FTP/FTP-USER1...USER256 будут персональными папками пользователей.

У каждого пользователя настраиваем FTP клиента (FileZilla) на два подключения, для подключения к общей папке с именем пользователя ftp-user, и для подключения к персональной папке (например, ftp-user1)

Если ранее была настроена SAMBA для доступа к папке /FTP (часть 5), необходимо в настройках SAMBA сервера в файле конфигурации /etc/samba/smb.conf исправить путь к общей папке: path = /FTP на path = /FTP/FTP-USER и перезапустить SAMBA сервер sudo systemctl restart smbd.

На этом настройка FTP
сервера с разграничением доступа к персонализированным данным выполнена.

Комментарии (1)


  1. net_racoon
    15.11.2022 10:30

    "...понятно, самый простой, неуправляемый..." - Вы так пишите будто это нормально. У вас в сети железка, которой никто не рулит. Не надо так делать в 2022ом.

    ИМХО, вы усложнили простую сеть.