Linux

Установка LAMP

lamp-install-linux-planetahost.jpg

Введение

Стек «LAMP» — это группа программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы позволить серверу размещать динамические веб-сайты и веб-приложения. Этот термин представляет собой аббревиатуру, обозначающую операционную систему Linux с веб-сервером Apache. Данные сайта хранятся в базе данных MariaDB, а динамический контент обрабатывается PHP.

Хотя этот программный стек обычно включает MySQL в качестве системы управления базами данных, некоторые дистрибутивы Linux, включая Debian, используют MariaDB в качестве замены MySQL.

В этом руководстве вы установите стек LAMP на сервер Debian 11, используя MariaDB в качестве системы управления базой данных.

Шаг 1 — Установка Apache

Веб-сервер Apache является одним из самых популярных веб-серверов в мире. Он хорошо задокументирован, имеет активное сообщество пользователей и широко использовался на протяжении большей части истории Интернета, что делает его отличным выбором для размещения веб-сайта.

Начните с обновления кеша менеджера пакетов. Если вы впервые используете sudo в этом сеансе, вам будет предложено ввести пароль пользователя, чтобы подтвердить, что у вас есть права на управление системными пакетами с помощью apt:

sudo apt update

Затем установите Apache такой командой:

sudo apt install apache2

Эта команда предложит вам подтвердить установку Apache. Подтвердите, написав Y, затем ENTER.

Вы можете убедиться, что все прошло по плану, посетив общедоступный IP-адрес вашего сервера в веб-браузере:

http://ip_вашего_сервера

После перехода по адресу у Вас должна открыться тестовая страница:

apache2-test-page.png

Шаг 2 — Установка MariaDB

Теперь, когда у вас есть запущенный и работающий веб-сервер, вам необходимо установить систему базы данных, чтобы иметь возможность хранить и управлять данными для вашего сайта.

Чтобы установить программное обеспечение MariaDB, запустите команду:

sudo apt install mariadb-server

После завершения установки рекомендуется запустить сценарий безопасности, который предварительно устанавливается вместе с MariaDB. Этот сценарий удалит некоторые небезопасные настройки по умолчанию и заблокирует доступ к вашей системе баз данных. Запустите интерактивный скрипт, выполнив:

sudo mysql_secure_installation

Этот сценарий проведет вас через ряд подсказок, где вы можете внести некоторые изменения в настройку MariaDB. Первое приглашение попросит вас ввести текущий пароль root базы данных. Не следует путать с системным паролем. Пользователь root базы данных является администратором с полными привилегиями в системе базы данных. Поскольку вы только что установили MariaDB и еще не вносили никаких изменений в конфигурацию, этот пароль будет пустым, поэтому нажмите ENTER в командной строке.

Следующее приглашение спрашивает, хотите ли вы установить пароль root для базы данных. Поскольку MariaDB использует специальный метод аутентификации для пользователя root, который обычно более безопасен, чем использование пароля, вам не нужно устанавливать его сейчас. Нажмите N, а затем ENTER.

Оттуда вы можете нажать Y, а затем ENTER, чтобы принять значения по умолчанию для всех последующих вопросов. Это удалит анонимных пользователей и тестовую базу данных, отключит удаленный вход в систему root и загрузит эти новые правила, чтобы MariaDB сразу учитывала внесенные Вами изменения.

Когда вы закончите, войдите в консоль MariaDB:

sudo mariadb

Вы должны получить такой ответ:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 41
Server version: 10.5.15-MariaDB-0+deb11u1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Обратите внимание, что вам не нужно было вводить пароль для подключения в качестве пользователя root. Это связано с тем, что методом аутентификации по умолчанию для административного пользователя MariaDB является unix_socket вместо пароля. Хотя на первый взгляд это может показаться проблемой безопасности, это делает сервер базы данных более безопасным, поскольку единственными пользователями, которым разрешено входить в систему в качестве пользователя root MariaDB, являются системные пользователи с привилегиями sudo, подключающиеся из консоли или через приложение, работающее с те же привилегии. На практике это означает, что вы не сможете использовать администратора базы данных root для подключения из вашего PHP-приложения.

Для повышения безопасности лучше иметь выделенные учетные записи пользователей с менее широкими привилегиями, настроенными для каждой базы данных, особенно если вы планируете разместить несколько баз данных на своем сервере.

Выйти из консоли MariaDB можно следующим образом:

exit

Шаг 3 — Установка PHP

У вас установлен Apache для обслуживания вашего контента и установлена MariaDB для хранения и управления вашими данными. PHP — это компонент вашей установки, который будет обрабатывать код для отображения динамического содержимого конечному пользователю. Он может запускать сценарии, подключаться к вашим базам данных MariaDB для получения информации и передавать обработанный контент на ваш веб-сервер для отображения.

В дополнение к пакету php вам понадобится php-mysql, модуль PHP, который позволяет PHP взаимодействовать с базой данных на основе MySQL, такой как MariaDB. Вам также понадобится libapache2-mod-php, чтобы Apache мог обрабатывать файлы PHP. Базовые пакеты PHP будут автоматически установлены как зависимости.

Чтобы установить эти пакеты, выполните следующую команду:

sudo apt install php libapache2-mod-php php-mysql

После завершения установки вы можете проверить свою версию PHP с помощью следующей команды:

php -v

Вы должны получить такой вывод:

PHP 7.4.30 (cli) (built: Jul  7 2022 15:51:43) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies

На этом этапе ваш стек LAMP полностью готов к работе, но перед тестированием вашей установки с помощью PHP-скрипта лучше всего настроить правильный виртуальный хост Apache для хранения файлов и папок вашего веб-сайта.

Шаг 4 — Создание виртуального хоста Apache

При использовании веб-сервера Apache вы можете создавать виртуальные хосты (аналогично блокам сервера в Nginx), чтобы инкапсулировать детали конфигурации и размещать более одного домена на одном сервере. В этом руководстве мы настроим домен с именем vash_domain, но вы должны заменить его своим собственным доменным именем.

