Термины по теме: UNIX , Linux , Ubuntu , CentOS
Описанные ниже действия рекомендуется выполнить в первую очередь после установки операционной системы на базе UNIX (например, DEB-base: Astra Linux, Ubuntu, Debian, ALT и RPM-base: Rocky Linux, РЕД ОС, CentOS) вне зависимости от того, как планируется ее использовать. Также мы рассмотрим некоторые нюансы при работе с контейнерами.
Стоит учитывать, что контейнерная виртуализация решает разные задачи — идеологически, есть контейнеры для процессов (например, docker и podman), а есть контейнеры с полноценными операционными системами (например, LXD и systemd-nspawn). Нижеописанные действия меньше подходят контейнерам для процессов и больше последним.
Обновление системы
Настройка vi
Работа с пользователями
Задать имя сервера
Настройка времени и его обновления
Обновление корневых сертификатов
Автозавершение ввода команд
Утилиты гостевой операционной системы
Безопасность
На чистой системе рекомендуется сразу установить все обновления, которые доступны для системы из ее родных репозиториев. Наши действия будут различаться в зависимости от используемой операционной системы.
yum update
1. В некоторых релизах версии 8 и старше мы можем получить ошибку:
Error: There are no enabled repositories in «/etc/yum.repos.d», «/etc/yum/repos.d», «/etc/distro.repos.d»
Открываем файл:
vi /etc/yum.repos.d/rocky.repo
Для репозиториев baseos и appstream редактируем директиву enabled :
[baseos]
…
enabled=1
…[appstream]
…
enabled=1
…Также делаем для файла rocky-extras.repo и репозитория extras :
vi /etc/yum.repos.d/rocky-extras.repo
[extras]
…
enabled=1
…
Обновляем кэш репозиториев и выполняем обновление:
apt update && apt upgrade
Но бывает так, что репозиторий Debian не настроен. Мы получим ошибку при обновлении кэша репозитория.
Открываем файл:
vi /etc/apt/sources.list
И приводим его к виду:
deb http://deb.debian.org/debian/ bullseye main
deb-src http://deb.debian.org/debian/ bullseye main
deb http://security.debian.org/debian-security bullseye-security main contrib
deb-src http://security.debian.org/debian-security bullseye-security main contrib
deb http://deb.debian.org/debian/ bullseye-updates main contrib
deb-src http://deb.debian.org/debian/ bullseye-updates main contrib* обратите внимание, что bullseye — кодовое название 11 версии. Вы должны подставить свое значение:
- Debian 12 — bookworm .
- Debian 11 — bullseye .
- Debian 10 — buster .
- Debian 9 — stretch .
После можно вводить:
apt update && apt upgrade
Для данной системы по умолчанию нет подключенных онлайн репозиториев — установка возможна только с установочного носителя. Лучше это сразу отредактировать. Для этого откроем файл:
vi /etc/apt/sources.list
Поставим комментарий для CDROM:
#deb cdrom…
и добавим репозитории. Строки, которые нужно прописать стоит посмотреть на сайте разработчика, например, для Astra Linux SE 1.7:
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
Теперь можно выполнить обновление:
apt update && apt upgrade
Мы можем получить ошибку Certificate verification failed: The certificate is NOT trusted. The certificate issuer is unknown. Could not handshake: Error in the certificate verification . Она возникает из-за устаревших корневых сертификатов. Сложность в том, что для обновления данных сертификатор нам нужны некоторые пакеты и рабочие репозитории, поэтому для обхода проблемы сы создадим файл:
vi /etc/apt/apt.conf.d/99-verify-peer.conf
Acquire::https::dl.astralinux.ru::Verify-Peer «false»;
* где dl.astralinux.ru — адрес репозитория, для которого необходимо отключить проверку сертификата.
После снова попробуем выполнить обновление:
apt update && apt upgrade
Данная система уже не поддерживается, но все еще встречается. Основные репозитории больше не поддерживаются, поэтому выполняем их замену на vault.centos.org .
Переходим в каталог с файлами репозиториев:
cd /etc/yum.repos.d
Удаляем все, что связаны с CentOS:
rm -f CentOS-*.repo
Создаем новый файл:
vi CentOS-Base.repo
[base]
name=CentOS-$releasever — Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever — Updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever — Extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever — Plus
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
* где 7.9.2009 — номер релиза. Его можно посмотреть командой cat /etc/centos-release .
Теперь можно выполнить обновление:
yum update
1. С российских IP-адресов система подвисает на этапе:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfileЗначит могут быть проблемы при подключении к серверам для определения скорости. В итоге, это только будет увеличивать время ожидания.
Данную проверку можно отключить. Открываем файл:
vi /etc/yum/pluginconf.d/fastestmirror.conf
И приводим к виду опцию:
enabled=0
Обновляем кэш репозиториев и выполняем обновление:
apt-get update && apt-get dist-upgrade
Также для удобства можно создать алиас:
alias apt=»apt-get»
echo ‘alias apt=»apt-get»‘ >> ~/.bashrc
Так как во многих современных дистрибутивах DEB используется команда apt для работы с пакетами, то привычнее будет вводить эту команду.
Некоторые дистрибутивы Linux используют версию vi, с которой работать не совсем удобно. Как правило, это относится к системам на основе deb.
Многие пользователи используют другие редакторы, например, nano. Но если мы хотим использовать, именно, vi, попробуем сделать работу с ним приятнее.
Ставим пакет:
apt install vim vim-tiny
Вводим команду, чтобы для текущего сеанса использоватся не стандартный vi, а тюнингованный:
alias vi=»vim.tiny»
Также добавим это же в файл:
echo ‘alias vi=»vim.tiny»‘ >> ~/.bashrc
Готово.
Ставим пакет:
apt-get install vim-enhanced
Вводим команду, чтобы для текущего сеанса использоватся не стандартный vi, а тюнингованный:
alias vi=»vim-enhanced»
Также добавим это же в файл:
echo ‘alias vi=»vim-enhanced»‘ >> ~/.bashrc
Готово.
При вставке текста с форматом специального назначения, например json и yaml, vi неправильно определяет синтаксис, что приводит к сбиванию формата строк.
Для решения проблемы нужно ввести команду :set paste.
Можно немного упростить процесс — добавляем в конфиг опцию set pastetoggle=<F3> .
а) для настройки всем пользователям:
vi /etc/vim/vimrc
б) только для текущего:
vi ~/.vimrc
Добавим строку:
set pastetoggle=<F3>
* в данном примере мы настроим быструю клавишу F3 , при нажатии которой мы введем опцию set paste .
Теперь переходим в редактор, нажимаем F3, переходим в режим вставки (i) — можно вставлять код.
В Debian / Astra Linux и некоторых программах подключения по SSH (например, Putty) после выхода из редактора vi, позиция курсора оказывается в верхней части экрана и на него накладывается предыдущий текст. Данное поведение мешает работать.
Для решения проблемы открываем на редактирование:
а) для настройки всем пользователям:
vi /etc/vim/vimrc
б) только для текущего:
vi ~/.vimrc
Добавим строку:
set t_ti= t_te=
Я рекомендую сделать два действия:
Открываем конфигурационный файл:
vi /etc/ssh/sshd_config
Опцию PermitRootLogin приводим к виду:
PermitRootLogin without-password
* значение without-password гарантирует, что мы не сможем подключиться к серверу по ssh под пользователем root с использованием пароля.
Если у нас нет готового SSH-ключа, на любом компьютере с Linux сгенерируем его командой:
ssh-keygen -t ed25519
В домашней директории:
ls -l ~/.ssh/
… будет создано 2 файла id_ed25519.pub и id_ed25519. Содержимое файла id_ed25519.pub фиксируем.
Идем на наш целевой компьютер Linux и заходим под пользователем, которым будем подключаться с использованием сертификата. Создаем каталог:
mkdir -p ~/.ssh
И файл:
vi ~/.ssh/authorized_keys
Вставляем в него содержимое файла id_ed25519.pub.
Теперь с использованием ключа из файла id_ed25519 можно подключиться к нашему компьютеру без пароля.
Создаем нового пользователя для работы с сервером.
а) если Rocky Linux / CentOS:
useradd kdo -G wheel -s /bin/bash -m
* где kdo — имя учетной записи; wheel — группа, которая позволяет входить в систему в привилегированном режиме ( su ).
б) если Astra Linux / Debian / Ubuntu:
useradd kdo -G sudo -s /bin/bash -m
* где kdo — имя учетной записи; sudo — группа, которая позволяет запускать команды в привилегированном (sudo) режиме.
в) если BSD:
pw useradd kdo -G wheel -m
После того, как создали пользователя, обязательно задаем пароль.
Это можно сделать командой:
passwd kdo
Предположим, имя нашего компьютера должно быть server.remontka.com . В зависимости от типа системы, наши действия будут различаться.
а) Для Linux:
hostnamectl set-hostname server.remontka.com
б) Для BSD:
ee /etc/rc.local
hostname=»server.remontka.com»
в) Для контейнеров.
В контейнерах недоступна подсистема systemd, поэтому такие команды, как hostnamectl там не работают. Редактируем файл:
vi /etc/hostname
server.remontka.com
После перезагрузки сервер поменяет имя. Чтобы поменять его сразу, дополнительно вводим команду:
hostname server.remontka.com
Многие сервисы завязаны на время — от него зависит корректность их работы. Да и, в принципе, неправильное время — не удобно.
Посмотреть текущее время и часовой пояс можно командой:
date
Настройка состоит из двух шагов: указания подходящей временной зоны и запуска приложения для синхронизации времени.
а) В большинстве систем Linux это можно сделать командой:
timedatectl set-timezone Europe/Moscow
* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой timedatectl list-timezones . Если мы увидим только одну зону UTC , скорее всего, у нас установлена минимальная версия Ubuntu. Для установки всех зон вводим apt install tzdata .
В системах Linux на базе RPM с включенным SELinux мы можем получить ошибку:
Failed to set time zone: Access denied
Для ее решения вводим:
restorecon -Rv /etc
б) В контейнерах и системах без systemd:
rm -f /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
* В данном примере мы задаем зону по московскому времени. Список всех доступных зон можно посмотреть командой ls /usr/share/zoneinfo .
Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.
а) если на системе Astra Linux / Ubuntu / Debian / ALT:
apt install chrony
б) если на системе Rocky Linux / CentOS / Red Hat / Fedora:
yum install chrony
systemctl enable chronyd —now
Если система возвращает время в 12-и часовом формате, а мы хотим более привычный, вводим команду:
dpkg-reconfigure locales
В открывшемся списке добавляем en_GB.UTF-8 UTF-8 .
Подтверждаем добавление локали. После вводим:
localectl set-locale LC_TIME=en_GB.utf8
Чтобы настройка применилась, выйти и войти в консоль:
exit
Для корректной работы по зашифрованному каналу связи, необходимо, чтобы на нашем сервере были свежие корневые сертификаты. В противном случае, мы будем получать предупреждения о попытках установить соединение с небезопасным сервером. Это приведем к тому, что некоторые команды не будут отрабатывать или будут требоваться с нашей стороны дополнительные действия.
Установка корневых сертификатов отличается для разных дистрибутивов Linux.
а) для систем на базе DEB (Astra Linux, Debian, Ubuntu, Mint):
apt install curl
curl -sLO http://ftp.ru.debian.org/debian/pool/main/c/ca-certificates/ca-certificates_20241223_all.deb
dpkg -i —refuse-downgrade ca-certificates_*_all.deb ; rm -f ca-certificates_*_all.deb
б) для систем на базе RPM (Rocky Linux, CentOS):
yum install ca-certificates
update-ca-trust
в) для ALT Linux:
apt-get update
apt-get install ca-certificates
Подробнее об установке корневых сертификатов в инструкции Обновление корневых сертификатов на Linux .
Значительно упрощает работу с консолью. Выполняется только на Linux — на BSD настроен по умолчанию.
Открываем на редактирование следующий файл:
vi /etc/inputrc +
И добавляем:
set show-all-if-ambiguous On
«e[A»: history-search-backward
«e[B»: history-search-forward
Выходим из системы и входим снова для применения настроек.
Если наш компьютер является виртуальной машиной, не забываем установить гостевые утилиты. Они позволяют повысить производительность системы, а также дают дополнительные возможности, например, получение дополнительной информации о виртуальной среде из хоста виртуализации или мягкую перезагрузку.
Для каждой системы виртуализации свои методы установки утилит. Читайте о них подробнее в других инструкциях:
1. Установка и настройка Proxmox VE .
2. Пошаговая инструкция по установке VMware Tools на Linux .
Для Debian или Ubuntu стоит настроить брандмауэр. А для Rocky Linux / CentOS — отключить SELinux (если только мы не собираемся его настраивать).
По умолчанию, в системах на базе deb брандмауэр работает по принципу полного разрешения. Желательно, это поправить.
Для начала убедимся в наличие необходимых для этого утилит:
apt install iptables iptables-persistent
* где:
Теперь выполним стартовые настройки.
Разрешаем SSH:
iptables -I INPUT -p tcp —dport 22 -j ACCEPT
* если мы подключаемся к SSH по нестандартному порту, то меняе 22 на нужное значение!
Создаем правила для нормальной работы apt или yum:
iptables -I INPUT -m state —state ESTABLISHED,RELATED -j ACCEPT
Разрешаем ICMP (для выполнения команды ping):
iptables -I INPUT -p icmp -j ACCEPT
Разрешаем все входящие на адрес локальной петли:
iptables -I INPUT -i lo -j ACCEPT
Ставим политику запрета на входящие и разрешаем все исходящие:
iptables -P INPUT DROP
Для сохранения правил вводим команду:
netfilter-persistent save
О других вариантах сохранения правил в iptables читайте в инструкции Настройка netfilter с помощью iptables .
В системах на базе RPM брандмауэр работает на запрет пакетов и не требует начальной настройки. Но в данных системах используется SELinux . Его, чаще, предпочитают отключать. Это делается двумя командами:
setenforce 0
sed -i ‘s/^SELINUX=.*/SELINUX=disabled/g’ /etc/selinux/config
Подробнее в инструкции Как отключить SELinux . Если мы хотим его настроить, читаем инструкцию Настройка SELinux в CentOS .
На все серверы, к которым можно подключиться из сети Интернет по ssh стоит установить Fail2ban. Данное средство защиты поможет предотвратить подбор пароля для подключения к нашему серверу (по крайней мере, сильно усложнит задачу взломщику).
Подробнее про работу данной программы рассказано в инструкции Настройка и использование Fail2ban на Linux . В рамказ данного руководства мы ограничимся установкой и запуском.
Команда для развертывания зависит от дистрибутива Linux.
а) RPM: Rocky Linux / CentOS:
yum install epel-release
yum install fail2ban
б) Deb: Ubuntu / Debian:
apt install fail2ban
По умолчанию, fail2ban настроен для защиты ssh на порту 22. Нам нужно только убедиться, что он запущен:
systemctl enable fail2ban —now
И убедиться, что правило существует:
fail2ban-client status
Мы должны увидеть что-то на подобие:
Status
|- Number of jail: 1
`- Jail list: sshd
Если команда покажет ошибку или не вернет никакого результат, то для пакета вашей системы нет стартовых настроек и их нужно выполнить самому. Подробнее о настройке fail2ban можно прочитать в инструкции Настройка и использование Fail2ban на Linux .
С 01 июля 2024 стало известно об уязвимости в пакете openssh-server, благодаря которой злоумышленник может выполнять команды от суперпользователя на компьютере с настроенным доступом по SSH.
Рекомендуется обновить пакет до версии 9.8p1 и выше. Посмотреть текущую версию можно командами:
bash
ssh -V
Мы должны увидеть что-то на подобие:
OpenSSH_8.9p1 Ubuntu-3ubuntu0.10, OpenSSL 3.0.2 15 Mar 2022
В нашем примере используется версия 8.9p1 , значит ее необходимо обновить.
Так как в начале данной инструкции мы уже обновляли пакеты из репозитория системы, обновление нам не помогло. Значит нужно собрать пакет вручную,
Устанавливаем dev-файлы, которые нам нужны для сборки исходника.
а) RPM: Rocky Linux / CentOS:
yum install curl tar gcc zlib-devel openssl-devel make
б) Deb: Ubuntu / Debian:
apt install curl build-essential zlib1g-dev libssl-dev make
После установки мы готовы к самой сборки и установки пакета.
Скачиваем исходник:
curl -sLO https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
* посмотреть актуальную версию пакета можно на странице официального сайта.
Распаковываем скачанный архив и переходим в распакованный каталог:
tar -zxf openssh-*.tar.gz
cd openssh-*/
Конфигурируем исходник:
./configure
В процессе конфигурирования система может вернуть различные ошибки. Они решаются, как правило, установкой нужного пакета. Решение необходимо найти в сети. Ниже приведу описание решений проблем, с которыми столкнулся я.
1) configure: error: OpenSSL >= 1.1.1 required
Необходимо обновить пакет OpenSSL до версии 1.1.1 и выше. Читайте подробнее Как обновить OpenSSL на Linux .
Выполняем сборку:
make
И устанавливаем пакет:
make install
Чтобы текущая сессия пользователя начала использовать новую версию пакета, запускаем по новой оболочку:
bash
И проверяем версию:
ssh -V
Также рекомендую перезагрузить sshd:
systemctl restart sshd
В Ubuntu 24.04 команда другая:
systemctl restart ssh
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…