Ссылки:
https://sevo44.ru/xrdp-terminalnyj-server-linux/
https://ask-ubuntu.ru/questions/803859/2004-problema-podklyucheniya-xrdp-kde-plasma
https://fileenergy.com/linux/instruktsiya-po-ustanovke-i-nastrojke-terminalnogo-servera-na-baze-linux-debian-10-s-graficheskoj-obolochkoj
Удаленный рабочий стол Linux
https://habr.com/ru/company/ruvds/blog/312556/
https://setiwik.ru/kak-ustanovit-xrdp-na-ubuntu-20-04/ - черный экран
https://ask.fedoraproject.org/t/networkmanager-insufficient-privileges-from-remote-login/7643 - insuffucient privileges network manager
Для работы клиента l2tp/ipsec в KDE:
!!! strongswan - пакет IPSEC
!!! xl2tpd - пакет L2TP
!!! libreswan - пакет для IPSEC
0. Установка в debian
apt install vim mc
apt install strongswan xl2tpd network-manager-l2tp libreswan
1. Перезапускаем daemon network-manager
systemctl restart network-manager
2. Отключаем постоянные запросы паролей при настройке под учетной записью из группы admin
2.0
usermod -aG admin username
2.1 Политики polkit-1 такие полезные ...
vim /etc/polkit-1/localauthority/50-local.d/46-all-allow.pkla
-----------------------------------------------------------------------
[Allow ALL from group admin]
Identity=unix-group:admin
Action=*
ResultAny=yes
ResultInactive=yes
ResultActive=yes
-----------------------------------------------------------------------
3. Использование Network-manager в консоли:
nmcli - network manager client
nmcli connection show - показать доступные соединения
nmcli connection up [vpnName] - подключение к VPN из командной строки
nmcli connection down [vpnName] - отключение от VPN из командной строки
Пример:
nmcli connection up vpn.site.ru
nmcli connection dowm vpn.site.ru
Настройка сервера l2tp\ipsec:
0. Устанавливаем пакеты для работы ipsec:
apt install strongswan
1. Проверяем:
/etc/ipsec.conf
---------------
conn rw-base
fragmentation=yes
dpdaction=clear
dpdtimeout=90s
dpddelay=30s
conn l2tp-vpn
also=rw-base
ike=aes128-sha256-modp3072
esp=aes128-sha256-modp3072
leftsubnet=%dynamic[/1701]
rightsubnet=%dynamic
mark=%unique
leftauth=psk
rightauth=psk
type=transport
auto=add
---------------
2. Генерируем общий ключ:
openssl rand -base64 18
3. Общий ключ следует указать в файле /etc/ipsec.secrets, добавив в него следующую строку:
%any %any : PSK "mySharedKey"
Где mySharedKey - общий ключ, так как от него зависит безопасность вашей VPN-сети мы рекомендуем использовать
в качестве ключа случайно сгенерированную строку из букв, цифр и спецсимволов.
4. После внесения указанных настроек перезапустим службу:
!!! Имя демона Ubuntu называется strongswan-starter
systemctl restart strongswan
5. Устанавливаем пакеты для работы l2tp
apt install xl2tpd
6. Редактируем /etc/xl2tpd/xl2tpd.conf
# auth file указывает на файл с данными для аутентификации
# pppoptfile - набор опций для PPP-соединения, которое используется внутри L2TP-туннеля
# name - имя сервера, которое будет использоваться для поиска данных аутентификации в файле chap-secrets
# local ip и ip range отвечают за локальный адрес сервера в VPN-сети и диапазон адресов для выдачи удаленным клиентам.
# Здесь можно использовать два подхода: выдавать клиентам адреса из диапазона локальной сети офиса и включить ProxyARP
# в этом случае настраивать маршрутизацию на клиентах не требуется, они будут как-бы включены в общую сеть офиса на канальном уровне (L2)
# либо выдавать адреса из непересекающегося диапазона и использовать маршрутизацию.
---------------------------------------
[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
ipsec saref = yes
force userspace = yes
[lns default]
exclusive = no
ip range = 10.2.2.100-10.2.2.199
hidden bit = no
local ip = 10.2.2.1
length bit = yes
require authentication = yes
name = l2tp-vpn
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
-----------------------------------------
7. Настройка PPP
cd /etc/ppp - переходим в каталог
cp options options.xl2tpd - копируем файл опций
8. Редактируем /etc/ppp/options.xl2tpd
# Если вы будете использовать ProxyARP то дополнительно раскомментируйте опцию: proxyarp
# Опции перечислены в порядке их следования, нужно раскомментировать их и указать нужное значение, если опция отсутствует, то ее следует добавить в конце файла.
# Также для Windows-клиентов можно передать настройку DNS-серверов, для этого добавьте опции: ms-dns 192.168.1.1
--------------------------------------
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1460
lcp-echo-interval 30
lcp-echo-failure 4
noipx
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
multilink
mppe-stateful
--------------------------------------
8. Для применения настроек перезапускаем xl2tp
systemctl restart xl2tpd
9. Добавляем пользователей
# указываем логин
# имя службы, оно должно совпадать с тем, которое мы указали в опции name в xl2tpd.conf
# пароль
# IP-адрес клиента, символ * обозначает что можно присвоить любой адрес из выбранного диапазона
vim /etc/ppp/chap-secrets
-------------------------
ivanov l2tp-vpn Pa$$word_1 *
petrov l2tp-vpn Pa$$word_1 10.2.2.99
-------------------------
10. настраиваем firewall
Для доступа к L2TP-серверу следует разрешить в брандмауэре входящие подключения к портам
500 UDP
4500 UDP
!!! подключение к 1701 UDP, вопреки распространенному заблуждению, разрешать не следует
Диагностика:
ipsec statusall
ip xfrm state
ip xfrm policy
Настройки и установка xrdp:
0. Устанавливаем:
apt install xrdp xorgxrdp ssl-cert- устанавливаем
1. Переконфигурируем:
dpkg-reconfigure xserver-xorg-legacy - переключаем разрешение для всех
2. Редактируем выбор раскладки
vim /etc/xrdp/xrdp_keyboard.ini
---------------------------
[default_rdp_layouts] # ищем и убеждаемся что файлы существуют
rdp_layout_us=0x00000409 # ищем и убеждаемся что файлы существуют
rdp_layout_ru=0x00000419 # ищем и убеждаемся что файлы существуют
[layouts_map_ru]
rdp_layout_us=ru,us
rdp_layout_ru=ru,us
[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
; model=pc105 при необходимости
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru
---------------------------
3. Добавить пользователя xrdp в группу ssl-cert
usermod -aG ssl-cert xrdp
. После настройки перезапустим xrdp
service xrdp restart
Выпуск собственного сертификата для XRDP
0. Создаем и выпускаем сертификаты
mkdir /etc/xrdp/certificate/
cd /etc/xrdp/certificate/
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 3650
1. Подключаем сертификаты отредактировав файл
!!! ищем строки (certificate=) и (key_file=) и правим их
vim /etc/xrdp/xrdp.ini
----------------------
certificate=/etc/xrdp/certificate/cert.pem
key_file=/etc/xrdp/certificate/key.pem
----------------------
2. Изменяем права для файла
chown -R xrdp:xrdp /etc/xrdp/certificate/
3. После настройки перезапустим xrdp
service xrdp restart
Запрет авторизации ROOT в XRDP
vim /etc/xrdp/sesman.ini
-------------------------
[Security]
# Авторизация root. true - разрешено false - запрещено
AllowRootLogin=false
-------------------------
Разрешаем перезагрузка системы пользователем XRDP:
!!! Вместо auth_admin_keep указываем yes
vim /usr/share/polkit-1/actions/org.freedesktop.login1.policy
-------------------------------------------------------------
Reboot the system
Authentication is required for rebooting the system.
yes
yes
yes
org.freedesktop.login1.set-wall-message
-------------------------------------------------------------
insuffucient privileges network manager
vim /usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy
[...]
auth_admin_keep
yes
yes
Более правильное решение insuffucient privileges network manager
vim /var/lib/polkit-1/localauthority/50-local.d/10-network-manager.pkla
-----------------------------------------------------------------------
[Prevent foo from modifying all network states and settings]
Identity=unix-user:foo
Action=org.freedesktop.NetworkManager.*
ResultAny=yes
ResultInactive=yes
ResultActive=yes
-----------------------------------------------------------------------
Одна сессия для пользователя XRDP
!!! Подключатся к существующей сессии
vim /etc/xrdp/sesman.ini
------------------------
[Sessions]
;; X11DisplayOffset - x11 display number offset
; Type: integer
; Default: 10
X11DisplayOffset=10
;; MaxSessions - maximum number of connections to an xrdp server
; Type: integer
; Default: 0
# Выставляем количество пользователей для одновременной работе на сервере
MaxSessions=3
;; KillDisconnected - kill disconnected sessions
; Type: boolean
; Default: false
; if 1, true, or yes, kill session after 60 seconds
# Не разрываем сеанс при отключении пользователя чтобы потом попасть в туже сессию
KillDisconnected=false
------------------------
XRDP черный экран при подключении:
!!! Баг был при использовании использовании ubuntu, debian 10, debian 11
!!! В окружение KDE
!!! Нужно вставить следующие строки в файл /etc/xrdp/startwm.sh
!!! unset DBUS_SESSION_BUS_ADDRESS
!!! unset XDG_RUNTIME_DIR
0. vim /etc/xrdp/startwm.sh
------------------------
#!/bin/sh
# xrdp X session start script (c) 2015, 2017 mirabilos
# published under The MirOS Licence
if test -r /etc/profile; then
. /etc/profile
fi
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
if test -r /etc/default/locale; then
. /etc/default/locale
test -z "${LANG+x}" || export LANG
test -z "${LANGUAGE+x}" || export LANGUAGE
test -z "${LC_ADDRESS+x}" || export LC_ADDRESS
test -z "${LC_ALL+x}" || export LC_ALL
test -z "${LC_COLLATE+x}" || export LC_COLLATE
test -z "${LC_CTYPE+x}" || export LC_CTYPE
test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION
test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT
test -z "${LC_MESSAGES+x}" || export LC_MESSAGES
test -z "${LC_MONETARY+x}" || export LC_MONETARY
test -z "${LC_NAME+x}" || export LC_NAME
test -z "${LC_NUMERIC+x}" || export LC_NUMERIC
test -z "${LC_PAPER+x}" || export LC_PAPER
test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE
test -z "${LC_TIME+x}" || export LC_TIME
test -z "${LOCPATH+x}" || export LOCPATH
fi
if test -r /etc/profile; then
. /etc/profile
fi
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
------------------------
1. Перезапускаем демон xrdp
sudo systemctl restart xrdp
Название подключенной локальной папки в XRDP
0. Редактируем файл
vim /etc/xrdp/sesman.ini
------------------------
FuseMountName=Mount_FOLDER
------------------------
1. Перезапускаем демон xrdp
sudo systemctl restart xrdp
Настройка вида окна авторизации XRDP
0. Редактируем файл
vim /etc/xrdp/xrdp.ini
-----------------------
ls_title=YOU SUPER SERVER # заголовок окна сервера
ls_top_window_bg_color=000000 # Цвет фона RGB
ls_logo_filename=/etc/xrdp/logo_xrdp.bmp #Логотип
; Session types # После этой строки ищем и убираем лишние сессии, оставляем только [Xorg]
-----------------------
1. Перезапускаем демон XRDP
service xrdp restart
Отключение screensaver
Вариант первый, можно просто его удалить
apt-get remove xscreensaver
Вариант второй, можно настроить электропитание в настройках экрана