Linux
- Установка LAMP
- Установка и настройка CSF
- Подключение к серверу по ssh
- Как настроить авторизацию по ключу SSH
- Как добавить область подкачки на linux Ubuntu 20.04
- Как настроить поддержку русского языка в консоли
- Базовая настройка iptables
- Настройка fail2ban для защиты ssh соединения
- Подключение к серверу Linux Ubuntu 20.04 с графическим интерфейсом через VNC
Установка LAMP
Введение
Стек «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_вашего_сервера
После перехода по адресу у Вас должна открыться тестовая страница:
Шаг 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. Это полезно для отладки и проверки правильности применения ваших настроек.
Если вы видите эту страницу в своем браузере, ваша установка PHP работает должным образом.
После проверки соответствующей информации о вашем PHP-сервере на этой странице лучше всего удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и вашем сервере Debian. Для этого используйте команду rm:
sudo rm /var/www/vash_domain/info.php
На этом установка и тестирование LAMP завершено.
Установка и настройка CSF
Введение
Брандмауэр 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». Нажимаем «Соединиться».
Может появиться предупреждение системы безопасности PuTTY — оно срабатывает при подключении к новому серверу. Нажмите Да — и соединение продолжится.
3. Вводим логин и нажимаем "Enter". Затем вводим пароль и снова нажимаем "Enter"
4. Готово. Мы подключились к серверу по SSH
Как подключиться c OC Linux по SSH
Для подключения используем SSH-клиент Terminal, который встроен в ОС на основе Linux. При вводе команд нужно помнить, что в Linux-образных ОС они вводятся только в нижнем регистре (с маленькой буквы).
1. Открываем приложение. Вводим команду вида «ssh логин@IP-адрес» . Нажимаем «Enter».
2. Если пользователь использует SSH-соединение первый раз, ему потребуется ввести команду подтверждения («Yes»)
3. Вводим пароль от виртуального сервера и нажимаем "Enter".
4. Готово. Вы успешно подкюлчились к серверу
Как подключиться c macOS и iOS по SSH
Для подключения к серверу по SSH с устройств на операционной системе macOS, также как и в предыдущем случае, используем встроенный клиент Terminal.
1. Открываем приложение. Вводим команду с данными сервера «ssh логин@IP-адрес». Нажимаем «Enter».
2. При первом входе подтверждаем свои действия соответствующей командой «Yes».
3. Вводим пароль от виртуального сервера.
4. Подключение к виртуальному серверу по протоколу SSH завершено.
Как настроить авторизацию по ключу 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 без заполнения строки.
Успешно сгенерировав пару ключей, вы увидите уведомление:
Открытый ключ хранится в файле /домашний_каталог/.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
Необходимо будет ввести пароль от пользователя удаленного сервера. После успешного подключения ключи будут добавлены и мы увидим соответствующий вывод:
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Создание SSH-ключей на Windows с помощью PuTTYgen
Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH. Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.
Запустите приложение PuTTYgen которое устанавливается вместе с PuTTY.
Выберите тип ключа SSH2-RSA и нажмите на кнопку "Generate".
В процессе генерации ключей несколько раз произвольно проведите мышкой по экрану приложения для создания случайных величин, используемых для ключей.
После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите "Save public key" и "Save private key" . Укажите расположение файлов с ключами.
При сохранении закрытого ключа, если не заполнено поле "Key passphrase" , появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»
Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys. Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh
При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке "Connections" - "Auth" выберите необходимый путь.
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Отключение аутентификации по паролю
Подключитесь к серверу по SSH, используя пароль, и откройте файл /etc/ssh/sshd_config для редактирования.
Убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра
PasswordAuthentication no.
Перезапустите службу sshd командой:
service sshd restart
Готово! После перезапуска службы подключайтесь к серверу.
Как добавить область подкачки на linux Ubuntu 20.04
Подкачка — это часть хранилища на жестком диске, которая была выделена для временного хранения данных операционной системой в случае переполнения оперативной памяти. Это позволит вам увеличить количество информации, которое ваш сервер может хранить в рабочей памяти, соблюдая определенные меры предосторожности. Область подкачки на жестком диске будет использоваться в основном тогда, когда в оперативной памяти больше нет достаточного места хранения данных для приложений.
Чтение и запись информации с диска намного медленнее, чем из оперативной памяти. Операционная система будет по-прежнему предпочитать работать с данными приложений в памяти, а подкачку использовать для более старых данных. Как правило, полезно перестраховываться и иметь область подкачки в качестве резерва на случай нехватки оперативной памяти, чтобы исключить ошибки памяти в системах без SSD
1. Проверка информации о подкачке в системе
Для начала мы проверим, есть ли уже в системе область подкачки. Можно иметь несколько файлов или разделов подкачки, но обычно одного достаточно.
Можно узнать, сконфигурирована ли в системе подкачка, введя команду:
sudo swapon --show
Если после этой команды ничего не появляется, в системе сейчас нет области подкачки.
Можно убедиться в отсутствии активной подкачки при помощи утилиты free:
В строке Swap видно, что в системе отсутствует активная подкачка.
2. Проверка свободного пространства в разделе жесткого диска
Перед созданием файла подкачки проверим текущее состояние диска, чтобы убедиться, что у нас достаточно места. Вводим комнаду:
df -h
В данном случае устройство с / в столбце "Mounted on" — наш диск. В данном примере у нас достаточно места (использовано только 3,4 Гбайт). Ваше использование, вероятно, будет другим.
Хотя существует много мнений относительно правильного размера области подкачки, на самом деле он зависит от ваших личных предпочтений и требований приложений. Обычно можно начать с объема, равного объему оперативной памяти в системе, или в два раза большего. Еще одно полезное общее правило — любое превышение 4 Гбайт для области подкачки, скорее всего, не нужно, если вы используете ее только для резервирования оперативной памяти.
3. Создание файла подкачки
Теперь, когда известно свободное место на жестком диске, можно создать файл подкачки . Мы добавим файл необходимого размера под названием swapfile в корневую (/) директорию.
Лучше всего создавать файл подкачки при помощи программы fallocate. Эта команда мгновенно создает файл указанного размера.
Поскольку на сервере в нашем случае 1 Гбайт оперативной памяти, в этом руководстве создадим файл размером 1 Гбайт. Скорректируйте с учетом необходимости на вашем сервере:
sudo fallocate -l 1G /swapfile
Чтобы проверить правильность выделенного объема памяти, введите:
ls -lh /swapfile
4. Активация файла подкачки
Теперь, когда у нас есть файл правильного размера, нам нужно превратить его в пространство подкачки.
Сначала нужно изменить права доступа к файлу, чтобы только пользователи с правами root могли читать его содержимое. Это предотвращает доступ обычных пользователей к файлу — такой доступ может существенно влиять на безопасность.
Чтобы передать все права доступа пользователям root, введите:
sudo chmod 600 /swapfile
Теперь только у пользователя с правами root отмечены флажки чтения и записи.
Теперь можем отметить файл как пространство подкачки, введя следующее:
sudo mkswap /swapfile
После этого мы можем активировать файл подкачки, чтобы система могла его использовать:
sudo swapon /swapfile
Убедитесь, что пространство подкачки активировано, введя следующее:
sudo swapon --show
Чтобы подтвердить наши выводы, можем снова проверить ответ утилиты free:
free -h
Подкачка успешно настроена, и операционная система начнет использовать ее по мере необходимости.
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
Откроется диалоговое окно, в котором необходимо добавить поддержку русского языка
Выберем ru_RU.UTF-8 UTF-8
После выбора локалей для генерации будет предложен выбор локали по умолчанию в системном окружении. Выберем ru_RU.UTF-8 для поддержки русского языка в терминале
Добавление русского языка в 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
-A INPUT
: флаг -A (append) – добавляет правило в конец цепочки INPUT-m conntrack
: этот параметр вызывает модуль conntrack для отслеживания информации о соединениях.–ctstate ESTABLISHED, RELATED
: выделяем все соединения в состоянии ESTABLISHED (выделяется трафик по уже существующим соединениям) и RELATED (трафик по новым соединениям, но связанных с уже открытыми).-j ACCEPT
: действие (target) – то, что будет произведено с пакетом, если он попал под критерий. В нашем случае это 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
Разберем новые параметры:
-p tcp
: фильтруем пакеты, использующие протокол TCP–dport
: выделяем TCP-пакеты с портом назначения 22 и 80.
Также есть еще одно правило, которое связано с понятием “петли” (loopback-интерфейса). Используется loopback-интерфейс для взаимодействия служб и приложений в пределах одной локальной системы, без надобности отправления пакетов на сетевой интерфейс.
Правило выглядит так:
sudo iptables -I INPUT 1 -i lo -j ACCEPT
Разберем его:
- Ключ
-I
(insert) указывает вставить правило в цепочку на 1-ое место. Порядковый номер вставки указывается за именем цепочки INPUT (напоминаем, что флаг -A добавляет правило в конец) -i lo
– указываем интерфейс loopback и разрешаем трафик через него.
Мы составили 4 правила, на основании которых iptables будет разрешать трафик на сервер. Но поскольку мы не создали ни одного запрещающего правила, то все соединения с сервером будут по-прежнему разрешены.
Есть два способа реализации блокирования нежелательного трафика:
- Политика запрета по умолчанию.
Достигается написанием правила:
sudo iptables -P INPUT DROP
Тут надо помнить об опасности потери удаленного доступа к серверу. Желательно его применять, когда есть консольный доступ к серверу.
- Добавление запрещающего правила в конец цепочки.
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-ов одинакова:
-
В первой строке в квадратных скобках указывают название службы, к которой будет применяться следующий ниже набор правил. В нашем случае это [sshd].
-
Далее определяют параметр enabled, отвечающий за включение или отключение данного jail-а. Мы установим его true, чтобы наш jail был активен.
-
После этого указывают условия блокировки: максимальное количество попыток подключения (maxretry), время, за которое эти попытки были произведены (findtime), и время, на которое нужно запретить доступ с этого IP (bantime).
-
В последней части 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
Если в данный момент сервер не подвергается атаке, сразу после установки и запуска программы на экране будет следующая информация:
Здесь приведены сведения о попытках подключения к серверу и о заблокированных IP-адресах.
Если вы решите изменить настройки, указанные в конфигурационном файле jail.local, не забудьте перезапустить Fail2ban, чтобы изменения вступили в силу:
sudo systemctl restart fail2ban
Как удалить из fail2ban заблокированный ip
Сперва проверьте iptables командой:
sudo iptables -S
Вот что мы увидели в консоли:
IP адрес 85.93.129.152 заблокирован сервисом fail2ban.
Выводим список всех наших клеток (jail) следующей командой:
sudo fail2ban-client status
Здесь может быть много правил для служб, но в нашем примере указан только sshd.
Вывод списка IP для конкретной клетки ( для конкретного jail):
sudo fail2ban-client status sshd
Для того чтобы разбанить (удалить ИП с заблокированного листа) необходимо выполнить следующую команду:
sudo fail2ban-client set sshd unbanip ip-адрес
Если Вы не хотите, чтобы данный 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.
Установка занимает в среднем 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 и номер порта.
На скриншоте показан интерфейс программы Remmina. После запуска программы выберите протокол - VNC, в строчке ввода введите ip-адрес-сервера:5901 , и нажмите "Enter".
Будет запрошен пароль — вводим тот, что устанавливали при настройке vncserver. При необходимости сохраняем его и жмем "ОК".
Готово. Подключение выполнено.
Автозапуск сервиса 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