По умолчанию Apache предоставляет свое содержимое из каталога, расположенного в /var/www/html, используя конфигурацию, содержащуюся в /etc/apache2/sites-available/000-default.conf. Вместо изменения файла конфигурации веб-сайта по умолчанию /var/www/html вы создадите новый виртуальный хост для тестирования среды PHP. Виртуальные хосты позволяют размещать несколько веб-сайтов на одном сервере Apache. Вы также создадите структуру каталогов в /var/www для сайта vash_domain, оставив /var/www/html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует каким-либо другим сайтам.

Начните с создания корневого веб-каталога для vash_domain следующим образом:

sudo mkdir /var/www/vash_domain

Затем назначьте владельца каталога с помощью переменной окружения $USER, которая будет ссылаться на вашего текущего системного пользователя:

sudo chown -R $USER:$USER /var/www/vash_domain

Затем откройте новый файл конфигурации в каталоге, доступном для сайтов Apache, с помощью предпочитаемого вами редактора командной строки. Здесь мы будем использовать nano:

sudo nano /etc/apache2/sites-available/vash_domain.conf

Команда выше создаст новый пустой файл. Добавьте следующую базовую конфигурацию с вашим собственным доменным именем:

<VirtualHost *:80>
    ServerName vash_domain
    ServerAlias www.vash_domain 
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/vash_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Сохраните и закройте файл, когда закончите. Если вы используете nano, вы можете сделать это, нажав CTRL + X, затем Y и ENTER.

