Установка Ubuntu 24.04.3 (LTS) Создаём гостевую машину в виртуальной среде XCP: 4 CPU 8Gb RAM 100Gb Storage На данной конкретной среде назначаем гостевой машине сетевой адаптер "Network 1". На другой среде может понадобиться назначить другой адаптер. Устанавливается стандартная версия. Разбиваем хранилище как LVM -> Volume group -> Logical volume "/". В конце диска выделяем SWAP 16Gb IP-адрес моего сервера 176.101.96.119/27 под VLAN 21 на основном сетевом адаптере. DNS 176.101.96.1 и gateway (шлюз) 176.101.96.126 SSH-сервер предустанавливать. Создаем временного пользователя :159357 Дожидаемся окончания установки и перезагрузки машины. Входим под временным пользователем . $ sudo passwd root - пароль временного пользователя - новый пароль root - повторить новый пароль root Покидаем временного пользователя. $ logout И входим под root. Удаляем временного пользователя. # userdel -f -r Обновляем систему и все приложения. # apt update # apt upgrade Устанавливаем MC. # apt install mc Устанавливаем редактор по умолчанию MCEdit (пункт 3) В папке /usr/share/mc/syntax копируем файл sh.syntax в файл unknown.syntax Выходим из MC и запускаем его ещё раз. Проверяем настройки сети в файле "/etc/netplan/50-cloud-init.yaml". Не забываем в настройки интерфейсов добавить: dhcp4: false dhcp6: false Обязательно в интерфейс верхнего уровня (enX0, основной сетевой адаптер системы) добавить optional: true По-умолчанию опция "false" и при загрузке он может продолжать ждать назначения ему IP-адреса до бесконечности при выключенном DHCP. network: version: 2 ethernets: enX0: dhcp4: false dhcp6: false optional: true vlans: enX0-21: dhcp4: false dhcp6: false optional: false addresses: - "176.101.96.119/27" nameservers: addresses: - 176.101.96.1 search: - netlux.org routes: - to: "default" via: "176.101.96.126" id: 21 link: "enX0" Удаляем поддержку IPv6. Для этого в файле "/etc/default/grub" исправляем соответствующую строку с пустым параметром на эту. GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1" Обновляем загрузчик. # update-grub Предупреждение: не всё ПО корректно воспринимает отсутствие IPv6 в системе!!! Например сервер HyTale! В общем случае лучше её оставлять! Перезагружаем систему. # reboot now После перезагрузки устанавливаем ping, traceroute и ifconfig. # apt install net-tools # apt install traceroute Настраиваем SSH: В папке "/etc/ssh/sshd_config.d" создаем файл enX0-21.conf (По имени интерфейса, на котором он будет висеть) Port 22 AddressFamily inet ListenAddress 176.101.96.119 PermitRootLogin yes PasswordAuthentication yes PermitEmptyPasswords no KbdInteractiveAuthentication no UsePAM yes X11Forwarding yes PrintMotd no TCPKeepAlive yes ClientAliveInterval 600 ClientAliveCountMax 3 AcceptEnv LANG LC_* Обратить внимание на IP-адрес, на котором висит сервис!!! Файл прилагается. Копируем в соответствующую папку! После настройки запускаем сервис. # systemctl enable ssh # systemctl restart ssh # systemctl status ssh В логах можно увидеть, как уже полчаса к нам кто-то ломится, пытаясь подобрать пароль. За пару суток не подберёт, не боимся! Firewall будем настраивать позднее. Теперь на сервер можно заходить не мучаясь в консольном окне - через PuTTY! А также соединяться и заливать на него файлы через WinSCP! Перезагружаем машину! # reboot now Чтобы сервер не по делу не пытался самодеятельно качать обновления и устанавливать их почём зря - отключаем автообновления. В файле "/etc/apt/apt.conf.d/20auto-upgrades" размещаем следующее: APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Download-Upgradeable-Packages "0"; Файл прилагается, можно просто заменить стандартный в системе. Не забываем выставлять владельца и права доступа к файлу! # chown -R root:root /etc/apt/apt.conf.d # chmod -R 644 /etc/apt/apt.conf.d/*.* Такие права чаще всего у системных файлов по-умолчанию, но есть некоторые файлы и папки, в которых права доступа или владельцы могут отличаться. Контролируем соответствие прав и владельцев остальным файлам в папке! Создаем правила TXQueuelen для сетевых адаптеров в файле "/etc/udev/rules.d/60-net-txqueuelen-enX-ifaces.rules" Правило, для интерфейсов enX*, в том числе vlan-интерфейсов с именем enXN-NN SUBSYSTEM=="net", KERNEL=="enX*", ACTION=="add|change", ATTR{tx_queue_len}="30000" Файл прилагается. Копируем в соответствующую папку! Контролируем права! Исправляем файл /etc/sysctl.conf согласно приложенному образцу (параметры для 10-гигабитных интерфейсов, но пойдет и для гигабитных). Файл прилагается, можно просто заменить стандартный в системе. Исправляем имя машины. 1) В файле /etc/hosts 2) В файле /etc/hostname 3) Командой # hostname Меняем часовой пояс: 1) В файле /etc/timezone прописываем Europe/Moscow 2) Изменяем символическую ссылку /etc/@localtime на путь /usr/share/zoneinfo/Europe/Moscow Устанавливаем сервер времени # apt install ntp # systemctl enable ntpsec Исправляем файл "/etc/ntpsec/ntp.conf", файл прилагается. Создать папку "/var/log/ntpsec" и задать владельца "ntpsec:root" с правами "775" # systemctl restart ntpsec # systemctl status ntpsec Реально начнет синхронизироваться через 3-4 часа, проверяется командами # ntpq -p # ntptime Установить русскую локаль на сервер # dpkg-reconfigure locales Отметить в списке C.UTF-8, en_US.UTF-8 и ru_RU.UTF-8. По-умолчанию выбрать en_US, проверить командами: # locale # locale -a Настройка брандмауэра. Удаляем стандартный ufw. # ufw disable # apt remove ufw --autoremove # apt purge ufw # rm -Rf /etc/ufw/ Так же удалить iptables # apt remove iptables # apt remove iptables --autoremove # apt purge iptables Устанавливаем NFTables # apt install nftables # systemctl enable nftables Сразу он запускаться при загрузке отказывается, только применением правил после логина root. Исправляем: ищем /lib/systemd/system/nftables.service Раздел [Unit] должен выглядеть так: Description=nftables Documentation=man:nft(8) http://wiki.nftables.org Wants=network.target Before=shutdown.target After=network.target Conflicts=shutdown.target DefaultDependencies=no После сохранения файла выполняем команду: # systemctl daemon-reload Файл "/etc/nftables.conf" прилагается. Обязательно проверить все названия интерфейсов и адреса, особенно собственный адрес сервера. В моем случае виртуалки название интерфейса должно быть "enX0-21" и адрес сервера 176.101.96.119 Если копируем файл - возвращаем ему права на исполнение (chmod 755 /etc/nftables.conf). Чтобы применить новые правила - просто запустить файл "/etc/nftables.conf"