Мой компьютер зависал на 1 секунду каждые 5 секунд. Я обнаружил, что это кто-то неоднократно пытался войти через x11vnc.
Как я могу заставить его отклонять соединения с IP-адреса на полчаса после 3 неудачных попыток входа в систему? или что-то в этом роде?
edit:
Похоже, что это то, что может сделать fail2ban. Но fail2ban не поставляется с конфигурацией для x11vnc, поэтому хорошим ответом будет то, как ее настроить.
Так выглядит ошибка входа в journalctl -u x11vnc
:
30 января, 14:41:58 имя компьютера x11vnc [1686]: 30.01.2020 14:41:58 authProcessClientMessage : ошибка аутентификации из 176.113.115.244
Есть много способов решить эту проблему. Вот мое решение.
x11vnc
, кроме localhost
Самый простой способ сделать это — запустить x11vnc
с параметром -localhost
. Если вы настроили x11vnc
для запуска при загрузке в качестве службы systemd, у вас есть файл /lib/systemd/system/x11vnc.service
, где может быть строка вида:
ExecStart=/usr/bin/x11vnc -auth /var/run/lightdm/root/:0 -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -localhost
Обратите внимание, последний вариант — -localhost
. Этот параметр означает, что x11vnc
будет прослушивать только IP-адрес локального хоста, то есть 127.0.0.1. Этот специальный IP-адрес всегда относится к самому компьютеру. Это означает, что только компьютер, на котором установлен x11vnc
, может получить доступ к x11vnc
. Другим компьютерам потребуется доступ к x11vnc
косвенно, используя туннель ssh
.
openssh-server
Вам потребуется openssh-server
, работающий на том же компьютере, на котором запущен x11vnc
. Откройте терминал, нажав Ctrl+Alt+T и введите команду:
sudo apt install openssh-server
Это установит сервер ssh. См. инструкции по настройке сервера ssh для получения информации, связанной с безопасностью. Я рекомендую вам включить вход на основе ключа и отключить вход на основе пароля для ssh
.
ufw
и fail2ban
ufw
установлены в Ubuntu, но могут быть неактивны. Введите следующие две команды в терминал:
sudo ufw enable
sudo ufw allow ssh
чтобы включить ufw
и разрешить ssh
подключение с других компьютеров. Если вы уже включили ufw
и установили правила, разрешающие соединения x11vnc
, вы можете удалить эти правила.
Аналогично установите и настройте fail2ban
. Следуйте одному из руководств по настройке fail2ban
для ssh
.
и настроили переадресацию портов для порта 5900 (или что-то подобное), сейчас самое время это изменить. Вы хотите изменить это правило на порт 22, чтобы запросы на подключение для ssh
перенаправлялись вместо запросов на подключение для x11vnc
.
Примечание: порты 5900 и 22 являются портами по умолчанию для соответствующих служб vnc
и ssh
. Если вы изменили значение по умолчанию, вам потребуется внести соответствующие корректировки.
x11vnc
?Мы закончили настройку компьютера под управлением x11vnc
. Теперь нам нужно внести некоторые изменения в компьютер, который вы используете для удаленного подключения к этому компьютеру.
ssh
с помощью командной строки:Используйте следующую команду в терминале
ssh user@host -L 5900:localhost:5900
,где пользователь
— это имя пользователя на компьютере, на котором работает x11vnc
] и хост — это имя хоста или IP-адрес этого компьютера. Эта команда должна выполняться до тех пор, пока вы хотите поддерживать удаленное подключение к главному компьютеру. Не закрывайте терминал во время работы.
Если вы не настроили сервер x11vnc
для запуска при загрузке, вы можете настроить ssh-туннель
и с помощью той же команды запустить сервер x11vnc
. на удаленном компьютере. Если вы хотите сделать это, используйте команду:
ssh user@host -L 5900:localhost:5900 x11vnc -localhost
Пока одна из этих команд выполняется в терминале ноутбука, запустите приложение, которое вы используете для подключения к удаленному компьютеру, как обычно.
Если вы используете Remmina
для подключения к серверу x11vnc, игнорируйте этот раздел командной строки и читайте дальше.
Если вы используете ноутбук с Ubuntu для удаленного подключения к x11vnc
, вы, вероятно, используете приложение под названием Remmina
. Это приложение имеет встроенный ssh-туннель
, поэтому вам не нужно открывать терминал и вводить команду.
Отредактируйте настройку подключения VNC, которую вы настроили в Remmina для удаленного подключения, и перейдите на вкладку SSH Tunnel, как показано ниже:
Убедитесь, что следующие параметры включены/отмечены:
, как показано на рисунке выше.Сохраните новую настройку Remmina и попробуйте подключиться. Если все прошло хорошо, только вы сможете подключиться к вашему серверу x11vnc
, и никто другой не сможет.
ОП попросил в комментариях инструкции по подключению к удаленному компьютеру под управлением x11vnc
с телефона/планшета Android.
bVNC
на устройстве AndroidbVNC
доступна в магазине Google Play.
Когда вы открываете bVNC
в первый раз, вы увидите некоторые требования к разрешениям. Просмотрите их и решите, хотите вы их принять или нет. Затем вы увидите страницу со списками функций. Нажмите кнопку Закрыть в правом нижнем углу страницы, чтобы перейти на страницу настроек.
Измените тип подключения с Basic VNC > Secure VNC over SSH и вы увидите следующий экран:
Заполните настройки следующим образом:
x11VNC
. Это адрес сервера, который вы бы ввели для базовой настройки VNC. ssh
по умолчанию предварительно заполнен как 22. Измените его, только если вы изменили настройки по умолчанию openssh-server
на компьютере, на котором работает x11VNC
.x11VNC
, когда вы сидите перед ним. x11VNC
, когда вы сидите перед ним. bVNC
использовать пару закрытый-открытый ключ вместо пароля пользователя. x11VNC
. Это необходимо, только если вы установите флажок Использовать ключ. x11VNC
. x11VNC
. x11VNC
. bVNC
. После настройки bVNC
вы сможете подключиться к удаленному компьютеру под управлением x11VNC
с устройства Android.
bVNC
Если вы настроили свой ssh-сервер
на компьютере под управлением x11VNC
для использования только входа на основе ключа, тогда вы не сможете использовать пароли из раздела Пароли SSH выше. В этом случае вам нужно будет установить флажок Использовать ключ и использовать кнопку Управление ключом выше, чтобы сгенерировать и каким-то образом получить открытый ключ к правильной папке и файлу на компьютере, на котором работает x11VNC
.
Нажмите кнопку Управление ключом, чтобы увидеть следующее окно:
Во-первых, вам нужно сгенерировать новую пару закрытый-открытый ключ. Нажмите кнопку Создать новый ключ и сохраните тип RSA. Размер битов по умолчанию 2048 должен быть в порядке.
Вам будет предложено некоторое время провести пальцем по экрану Android, чтобы сгенерировать энтропию для генератора случайных чисел, и будут сгенерированы ключи.
Вам потребуется получить публичный ключ на свой компьютер под управлением x11VNC
одним из трех способов, перечисленных в виде трех кнопок:
Первый может быть самым простым. Нажмите кнопку «Поделиться открытым ключом», выберите Gmail (или любую другую электронную почту, которую вы используете) и отправьте ее себе.
Вы также можете указать имя файла, например rsa.pub
, нажать кнопку «Отправить в файл» и отправить этот файл себе как вложение.
Чтобы импортировать открытый ключ на компьютер, вам необходимо физически (локально) войти в систему на этом компьютере.
Проверьте, есть ли у вас уже папка /home/$USER/.ssh
в вашей домашней папке, и если это так, если у вас уже есть файл с именем /home/$USER/.ssh/authorized_keys
. В терминале введите команду:
ls ~/.ssh
Если вы видите содержимое папки, включая authorized_keys
, значит они у вас есть.
Если у вас уже есть файл authorized_keys
, вам нужно будет добавить содержимое открытого ключа в этот файл. Откройте этот файл в текстовом редакторе и сохраненный rsa.pub
, отправленный по электронной почте с вашего телефона, в другом окне редактора и скопируйте содержимое из одного в другое, добавив в конце authorized_keys
.
Если у вас нет файла authorized_keys
и папки .shh
, создайте их с помощью следующих команд:
mkdir -p /home/$USER/.ssh && touch /home/$USER/.ssh/authorized_keys
Затем скопируйте и вставьте содержимое rsa.pub
в authorized_keys
с помощью текстового редактора по вашему выбору.
Если вы только что создали эти папку и файл, вам нужно будет изменить права доступа к папке и файлу, чтобы только вы могли их читать. Используйте следующую команду, чтобы изменить разрешения. Примечание: сервер ssh
не будет читать файл, если папка и файл не имеют строгого разрешения. Это мера безопасности.
chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys
Примечание. Вы можете заменить $USER
своим именем для входа на компьютере, на котором работает x11VNC
.
Проверьте, можете ли вы войти с bVNC
с помощью ключа без использования пароля SSH.
Убедившись, что аутентификация на основе ключа работает, отключите вход на основе пароля ssh
в соответствии с ответами на этот вопрос: Отключите аутентификацию на основе пароля в ssh
Надеюсь, это поможет