commit 5e883124810660d1aacdef544a00085932d36cf2 Author: Alexander Zhirov Date: Sat May 7 21:30:13 2022 +0300 Создание репозитория. Новые конфигурации сети и SSH diff --git a/README.md b/README.md new file mode 100644 index 0000000..92871e9 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Конфигурации + +- [Настройка сети](network.md) +- [Настройка SSH](ssh.md) \ No newline at end of file diff --git a/network.md b/network.md new file mode 100644 index 0000000..6067b7d --- /dev/null +++ b/network.md @@ -0,0 +1,109 @@ +# Настройка сети + +## Netplan + +Настройка профиля [netplan](https://netplan.io/examples/) в файле `/etc/netplan/config.yaml`. В `Ubuntu` файл расположен `/etc/netplan/00-installer-config.yaml` + +### Параметры `netplan` + +- `renderer` - программа для обработки конфигурации (`networkd` или `NetworkManager`) +- `ethernets` - настройка сетевых адаптеров `ethernet` +- `wifis` - настройка беспроводных адаптеров +- `dhcp4` - получение IPv4 адреса по DHCP +- `dhcp6` - получение IPv6 адреса по DHCP +- `dhcp-identifier` - если передать значение "mac", то будет использоваться MAC-адрес в качестве идентификатора DHCP +- `addresses` - добавляет статические адреса к интерфейсу, можно несколько +- `gateway4` - указывает шлюз IPv4 +- `gateway6` - указывает шлюз IPv6 +- `nameservers` - указывает DNS-серверы + - `search` - дописывает окончание домена, если происходит обращание к узлу сети только по его имени +- `macaddress` - устанавливает новый MAC-адрес +- `routes` - позволяет настроить маршруты таблицы маршрутизации + - `to` - адрес/подсеть до которой необходим маршрут + - `via` - шлюз через которой будет доступна подсеть + - `on-link` - прописывать маршруты всегда при поднятии линка +- `routing-policy` - дополнительная настройка маршрутов, для IP или подсети +- `access-points` - список точек доступа для Wi-Fi +- `password` - пароль для точки доступа Wi-Fi +- `mode` - режим работы сетевой карты Wi-Fi + +### Команды `netplan` + +- `try` - попробовать применить конфигурацию с возможностью отмены +- `apply` - применить конфигурацию +- `generate` - проверка текущей конфигурации и запись на диск +- `config` - записать текущую конфигурацию сети в YAML + +### Отладка `netplan` + +- `--debug` - получение подробной информации при применении команд + +Проверка конфигурационного файла на ошибки и создание файлов конфигурации для программы-обработчика: + +```sh +sudo netplan --debug generate +``` + +Применение конфигурации: + +```sh +sudo netplan --debug apply +``` + +### Перезагрузка сетевого интерфейса + +Перезагрузка сетефого интерфейса в `Ubuntu`: + +```sh +sudo systemctl restart systemd-networkd.service +``` + +В других дистрибутивах: + +```sh +sudo systemctl restart networking +``` +```sh +sudo /etc/init.d/networking restart +``` + +### Примеры `netplan` + +Настройка сети, где `enp3s0`, `enp8s0` и `wlp3s0` - сетевые интерфейсы: + +- `enp3s0` - динамическая адресация +- `enp8s0` - статическая адресация +- `wlp3s0` - беспроводное подключение + +```sh +network: + version: 2 + renderer: networkd + ethernets: + enp3s0: + dhcp4: true + enp8s0: + addresses: + - 10.10.10.2/24 + gateway4: 10.10.10.1 + nameservers: + search: [mydomain, otherdomain] + addresses: [10.10.10.1, 1.1.1.1] + routes: + - to: default + via: 10.10.10.1 + wifis: + wlp3s0: + dhcp4: no + dhcp6: no + addresses: [192.168.0.21/24] + nameservers: + addresses: [192.168.0.1, 8.8.8.8] + access-points: + "network_ssid_name": + password: "**********" + routes: + - to: default + via: 192.168.0.1 + on-link: true +``` diff --git a/ssh.md b/ssh.md new file mode 100644 index 0000000..fb0867c --- /dev/null +++ b/ssh.md @@ -0,0 +1,151 @@ +# SSH + +## Сервер + +Файл кофигурации `/etc/ssh/sshd_config` + +### Базовая настройка + +- `Port` (**22**) - порт, через который происходит подключение +- `PermitRootLogin` (yes|**no**) - подключение с использованием `root`-доступа +- `PubkeyAuthentication` (**yes**|no) - подключение с использованием ключа +- `PasswordAuthentication` (yes|**no**) - подключение с использованием пароля +- `PermitEmptyPasswords` (yes|**no**) - подключение с использованием пустого пароля + +### Настройка файлов хранения публичных ключей: + +Создание каталога в домашней директории пользователя (`/home/user/.ssh`), от которого будет происходить подключение к серверу: + +```sh +mkdir ~/.ssh +chmod 700 ~/.ssh +``` + +Создание файла файла хранения публичных ключей: + +```sh +touch ~/.ssh/authorized_keys +chmod 600 ~/.ssh/authorized_keys +``` + +### Перезагрузка сервера SSH + +Перезагрузка сервера SSH в `Ubuntu` + +```sh +sudo systemctl restart sshd +``` + +В других дистрибутивах: + +```sh +sudo service sshd restart +``` +```sh +sudo /etc/init.d/sshd restart +``` + +## Клиент + +### Подключение к серверу + +Стандартное подключение: + +```sh +ssh user@host +``` + +например, по умолчанию, через `22` порт: + +```sh +ssh alexander@192.168.56.150 +``` + +или с другим портом: + +```sh +ssh -p 2222 alexander@192.168.56.150 +``` + +или с использованием ключа `~/.ssh/mykey`: + +```sh +ssh -i ~/.ssh/mykey alexander@192.168.56.150 +``` + + +### Создание ключа + +Ключи SSH используют алгоритмы: +- 🚨 `DSA` - это небезопасно и даже больше не поддерживается начиная с версии 7 `OpenSSH`. +- ⚠️ `RSA` - зависит от размера ключа. Если он имеет длину 3072 или 4096 бит, то все хорошо. 1024-битная длина считается небезопасной. +- `CD ECDSA` - зависит от того, насколько хорошо компьютер может генерировать случайное число, которое будет использоваться для создания подписи. Существует также проблема достоверности на кривых NIST, которые используются ECDSA. +- ✅ `Ed25519` - самый рекомендуемый алгоритм с открытым ключом, доступный сегодня. + +Создание ключей выполняется через утилиту `ssh-keygen`. По умолчанию создаётся пара 2048-битных ключей `RSA`: + +```sh +ssh-keygen +``` + +или + +```sh +ssh-keygen -t rsa +``` + +Самый рекомендуемый способ создания ключа: + +```sh +ssh-keygen -t ed25519 +``` + +Использование дополнительных полей при создании пары ключей SSH RSA: + +```sh +ssh-keygen -t rsa -b 4096 -C "alexander@zhirov.website" -f ~/.ssh/mykey -N password +``` + +- `-t rsa` - тип создаваемого ключа +- `-b 4096` - количество битов в ключе +- `-C "alexander@zhirov.website"` - комментарий, который будет добавлен в конец файла открытого ключа для идентификации +- `-f ~/.ssh/mykey` - имя файла закрытого ключа. В том же каталоге будет создан соответствующий файл открытого ключа с `.pub` в имени +- `-N password` - дополнительная парольная фраза, используемая для доступа к файлу закрытого ключа + +### Файл конфигурации серверов + +Настройка файла конфигурации серверов `~/.ssh/config` + +```sh +Host myserver + HostName 192.168.56.150 + User alexander + Port 2222 + IdentityFile ~/.ssh/mykey +``` + +- `Host` - имя к подключаемому серверу (произвольное название) + - `HostName` - адрес сервера + - `User` - имя пользователя, от которого происходит подключение + - `Port` - порт, по которому происходит подключение + - `IdentityFile` - файл ключа, если подключение происходит с использованием ключа SSH + +### Копирование ключа на сервер + +После создания ключа `~/.ssh/mykey` необходимо зарегистрировать (добавить) его публичную версию `mykey.pub` на подключаемый сервер с использованием `ssh-copy-id`: + +```sh +ssh-copy-id -i ~/.ssh/mykey.pub user@host +``` + +Добавление ключа с использованием дополнительных опций: + +```sh +ssh-copy-id -i ~/.ssh/mykey.pub -p 2222 alexander@192.168.56.150 +``` + +Добавления ключа вручную: + +```sh +cat ~/.ssh/mykey.pub | ssh -p 2222 alexander@192.168.56.150 "cat >> ~/.ssh/authorized_keys" +```