<img src="https://storage.yandexcloud.net/webazon/github/ubuntu-linux.png" alt="ubuntu-linux" style="zoom: 50%;" />

# Настройка операционной системы **UBUNTU** 24.04 на VPS

------

### Обновление и установка SSH-ключа

```bash
sudo apt update && sudo apt upgrade -y
```

Некоторые пакеты могут обновляться поэтапно. Чтобы принудительно обновить все пакеты вводим команду:

```bash
sudo apt list --upgradable
```

... поочерёдно обновляем пакеты

```bash
sudo apt install --reinstall <имя пакетв (-ов)>
```

```bash
sudo apt autoremove
```

... устанавливаем SSH-ключ, что бы подключаться без пароля

```bash
sudo nano ~/.ssh/authorized_keys
```

Информацию о системе и тесты можно провести командой

```bash
wget -qO- bench.sh | bash
```

или

```bash
curl -Lso- bench.sh | bash
```

------

### Настройка SSH

```bash
sudo nano /etc/ssh/sshd_config
```

```
...
PubkeyAuthentication yes
...
PasswordAuthentication no
...
```

```bash
sudo apt install fail2ban -y
sudo systemctl enable fail2ban --now
sudo systemctl status fail2ban
```

Перезапускаем SSH

```bash
sudo systemctl restart ssh
```

------

### Настройка хостов

```bash
sudo nano /etc/hostname
```

```
sudo nano /etc/hosts
```

```
127.0.0.1       localhost.localdomain   localhost
<IP>    		<hostnamae>				<host>
```

##### Перезагружаем систему.

------

### Генерация сертификатов webazon

Корневые сертификаты [Webazon Trusted Root](https://storage.yandexcloud.net/webazon/Webazon%20Trusted%20Root.rar) положить в папку ***/etc/ssl*** и отредактировать ***/etc/sysadminium.cnf***

```bash
sudo nano /etc/sysadminium.cnf
```

```
...
commonName_default			= <IP>
...
subjectAltName          	= IP:<IP>
...
```

```bash
cd /etc/ssl
openssl genpkey -algorithm RSA -out selfsigned.key
openssl req -new -key selfsigned.key -config sysadminium.cnf -reqexts req_ext -out selfsigned.csr
openssl x509 -req -days 730 -CA rootCA.crt -CAkey rootCA.key -extfile sysadminium.cnf -extensions req_ext -in selfsigned.csr -out selfsigned.crt
```

------

### Установка брандмаузера UFW

```bash
sudo apt install ufw -y
sudo ufw allow ssh
sudo ufw enable
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 21/tcp
sudo ufw allow 22/tcp
sudo ufw reload
```

### Установка сервера синхронизации времени

```bash
sudo timedatectl set-timezone Etc/UTC
sudo timedatectl
sudo apt install chrony -y
sudo systemctl enable chrony
sudo systemctl start chronyd
sudo ufw allow out 123/udp
sudo ufw reload
```

------

### Установка LEMP

```bash
sudo apt install nginx -y
sudo nginx -version
sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx
sudo nginx -t
sudo systemctl restart nginx

sudo apt install php -y
php -v
sudo apt install -y  php-mysql php-mbstring php-bcmath php-zip php-gd php-curl php-xml
sudo apt install php-fpm -y
php-fpm8.3 -v
sudo systemctl enable php8.3-fpm
sudo systemctl status php8.3-fpm
sudo systemctl status php8.3-fpm

sudo apt install mariadb-server mariadb-backup -y
mariadb --version
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo systemctl restart mariadb
sudo systemctl status mariadb
sudo mysql_secure_installation

sudo apt install phpmyadmin
```

Добавить в секцию **[mysqld]**

```bash
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

```
[mysqld]

default-time-zone=+00:00
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server=utf8
sql_mode="NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
```

### Установка FTP сервера

```bash
sudo apt install proftpd -y
systemctl enable proftpd
systemctl restart proftpd
sudo cp /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.backup
useradd www-root -m
passwd www-root
sudo chown -R www-root:www-root /var/www/html
ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=www-root --uid=33 --gid=33 --home=/var/www/html --shell=/usr/sbin/nologin
sudo ufw allow 60000:65535/tcp
sudo ufw reload
```

Предоставить права на запись пользователю ***www-root***

```bash
sudo nano /etc/proftpd/conf.d/rights.conf
```

```
<Directory /var/www/html>
        <Limit WRITE>
                Order deny,allow
                AllowUser www-root
        </Limit>
        <Limit ALL>
                AllowAll
        </Limit>
</Directory>
```

------

### Обслуживание

```bash
sudo apt install s3fs -y

chmod 600 /root/.passwd-s3fs
```

Создать резервную копию

```
bash /usr/local/bin/backup-day.sh
```

Очистка системы от мусора

```bash
bash /usr/local/bin/clear-system.sh
```