С помощью данной конфигурации VirtualHost вы говорите Apache обслуживать vash_domain, используя /var/www/vash_domain в качестве корневого веб-каталога. Если вы хотите протестировать Apache без доменного имени, вы можете удалить или закомментировать параметры ServerName и ServerAlias, добавив знак решетки (#) в начало строк каждого параметра.

Теперь используйте команду a2ensite, чтобы включить этот виртуальный хост:

sudo a2ensite vash_domain

Возможно, вы захотите отключить веб-сайт по умолчанию, который устанавливается вместе с Apache. Это необходимо, если вы не используете собственное доменное имя, потому что в этом случае конфигурация Apache по умолчанию переопределит ваш виртуальный хост. Чтобы отключить веб-сайт Apache по умолчанию, запустите:

sudo a2dissite 000-default

Чтобы убедиться, что ваш файл конфигурации не содержит синтаксических ошибок, выполните следующую команду:

sudo apache2ctl configtest

Наконец, перезагрузите Apache, чтобы эти изменения вступили в силу:

sudo systemctl reload apache2

Далее вы создадите PHP-скрипт для проверки правильности установки и настройки PHP на вашем сервере.

Шаг 5 — Тестирование работы PHP

Теперь, когда у вас есть специальное место для размещения файлов и папок вашего веб-сайта, создайте тестовый скрипт PHP, чтобы убедиться, что Apache может обрабатывать и обрабатывать запросы на файлы PHP.

nano /var/www/vash_domain/info.php

Команда откроет пустой файл. Добавьте в файл следующий текст, который является кодом PHP:

<?php
phpinfo();

Сохраните и закройте файл, когда закончите. Если вы используете nano, вы можете сделать это, нажав CTRL + X, затем Y и ENTER.

Чтобы протестировать скрипт, откройте свой веб-браузер и перейдите по доменному имени или IP-адресу вашего сервера, а затем к имени скрипта, в данном случае это info.php:

http://vash_domain/info.php

Вы должны увидеть такую страницу:

php-test-page.png

На этой странице представлена информация о вашем сервере с точки зрения PHP. Это полезно для отладки и проверки правильности применения ваших настроек.

Если вы видите эту страницу в своем браузере, ваша установка PHP работает должным образом.

После проверки соответствующей информации о вашем PHP-сервере на этой странице лучше всего удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и вашем сервере Debian. Для этого используйте команду rm:

sudo rm /var/www/vash_domain/info.php

На этом установка и тестирование LAMP завершено. 

Установка и настройка CSF

csf-install-linux-planetahost.jpg

Введение

Брандмауэр Config Server Firewall (или CSF) - это бесплатный и продвинутый брандмауэр для большинства дистрибутивов Linux и VPS на базе Linux. В дополнение к базовой функциональности брандмауэра – фильтрации пакетов – CSF включает в себя другие функции безопасности, такие как обнаружение входа в систему/ вторжений/наводнений. CSF включает интеграцию пользовательского интерфейса для cPanel, DirectAdmin и Webmin, но в этом руководстве рассматривается только использование командной строки. CSF способен распознавать множество атак, таких как сканирование портов, синхронизирующие потоки и атаки методом перебора при входе во многие сервисы. Он настроен на временную блокировку клиентов, которые, как было обнаружено, атакуют облачный сервер.

С полным списком поддерживаемых операционных систем и функций можно ознакомиться на веб-сайте Config Server.

Для начала, пожалуйста, обратите внимание, что Perl и libwww являются обязательными условиями для установки CSF в любом из поддерживаемых дистрибутивов (RHEL и CentOS, openSUSE, Debian и Ubuntu). Поскольку он должен быть доступен по умолчанию, с вашей стороны не требуется никаких действий, если только один из следующих шагов не вернет фатальную ошибку (в этом случае используйте систему управления пакетами для установки отсутствующих зависимостей).

yum install perl-libwww-perl #CentOS/Fedora
apt install libwww-perl #Debian/Ubuntu

Если Вы хотите установить CSF на Debian 11 и выше, то Вам потребуется установить пакет iptables. Сделать это можно командой:  apt install iptables

Шаг 1 – Загрузка CSF

Перейдем в папку /usr/src и скачаем CSF:

cd /usr/src
wget https://download.configserver.com/csf.tgz

Шаг 2 – Распакуем архив с CSF

Распаковываем архив с файлами и переходим в папку csf:

tar xzf csf.tgz
cd csf

Шаг 3 – Запускаем скрипт установки

Скрипт проверит, установлены ли все зависимости, создаст необходимые структуры каталогов и файлы для веб-интерфейса, обнаружит открытые в данный момент порты и напомнит вам перезапустить демонов csf и lfd после завершения начальной настройки.

sh install.sh

Ваш IP-адрес был добавлен в белый список, если это возможно. Кроме того, SSH-порт был открыт автоматически, даже если он использует пользовательский порт. Брандмауэр также был настроен на включение режима тестирования, что означает, что правила iptables будут автоматически удалены через пять минут после запуска CSF. Это следует отключить, как только вы убедитесь, что ваша конфигурация работает, и вы не будете заблокированы.

Теперь запустим стандартный тест для проверки наличия всех модулей для корректной работы CSF:

perl /usr/local/csf/bin/csftest.pl

Вы должны получить такой вывод:

Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK

RESULT: csf should function on this server

Если получаете ошибку, то проверьте наличие пакета iptables на своем сервере.

Шаг 4 – Отключение Firewalld

Отключите брандмауэр, если он запущен, и настройте CSF:

systemctl stop firewalld
systemctl disable firewalld

Шаг 5 – Базовая настройка CSF

CSF можно настроить, отредактировав его файл конфигурации csf.conf в /etc/csf:

nano /etc/csf/csf.conf
Настройка портов

Чем меньше доступ к вашему VPS, тем безопаснее ваш сервер. Однако не все порты могут быть закрыты, так как клиенты должны иметь возможность пользоваться вашими услугами.

По умолчанию открыты следующие порты:

TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995" 
TCP_OUT = "20,21,22,25,53,80,110,113,443" 

UDP_IN = "20,21,53" 
UDP_OUT = "20,21,53,113,123"

Тут Вы сможете найти подробное описание каждого порта и если считаете, что он ненужен, то можете удалить из файла CSF.

Приведем парочку примеров конфигурации портов, которые нужны для успешного запуска той или иной службы.

На любом сервере:

TCP_IN: 22,53 TCP_OUT: 22,53,80,113,443 UPD_IN: 53 UPD_OUT: 53,113,123

Apache:

TCP_IN: 80,443

FTP-сервер:

TCP_IN: 20,21 TCP_OUT: 20,21 UPD_IN: 20,21 UPD_OUT:20,21

Почтовый сервер:

TCP_IN: 25,110,143,587,993,995 TCP_OUT: 25,110

Сервер MySQL (если требуется удаленный доступ)

TCP_IN: 3306 TCP_OUT: 3306

Если вы используете IPv6 для своих служб, вам также следует настроить TCP6_IN, TCP6_OUT, UPD6_IN и UPD6_OUT аналогично настройке портов IPv4 ранее.

Дополнительные настройки

CSF предлагает огромное количество различных опций в своих конфигурационных файлах. Некоторые из наиболее часто используемых настроек описаны ниже.

ICMP_IN Установка ICMP_IN в 1 разрешает пинговать ваш сервер, а 0 отклоняет такие запросы. Если вы размещаете какие-либо общедоступные службы, рекомендуется разрешать запросы ICMP, поскольку их можно использовать для определения доступности вашей службы.

ICMP_IN_LIMIT Устанавливает количество запросов ICMP (ping), разрешенных с одного IP-адреса в течение заданного промежутка времени. Обычно нет необходимости изменять значение по умолчанию (1/с)

DENY_IP_LIMIT Устанавливает количество заблокированных IP-адресов, которые CSF отслеживает. Рекомендуется ограничить количество запрещенных IP-адресов, так как слишком большое количество блоков может снизить производительность сервера.

DENY_TEMP_IP_LIMIT То же, что и выше, но для временных блоков IP-адресов.

PACKET_FILTER Фильтровать недопустимые, нежелательные и незаконные пакеты.

SYNFLOOD, SUNFLOOD_RATE и SYNFLOOD_BURST Обеспечивает защиту от SYN-флуд-атак. Это замедляет инициализацию каждого соединения, поэтому вам следует включать это, только если вы знаете, что ваш сервер подвергается атаке.

CONNLIMIT Ограничивает количество одновременных активных подключений к порту.

Пример:

22;tcp;5;250

Это заблокирует IP-адрес, если на порту 22 будет установлено более 5 подключений с использованием протокола TCP в течение 250 секунд. Блокировка снимается по прошествии 250 секунд после отправки последнего пакета клиентом на этот порт. Вы можете добавить больше портов, разделив их запятыми, как описано ниже.

порт1;протокол1;количество_соединений1;время1,порт2;протокол2;количество_соединений2;время2
Больше настроек

CSF предлагает широкий спектр настроек, которые мы не рассматривали в этом руководстве. Значения по умолчанию, как правило, хороши и могут использоваться практически на любом сервере. Настройки по умолчанию настроены на предотвращение большинства флуд-атак, сканирования портов и попыток несанкционированного доступа.

Однако если вы хотите настроить конфигурацию более подробно, прочтите комментарии в файле /etc/csf/csf.conf и отредактируйте их по своему усмотрению.

Без установки Вы можете ознакомится с описанием каждой функции Тут.

Шаг 6 – Применение изменений

Всякий раз, когда вы изменяете настройки в csf.conf, вы должны сохранить файлы и перезапустить CSF, чтобы изменения вступили в силу.

Когда Вы закончите редактировать файл conf.csf, закройте файл, нажав Ctrl + X. Когда вас спросят, сохранять изменения или нет, нажмите Y, чтобы сохранить изменения.

После этого следует применить изменения, перезапустив CSF командой:

csf -r

Если все прошло по плану, и вы все еще можете получить доступ к серверу, откройте файл конфигурации еще раз:

nano /etc/csf/csf.conf

и измените параметр TESTING в начале файла конфигурации на 0, как показано ниже:

TESTING = "0"

Сохраните файл и примените изменения с помощью команды:

csf -r

Шаг 7 – Активация CSF

Пришло запустить CSF с нашими правилами в работу:

systemctl restart {csf,lfd}
systemctl enable {csf,lfd}
systemctl is-active {csf,lfd}
csf -v

На этом базовая настройка CSF завершена.

Шаг 8 – Работа с CLI CSF

Скоро...

Подключение к серверу по ssh

SSH — сетевой протокол, позволяющий создать безопасное удалённое подключение к серверам на базе OC Linux.

Как подключиться c OC Windows по SSH

Если на вашем компьютере установлена ОС Windows, а на сервере — UNIX-подобная система (например, Ubuntu, Debian, CentOS и др.), то для установки SSH-соединения можно использовать PuTTY. Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует установки. Скачать её можно с официального сайта по ссылке

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия:

1.Скачайте нужную версию PuTTY по ссылке.
2. Запустите файл putty.exe. Откроется окно программы. Вводим IP-адрес сервера в графу «Имя хоста». Проверяем графу «Тип соединения» — должен быть выбран пункт «SSH». Нажимаем «Соединиться».

image.png

Может появиться предупреждение системы безопасности PuTTY — оно срабатывает при подключении к новому серверу.  Нажмите Да — и соединение продолжится.

ssh4.png

3. Вводим логин и нажимаем "Enter". Затем вводим пароль и снова нажимаем "Enter"

ssh2.png

4. Готово. Мы подключились к серверу по SSH

ssh3.png

Как подключиться c OC Linux по SSH

Для подключения используем SSH-клиент Terminal, который встроен в ОС на основе Linux. При вводе команд нужно помнить, что в Linux-образных ОС они вводятся только в нижнем регистре (с маленькой буквы).

1. Открываем приложение. Вводим команду вида «ssh логин@IP-адрес» . Нажимаем «Enter».

ssh5.png

2. Если пользователь использует SSH-соединение первый раз, ему потребуется ввести команду подтверждения («Yes»)

ssh6.png

3. Вводим пароль от виртуального сервера и нажимаем "Enter".

ssh7.png

4. Готово. Вы успешно подкюлчились к серверу

ssh8.png

Как подключиться c macOS и iOS по SSH

Для подключения к серверу по SSH с устройств на операционной системе macOS, также как и в предыдущем случае, используем встроенный клиент Terminal.

1. Открываем приложение. Вводим команду с данными сервера «ssh логин@IP-адрес». Нажимаем «Enter».

ssh9.png

2. При первом входе подтверждаем свои действия соответствующей командой «Yes».

ssh10.png

3. Вводим пароль от виртуального сервера.

ssh11.png

4. Подключение к виртуальному серверу по протоколу SSH завершено.

ssh12.png

Как настроить авторизацию по ключу SSH

SSH-ключи используются для идентификации клиента при подключении к серверу по SSH-протоколу. Используйте этот способ вместо аутентификации по паролю.

SSH-ключи представляют собой пару — закрытый и открытый ключ. Закрытый должен храниться в закрытом доступе у клиента, открытый отправляется на сервер и размещается в файле authorized_keys.

Создание SSH-ключей в Linux на примере Ubuntu

На клиентской стороне должен быть установлен пакет ssh (openssh). При необходимости пакет можно установить следующей командой:

sudo apt-get install ssh

В некоторых ОС компоненты OpenSSH можно установить отдельно для клиента  openssh-client и отдельно для сервера openssh-server.

sudo apt install openssh-server openssh-clients

На клиентском компьютере в командной строке выполните команду генерации ключей:

ssh-keygen

Введите путь файла, в который будут помещены ключи. Каталог по умолчанию указан в скобках, в примере /домашний_каталог/.ssh/id_rsa. Если хотите оставить расположение по умолчанию, нажмите Enter.

Пароль (passphrase) используется для ограничения доступа к закрытому ключу. Пароль усложнит использование ключа третьими лицами в случае утраты. Если не хотите использовать секретную фразу, нажмите Enter без заполнения строки.

Успешно сгенерировав пару ключей, вы увидите уведомление:

sshkey1.png

Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub, закрытый — /домашний_каталог/.ssh/id_rsa.

Скопируйте открытый ключ на сервер в файл  /домашний_каталог/.ssh/authorized_keys. Одной строкой:

cat ~/.ssh/id_rsa.pub | ssh username@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'

Также Вы можете скопировать ваш ключ при помощи ssh-copy-id. Данный метод подойдет тем, чья ОС поддерживает команду SSH-Copy-ID, и удаленный сервер имеет доступ по SSH без ключа.  Введите команду:

ssh-copy-id username@remote_host

Необходимо будет ввести пароль от пользователя удаленного сервера. После успешного подключения ключи будут добавлены и мы увидим соответствующий вывод:

sshkeys2.png

Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.

Создание SSH-ключей на Windows с помощью PuTTYgen

Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH. Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.

Запустите приложение PuTTYgen которое устанавливается вместе с PuTTY.

sshkey4.png

Выберите тип ключа SSH2-RSA и нажмите на кнопку "Generate".

sshkey5.png

В процессе генерации ключей несколько раз произвольно проведите мышкой по экрану приложения для создания случайных величин, используемых для ключей.

sshkey6.png

После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите "Save public key" и "Save private key" . Укажите расположение файлов с ключами. 

sshkey7.png

При сохранении закрытого ключа, если не заполнено поле "Key passphrase" , появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»

sshkey8.png

Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys. Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh

sshkey9.png

Откройте файл authorized_keys через WinSCP и файл, в который вы сохранили открытый ключ (public), на локальном компьютере текстовым редактором. Скопируйте значение ключа, сохраните и закройте файл в WinSCP.

sshkey10.png

При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке "Connections" - "Auth" выберите необходимый путь.

sshkey11.png

Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.

Отключение аутентификации по паролю

Подключитесь к серверу по SSH, используя пароль, и откройте файл /etc/ssh/sshd_config для редактирования.

Убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра

PasswordAuthentication no.

sshkey3.png

Перезапустите службу sshd командой:

service sshd restart

Готово! После перезапуска службы подключайтесь к серверу.

Как добавить область подкачки на linux Ubuntu 20.04

Подкачка — это часть хранилища на жестком диске, которая была выделена для временного хранения данных операционной системой в случае переполнения оперативной памяти. Это позволит вам увеличить количество информации, которое ваш сервер может хранить в рабочей памяти, соблюдая определенные меры предосторожности. Область подкачки на жестком диске будет использоваться в основном тогда, когда в оперативной памяти больше нет достаточного места хранения данных для приложений.

Чтение и запись информации с диска намного медленнее, чем из оперативной памяти. Операционная система будет по-прежнему предпочитать работать с данными приложений в памяти, а подкачку использовать для более старых данных. Как правило, полезно перестраховываться и иметь область подкачки в качестве резерва на случай нехватки оперативной памяти, чтобы исключить ошибки памяти в системах без SSD

1. Проверка информации о подкачке в системе

 Для начала мы проверим, есть ли уже в системе область подкачки. Можно иметь несколько файлов или разделов подкачки, но обычно одного достаточно.

Можно узнать, сконфигурирована ли в системе подкачка, введя команду:

sudo swapon --show

Если после этой команды ничего не появляется, в системе сейчас нет области подкачки.

Можно убедиться в отсутствии активной подкачки при помощи утилиты free:

swap1.png

В строке ​​​Swap видно​​​, что в системе отсутствует активная подкачка.

2. Проверка свободного пространства в разделе жесткого диска

Перед созданием файла подкачки проверим текущее состояние диска, чтобы убедиться, что у нас достаточно места. Вводим комнаду:

df -h

swap2.png

В данном случае устройство с / в столбце "​​​​​​Mounted on"​​​ — наш диск. В данном примере у нас достаточно места (использовано только 3,4 Гбайт). Ваше использование, вероятно, будет другим.

Хотя существует много мнений относительно правильного размера области подкачки, на самом деле он зависит от ваших личных предпочтений и требований приложений. Обычно можно начать с объема, равного объему оперативной памяти в системе, или в два раза большего. Еще одно полезное общее правило — любое превышение 4 Гбайт для области подкачки, скорее всего, не нужно, если вы используете ее только для резервирования оперативной памяти.

3. Создание файла подкачки

Теперь, когда известно свободное место на жестком диске, можно создать файл подкачки . Мы добавим файл необходимого размера под названием swapfile в корневую (/) директорию.

Лучше всего создавать файл подкачки при помощи программы fallocate. Эта команда мгновенно создает файл указанного размера.

Поскольку на сервере в нашем случае 1 Гбайт оперативной памяти, в этом руководстве создадим файл размером 1 Гбайт. Скорректируйте с учетом необходимости на вашем сервере:

sudo fallocate -l 1G /swapfile

Чтобы проверить правильность выделенного объема памяти, введите:

ls -lh /swapfile

swap3.png

4. Активация файла подкачки

Теперь, когда у нас есть файл правильного размера, нам нужно превратить его в пространство подкачки.

Сначала нужно изменить права доступа к файлу, чтобы только пользователи с правами root могли читать его содержимое. Это предотвращает доступ обычных пользователей к файлу — такой доступ может существенно влиять на безопасность.

Чтобы передать все права доступа пользователям root, введите:

sudo chmod 600 /swapfile

Теперь только у пользователя с правами root отмечены флажки чтения и записи.

Теперь можем отметить файл как пространство подкачки, введя следующее:

sudo mkswap /swapfile

После этого мы можем активировать файл подкачки, чтобы система могла его использовать:

sudo swapon /swapfile

swap4.png

Убедитесь, что пространство подкачки активировано, введя следующее:

sudo swapon --show

Чтобы подтвердить наши выводы, можем снова проверить ответ утилиты free:

free -h

swap5.png

Подкачка успешно настроена, и операционная система начнет использовать ее по мере необходимости.

5. Сделать файл подкачки постоянным

В результате внесенных нами изменений файл подкачки активирован для текущей сессии. После перезагрузки сервер не сохранит настройки подкачки автоматически. Мы можем изменить это, добавив файл подкачки к файлу /etc/fstab.

Сделайте резервную копию файла /etc/fstab на случай если что-то пойдет не так:

sudo cp /etc/fstab /etc/fstab.bak

Добавьте информацию о файле подкачки в конец файла /etc/fstab, введя следующее:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Как настроить поддержку русского языка в консоли

Добавление русского языка в Ubuntu/Debian

Установим\обновим пакет locales:

apt-get install locales

Затем выполним команду:

dpkg-reconfigure locales

Откроется диалоговое окно, в котором необходимо добавить поддержку русского языка

linux-rus1.png

Выберем ru_RU.UTF-8 UTF-8

linux-rus2.png

После выбора локалей для генерации будет предложен выбор локали по умолчанию в системном окружении. Выберем ru_RU.UTF-8 для поддержки русского языка в терминале

linus-rus3.png

Добавление русского языка в CentOS

Для того чтобы проверить наличие готовых локалей в системе выполняем команду

locale -a | grep ru

И в выводе команды ищем необходимую нам локаль. Для случая с кодировкой UTF-8 необходимая локаль имеет вид ru_RU.utf8. Если такая строка есть в выводе команды то делаем следующее:

Создаем файл /etc/sysconfig/i18n командой:
touch /etc/sysconfig/i18n

После чего в файл пишем следующие строки:

LANG="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"

После этих изменений сохраняем файл, выходим из консоли и заходим в нее опять. После этих действий мы наблюдаем русский шрифт в локали.

Если же при выводе команды

locale -a | grep ru

нет русской локали то ее необходимо сделать. Команда для этого выглядит так:

localedef -i ru_RU -f UTF-8 ru_RU.UTF-8

Что она делает. Она берет из папки /usr/share/i18n/locales/ файл ru_RU (это файл с русской локалью) и из папки /usr/share/i18n/charmaps файл UTF-8.gz (это символьная карта для юникода) и на основе этих файлов генерит нужную нам локаль ru_RU.UTF-8
После этого действия у нас в системе появляется нужная нам локаль, а дальше делаем все так, как описано на абзац выше.
Добавлю только что файлы находящиеся в папке usr/share/i18n/ принадлежат glibc-common-2.x.x и если вы их не наблюдаете там, то необходимо разбираться с самим glibc-common.

Установить русский язык в качестве системного можно с помощью команды:

localectl set-locale LANG=ru_RU.UTF-8

Посмотреть доступные раскладки русских клавиатур:

[root@localhost]# localectl list-keymaps | grep ru
ruwin_alt-CP1251
ruwin_alt-KOI8-R
ruwin_alt-UTF-8
ruwin_alt_sh-UTF-8
ruwin_cplk-CP1251
ruwin_cplk-KOI8-R
ruwin_cplk-UTF-8
ruwin_ct_sh-CP1251
ruwin_ct_sh-KOI8-R
ruwin_ct_sh-UTF-8
ruwin_ctrl-CP1251
ruwin_ctrl-KOI8-R
ruwin_ctrl-UTF-8

Установить русскую раскладку с переключением по ALT+SHIFT:

localectl set-keymap ruwin_alt_sh-UTF-8

После применения необходимо перезагрузить сервер.

 

Базовая настройка iptables

Правильно настроенный брандмауэр – один из основных аспектов безопасности сервера. Брандмауэр позволяет выбрать для сервера индивидуальные правила и политику, которые ограничат трафик. Брандмауэры, такие как iptables, позволяют определять структурные рамки, в которых будут применяться эти правила.

Данное руководство поможет вам составить список базовых правил брандмауэра для сервера Ubuntu 20.04. Такой список легко расширить, и в дальнейшем вы сможете использовать этот шаблон для создания более сложных правил.

Установка iptables-persistent

Начнем с обновления локального кеша пакетов:

sudo apt update

Теперь нужно установить пакет iptables-persistent, который позволяет сохранять наборы правил брандмауэра и автоматически использовать их в дальнейшем:

sudo apt install iptables-persistent

Во время установки пакет предложит вам сохранить текущий набор правил брандмауэра. Чтобы сделать это, выберите yes. Обратите внимание, что нужно выполнить команду netfilter-persistent для запуска службы брандмауэра iptables. Потом мы отредактируем сгенерированные файлы правил.

Команда iptables обрабатывает только трафик IPv4. Для обработки трафика IPv6 существует отдельный инструмент, ip6tables. Правила для IPv4 и IPv6 хранятся в отдельных таблицах и цепочках. Пакет iptables-persistent записывает правила IPv4 в /etc/iptables/rules.v4, а правила IPv6 – в /etc/iptables/rules.v6.

Основные команды iptables

Вывод текущих правил в табличном виде выполняется при помощи вызова команды iptables с ключом -L:

sudo iptables -L

Вывод:

Output:
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

В выводе представлены 3 стандартных цепочки (INPUT, OUTPUT, FORWARD) и действие по умолчанию (default policy) для каждой цепочки – ACCEPT. Как видим, у нас пока нет боевых правил. По умолчанию iptables идет без предустановленных правил и пропускает весь трафик.
Вывод текущих настроенных правил в виде строк выполняется при помощи вызова команды iptables с ключом -S:

sudo iptables -S

Вывод:

Output:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

Ключ -P указывает на действие, применяемое к пакету по умолчанию.
Построчный вывод полезен тем, что каждая строка вывода — это полноценная команда в iptables (например, мы можем получить такой вывод уже на настроенном сервере и использовать его для настройки другого сервера, сделав небольшие правки).
Для очистки всех правил используется ключ -F:

sudo iptables -F

Тут стоит отметить важность политик по умолчанию, так как они не удалятся после применения этой команды. Поясним подробней. Допустим у нас есть только удаленный доступ к серверу и в политике iptables по умолчанию выставлено действие DROP. В результате чего после очистки всех правил повторное подключение к серверу будет невозможно. Поэтому, если у нас нет физического доступа или консольного подключения к серверу, то перед сбросом всех правил необходимо убедиться, что действие по умолчанию – ACCEPT. Это позволит нам удаленно подключиться к серверу, создать разрешающее удаленную сессию первое правило. После этого для повышения безопасности можно уже выставить политику по умолчанию – DROP.
Чтобы задать действие по умолчанию ACCEPT и выполнить последующую очистку правил вводим:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F
Создание правил в iptables

Создадим правило, которое позволит принимать текущее SSH-соединение между нами и сервером

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT

Добавим еще два правила, разрешающие SSH-соединения (по умолчанию на 22 порт) и WEB-подключения на 80 порт.
Приведем синтаксис этих правил:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Разберем новые параметры:

Также есть еще одно правило, которое связано с понятием “петли” (loopback-интерфейса). Используется loopback-интерфейс для взаимодействия служб и приложений в пределах одной локальной системы, без надобности отправления пакетов на сетевой интерфейс.
Правило выглядит так:

sudo iptables -I INPUT 1 -i lo -j ACCEPT

Разберем его:

Мы составили 4 правила, на основании которых iptables будет разрешать трафик на сервер. Но поскольку мы не создали ни одного запрещающего правила, то все соединения с сервером будут по-прежнему разрешены.
Есть два способа реализации блокирования нежелательного трафика:

  1. Политика запрета по умолчанию.

Достигается написанием правила:

sudo iptables -P INPUT DROP

Тут надо помнить об опасности потери удаленного доступа к серверу. Желательно его применять, когда есть консольный доступ к серверу.

  1. Добавление запрещающего правила в конец цепочки.
sudo iptables -A INPUT -j DROP

Тут уже нет опасности потери удаленного подключения к серверу, но есть особенность добавления правил. Новые правила необходимо добавлять в цепочку перед запрещающим правилом. Достигается это путем ввода набора из трех правил: удаление запрещающего правила, добавление нового правила, добавление запрещающего правила в конец.

sudo iptables -D INPUT -j DROP
sudo iptables -A INPUT "MY_NEW_RULE"
sudo iptables -A INPUT -j DROP

Также можно вставить новое правило до запрещающего правила, используя порядковый номер. Для этого сперва узнаем нумерацию имеющихся правил:

sudo iptables -L --line-numbers

Потом на основании вывода вставляем правило под нужным порядковым номером:

sudo iptables -I INPUT 4 "MY_NEW_RULE"

Удаление правил iptables

Приведем различные способы удаления правил iptables.

Удаление по имени правила.

В этом случае используется ключ -D после которого следует имя правила в виде строки. Имя правила узнаем при помощи команды, рассмотренной выше:

sudo iptables -S

Допустим в данном выводе мы нашли правило

-A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

и которое подлежит удалению.
Для этого введем:

iptables -D INPUT -i eth0 -p tcp --dport 443 -j ACCEPT

Обратите внимание, что ключ -A при удалении правила не указывается.

Удаление по номеру правила в цепочке.

Для удаления этим способом нам необходимо знать название цепочки, к которой принадлежит правило и его порядковый номер в ней. Все это определяется командой:

sudo iptables -L --line-numbers

Вывод:

Chain INPUT (policy DROP)
num  target     prot opt source               destination
1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
2    ACCEPT     all  --  anywhere             anywhere
3    DROP       all  --  anywhere             anywhere             ctstate INVALID
4    UDP        udp  --  anywhere             anywhere             ctstate NEW
5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW
6    ICMP       icmp --  anywhere             anywhere             ctstate NEW
7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable

И само удаление:

sudo iptables -D ИМЯ ЦЕПОЧКИ НОМЕР

Например, удалим привило с номером 5 в цепочке INPUT:

sudo iptables -D INPUT 5
Удаление всех правил iptables

Мы можем удалить все правила в пределах одной цепи. Для этого используется ключ -F. Например, удалим все правила цепочки INPUT:

sudo iptables -F INPUT

Для удаления правил во всех цепочках вводим команду:

sudo iptables -F
Сохранение правил iptables

По умолчанию правила iptables не хранятся в постоянной памяти и сбрасываются после перезагрузки.Один из способов сохранения правил — использование пакета iptables-persistent, который мы установили ранее.

Для сохранения правил введите команду:

sudo service netfilter-persistent save

Система при следующей загрузке использует последние сохраненные правила

В процессе настройки брандмауэра, по разным причинам, возникает необходимость вернуться к заведомо рабочим, испытанным правилам. Сервис netfilter-persistent сохраняет их в файле /etc/iptables/rules.v4. 

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

iptables-restore < /etc/iptables/rules.v4
Примеры настройки iptables

Как заблокировать IP-адрес в iptables

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Как разрешить IP-адрес в iptables

Необходимо разрешить весь трафик к серверу для клиента с IP-адресом 192.168.1.100:

iptables -A INPUT -s 192.168.1.100 -j ACCEPT

Как открыть порт в iptables

Предположим, что политика по умолчанию — блокировать все, что явно не разрешено. Откроем порты веб-сервера для обеспечения работы HTTP протокола — порт 80, и поддержки HTTPS протокола совместно с SSL — порт 443. Также для доступа к серверу по SSH откроем порт 22. Эту задачу можно решить как минимум двумя способами: создать однострочное правило, либо прописать правила по каждому из портов, рассмотрим оба. В одну строку:

iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT

При использовании расширения multiport, всегда необходимо использовать критерий -p tcp или -p udp, таким образом, одной строкой можно указать до 15 разных портов через запятую. Важно не путать критерии —-dport и —-dports. Первый из них используется для указания одного порта, второй сразу для нескольких, аналогично с —sport и —sports.

Вариант многострочной записи — для каждого порта свое правило:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Как закрыть порт в iptables

Необходимость в закрытии порта может возникнуть, когда используется политика по умолчанию ACCEPT и доступ к определенному сервису нужно ограничить. Рассмотрим несколько ситуаций.

Закроем доступ к FTP серверу, работающему на 21 порту:

iptables -A INPUT -p tcp --dport 21 -j DROP

Оставим доступ только себе к SSH серверу, для остальных запретим:

iptables -A INPUT -p tcp ! -s 192.168.1.100 --dport 22 -j DROP

Здесь 192.168.1.100 — IP-адрес доверенной машины, знак ! перед ключом -s используется для инверсии, т.е. всем, кроме этого адреса доступ закрыт.

Как разрешить или запретить ICMP ping трафик

Разрешить ping хоста:

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

Запретить входящие icmp-пакеты:

iptables -A INPUT -p icmp --icmp-type 8 -j DROP

Как разрешить трафик на локальном узле

Трафик на локальном сетевом интерфейсе lo должен быть разрешен для корректной работы сервисов, использующих для обмена данными интерфейс локальной петли, например, базы данных, прокси-сервера squid. Поэтому рекомендуется разрешить трафик на вход и выход:

iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT

 

 

Настройка fail2ban для защиты ssh соединения

Fail2ban — простой в использовании локальный сервис, который отслеживает log–файлы запущенных программ, и на основании различных условий блокирует по IP найденных нарушителей.

Программа умеет бороться с различными атаками на все популярные *NIX–сервисы, такие как Apache, Nginx, ProFTPD, vsftpd, Exim, Postfix, named, и т.д.

Но в первую очередь Fail2ban известен благодаря готовности «из коробки» к защите SSH–сервера от атак типа «bruteforce», то есть к защите SSH от перебора паролей.

Установка

Если до этого вы не обновляли базы данных apt, то установку можно начать с этого:

sudo apt update
sudo apt upgrade

После обновления apt можно переходить к установке Fail2ban:

sudo apt install fail2ban

Теперь активируем Fail2ban, чтобы она автоматически запускалась после перезагрузки сервера:

sudo systemctl enable fail2ban

Перед запуском Fail2ban в работу осталось настроить параметры фильтрации, по которым будет происходить блокировка IP.

Настройка

По умолчанию Fail2ban использует правила блокировки, указанные в файле jail.conf. Это системный файл, который обновляется вместе с программой, поэтому использовать его в качестве основного файла с параметрами блокировки не рекомендуется.

Мы создадим собственный конфигурационный файл jail.local. Система приоритетов в Fail2ban настроена таким образом, что в качестве основных применяются правила, указанные в jail.local.

Структура конфигурационного файла

Конфигурационный файл Fail2ban состоит из так называемых jail-ов — отдельных блоков правил для разных служб. В одном файле jail.local можно не только указать все правила для всех сетевых служб сервера, но и управлять их включением и выключением.

Структура всех jail-ов одинакова:

  1. В первой строке в квадратных скобках указывают название службы, к которой будет применяться следующий ниже набор правил. В нашем случае это [sshd].

  2. Далее определяют параметр enabled, отвечающий за включение или отключение данного jail-а. Мы установим его true, чтобы наш jail был активен.

  3. После этого указывают условия блокировки: максимальное количество попыток подключения (maxretry), время, за которое эти попытки были произведены (findtime), и время, на которое нужно запретить доступ с этого IP (bantime).

  4. В последней части jail-а указывают IP-адреса, которые считаются надёжными (ignoreip), например, IP-адрес вашего домашнего компьютера.

Мы рекомендуем добавить в строку ignoreip домашний адрес вашего компьютера, чтобы в случае особо жёстких настроек фильтрации программа не заблокировала вам доступ к серверу — например, после нескольких неудачных попыток ввода пароля.

Создадим конфигурационный файл:

sudo vim /etc/fail2ban/jail.local

Текст конфигурационного файла будет примерно таким:

[sshd]
enabled   = true
maxretry  = 6
findtime  = 1h
bantime   = 1d
ignoreip  = 127.0.0.1/8 22.33.44.55

Этот набор условий означает, что IP-адрес, с которого было произведено 6 неудачных попыток SSH-подключения за последний час (3600 секунд), будет заблокирован на одни сутки (86400 секунд). Не будут блокироваться IP-адреса локальной машины и адрес 22.33.44.55.

Время для параметров findtime и bantime можно указывать не только в секундах, но и в минутах, часах, днях и даже неделях. Для этого необходимо сразу после численного значения параметра указать соответствующую букву (m, h, d, w).

Начало работы

После создания конфигурационного файла, содержащего все необходимые правила, можно запускать Fail2ban и наблюдать за его работой.

Команда для запуска программы:

sudo systemctl start fail2ban

Команда для вывода на экран сведений о работе jail-а, отвечающего за службу sshd:

sudo fail2ban-client status sshd

Если в данный момент сервер не подвергается атаке, сразу после установки и запуска программы на экране будет следующая информация:

linux-fail2ban1.png

Здесь приведены сведения о попытках подключения к серверу и о заблокированных IP-адресах.

Если вы решите изменить настройки, указанные в конфигурационном файле jail.local, не забудьте перезапустить Fail2ban, чтобы изменения вступили в силу:

sudo systemctl restart fail2ban
Как удалить из fail2ban заблокированный ip

Сперва проверьте iptables командой:

sudo iptables -S

Вот что мы увидели в консоли:

linux-fail2ban2.png

IP адрес 85.93.129.152 заблокирован сервисом fail2ban.

Выводим список всех наших клеток (jail) следующей командой:

sudo fail2ban-client status

linux-fail2ban3.png

Здесь может быть много правил для служб, но в нашем примере указан только sshd.

Вывод списка IP для конкретной клетки ( для конкретного jail):

sudo fail2ban-client status sshd

linux-fail2ban4.png

Для того чтобы разбанить (удалить ИП с заблокированного листа) необходимо выполнить следующую команду:

sudo fail2ban-client set sshd unbanip ip-адрес

linux-fail2ban5.png

Если Вы не хотите, чтобы данный ip адрес снова был заблокирован, то добавьте его в файл jail.local в секцию [sshd] в строчку ignoreip.

Подключение к серверу Linux Ubuntu 20.04 с графическим интерфейсом через VNC

Установка графического интерфейса и VNC сервера

Для начала установим графический интерфейс на сервере. Для этого выполним команды:

sudo apt update
sudo apt install xfce4 xfce4-goodies tightvncserver

Здесь мы установим графическую оболочку xfce, пакет xfce4-goodies, который содержит несколько дополнительных возможностей для среды рабочего стола, а также VNC-сервер tightvncserver

Во время установки вас попросят выбрать display manager. Мы выбрали gdm3.

linux-xfce1.png

Установка занимает в среднем 5-10 минут, в зависимости от мощности вашего сервера.

После установки задаем пароль для доступа по удаленному рабочему столу. Для этого вводим команду:

vncserver

... на запрос пароля вводим его дважды.

* Если система не затребует второй раз пароль, проверьте внимательно сообщение. Сервер может выдать ошибку, если пароль будет короткий.

После будет предложено ввод пароля для гостевого доступа — можно согласиться (y) и ввести пароль или отказаться (n).

Настройка VNC сервера

Для начала, останавливаем экземпляр VNC сервера:

vncserver -kill :1

* экземпляр :1, по умолчанию, слушает на порту 5900+1 (5901).

Приступаем к настройке VNC сервера. Открываем файл  ~/.vnc/xstartup и вводим:

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4

В этом файле могут присутствовать и другие параметры. Главное, чтобы была строчка xrdb $HOME/.Xresources  и самая последняя строчка: startxfce4

Затем сделаем файл xstartup исполняемым

chmod +x ~/.vnc/xstartup

Снова запускаем vncserver:

vncserver
Подключаемся к удаленному рабочему столу

Запускаем клиент VNC. Например, в Linux — Remmina, в Windows — TightVNC Viewer или RealVNC. Вводим IP-адрес компьютера с VNC и номер порта.

linux-xfce2.png

На скриншоте показан интерфейс программы Remmina. После запуска программы выберите протокол - VNC, в строчке ввода введите ip-адрес-сервера:5901 , и нажмите "Enter". 

Будет запрошен пароль — вводим тот, что устанавливали при настройке vncserver. При необходимости сохраняем его и жмем "ОК".

linux-xfce3.png

Готово. Подключение выполнено.

linux-xfce4.png

Автозапуск сервиса VNC

Чтобы VNC сервер запускался после перезагрузки, создаем новый юнит в systemd. Создаём файл:

sudo vi /etc/systemd/system/vncserver.service

В него вводим следующее:

[Unit]
Description=VNC server
After=syslog.target network.target

[Service]
Type=forking
User=john
Group=john
WorkingDirectory=/home/john

PIDFile=/home/john/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver
ExecStop=/usr/bin/vncserver -kill :1

[Install]
WantedBy=multi-user.target

где замените пользователя  john на своего

Сохраните файл.

Затем перезапустим демон systemd

sudo systemctl daemon-reload

И добавим в автозагрузку наш сервис

sudo systemctl enable vncserver.service
Полезные команды

Проверка статуса сервиса VNC:

sudo systemctl status vncserver

Остановка текущего экземпляра сервера VNC, если он еще работает:

vncserver -kill :1

Смена пароля доступа к VNC:

vncpasswd