---
title: 'Начальная настройка Debian'
summary: 'Настройка debian server после установки'
date: '10 06 2024'
draft: false
tags:
- Debian
- Fail2ban
- firewalld
---
# Введение

## Настройка языка
Параметры локали (locale) в Linux определяют текущие региональные настройки операционной системы, используемые в терминале и в графическом интерфейсе (формат даты и времени, поддерживаемые наборы символов/кодировки). Рассмотрим, как получить или изменить текущие настройки локали в Linux на примере Ubuntu и Debian.

Вывести текущие настройки локали в Ubuntu и Debian можно с помощью команды:

```sh
locale
# ИЛИ
localectl status
```

```sh
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
```


- **LANG** — текущая системная локаль (`en_US.UTF-8`)
- **LC_NUMERIC** — формат чисел
- **LC_MONETARY** — валюта и формат денежных величин
- **LC_TIME** — формат даты и времени

Чтобы вывести список доступных локалей на хосте:

```sh
locale -a
# ИЛИ
localectl list-locales
```

Для детальной информации об установленных локалях:
```sh
locale -a -v
```

Системная локаль `C.UTF-8` всегда присутствует в списке (локаль по умолчанию).

Чтобы вывести информацию о переменной окружения для формата времени и даты:
```sh
locale -k LC_TIME
```

### Установить русскую local в Ubuntu и Debian

Добавим русскую локаль `ru_RU.UTF-8`.

Список локалей, доступных для установки, можно найти в файле `/etc/locale.gen`. Для генерации русской локали выполните:

```sh
sudo locale-gen ru_RU.UTF-8
```

Назначение русской локали по умолчанию:
```sh
sudo update-locale LANG=ru_RU.UTF-8
```
Или:
```sh
sudo localectl set-locale LANG=ru_RU.UTF-8
```

Эта команда запишет следующую строку в файл `/etc/default/locale`:
```sh
LANG=ru_RU.UTF-8
```
Перезагрузите хост Linux, чтобы применить изменения.

Если вы зададите локаль, которая не была сгенерирована, команда `locale` выведет ошибки:

```sh
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR.utf8
```

Можно задать разные локали для различных региональных настроек:

```sh
sudo update-locale LC_NUMERIC=en_US.UTF-8 LC_TIME=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
```

В некоторых случаях необходимо сначала установить нужную локаль:

```sh
sudo apt-get install language-pack-fr
```

Если локаль не задана, и команда `locale -a` возвращает только три записи:

```sh
C
C.UTF-8
POSIX
```
Сгенерируйте новую локаль и примените изменения:
```sh
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF-8
```
Перезагрузите систему или откройте новое окно терминала. Новые пользователи будут использовать локаль, указанную в файле `/etc/default/locale`.

Для изменения локали конкретного пользователя, отредактируйте файл `.bashrc` в его домашнем каталоге:
```sh
nano .bashrc
```
### Создание нерутового пользователя

Создание нерутового пользователя — важная мера безопасности. Для этого используйте команды:
```sh
useradd [options] <username>
```
Затем для него добавляется пароль командой `passwd`:
```sh
passwd <username>
```
Наконец, этого пользователя нужно добавить в группу, которая имеет право выполнять команды с повышением привилегий `sudo`. 
```sh
usermod -aG sudo <username>
```
### Ключи вместо паролей SSH
Рекомендуется отключить аутентификацию по паролям в SSH и использовать ключи. Сначала установите OpenSSH:
```sh
sudo apt install openssh-client openssh-server
```

Запуск демона SSH (sshd) на сервере под Ubuntu:
```sh
sudo systemctl start sshd
# Автоматический запуск демона при каждой загрузке:
sudo systemctl enable sshd
```
Итак, нужно сгенерировать ключи SSH на компьютере, с которого вы будете заходить на сервер:
```sh
ssh-keygen -t rsa -b 4096
```
Публичный ключ хранится в файле `.pub` и выглядит как строка случайных символов, которые начинаются с `ssh-rsa`.
```sh
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname
```
Публичный ключ добавляется на сервер:
```sh
mkdir -p /home/<username>/.ssh && touch /home/<username>/.ssh/authorized_keys
vim /home/<username>/.ssh/authorized_keys
chmod 700 /home/<username>/.ssh && chmod 600 /home/<username>/.ssh/authorized_keys
chown -R <username>:<username> /home/<username>/.ssh
```
Затем настройте файл конфигурации SSH **/etc/ssh/sshd_config** :
```sh
PermitRootLogin no
PasswordAuthentication no
```
### SSH на клиенте Windows
SSH Agent может хранить закрытые ключи и предоставлять их в контексте безопасности текущего пользователя. Запустите службу ssh-agent и настройте автоматический запуск с помощью PowerShell команд управления службами:
```powershell
Set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agent
```
Добавьте ваш закрытый ключ в базу ssh-agent:
```powershell
ssh-add "C:\Users\user\.ssh\id_key_ssh"
# или так
ssh-add.exe $ENV:UserProfile\.ssh\id_key_ssh
```
### Настройки Firewall
#### Установка и настройка Firewalld
Чтобы ограничить доступ на сервер, можно использовать Firewalld. Установка:
```sh
sudo apt install firewalld
```
Добавляем SSH в исключения:
```sh
sudo firewall-cmd --zone=public --add-service=ssh --permanent
```
Запускаем сервис systemd для firewalld:
```sh
sudo systemctl start firewalld
sudo systemctl enable firewalld
```
### Настройки Fail2Ban
Fail2Ban помогает предотвратить атаки перебором, блокируя IP-адреса после нескольких неудачных попыток авторизации.
#### Установка Fail2Ban

Для установки на Ubuntu и Debian выполните:
```sh
sudo apt install fail2ban
```
Запуск сервиса:
```sh
systemctl start fail2ban
systemctl enable fail2ban
```
Настройки находятся в файлах `/etc/fail2ban/fail2ban.conf` и `/etc/fail2ban/jail.conf`.
### Автоматические обновления безопасности
В Ubuntu автоматические обновления включены по умолчанию.
### Смена порта SSH
Изменение порта SSH — мера обфускации:
```sh
Port <custom_port>
```

Указывайте порт с параметром `-p` для SSH и `-P` для SFTP и SCP.
### Заключение

Все эти шаги позволяют значительно повысить безопасность Linux-сервера.