Как предотвратить атаки x11vnc: попытки несанкционированного входа?

Мой компьютер зависал на 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

0
задан 30 January 2020 в 19:19

1 ответ

Есть много способов решить эту проблему. Вот мое решение.

Остановите все подключения к 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.

Setup 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. Теперь нам нужно внести некоторые изменения в компьютер, который вы используете для удаленного подключения к этому компьютеру.

Примечание: все изменения и команды ниже этой строки относятся к клиентскому компьютеру, используемому для подключения к `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, игнорируйте этот раздел командной строки и читайте дальше.

Настройка Remmina

Если вы используете ноутбук с Ubuntu для удаленного подключения к x11vnc, вы, вероятно, используете приложение под названием Remmina. Это приложение имеет встроенный ssh-туннель, поэтому вам не нужно открывать терминал и вводить команду.

Отредактируйте настройку подключения VNC, которую вы настроили в Remmina для удаленного подключения, и перейдите на вкладку SSH Tunnel, как показано ниже:

enter image description here

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

  • Включить SSH-туннель
  • Туннель через петлевой адрес
  • Тот же сервер на порту 22

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

Подключиться с Android

ОП попросил в комментариях инструкции по подключению к удаленному компьютеру под управлением x11vnc с телефона/планшета Android.

Установка и настройка bVNC на устройстве Android

bVNC доступна в магазине Google Play.

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

Измените тип подключения с Basic VNC > Secure VNC over SSH и вы увидите следующий экран:

enter image description here

Заполните настройки следующим образом:

  • Тип подключения : Безопасный VNC через SSH (как указано выше)
  • Название: Дайте осмысленное имя, указывающее, для какого компьютера предназначено соединение.

Настройки туннеля SSH

  • Сервер SSH: это IP-адрес или доменное имя хоста для компьютера x11VNC. Это адрес сервера, который вы бы ввели для базовой настройки VNC.
  • 22: Порт ssh по умолчанию предварительно заполнен как 22. Измените его, только если вы изменили настройки по умолчанию openssh-server на компьютере, на котором работает x11VNC.
  • Имя пользователя SSH: это имя пользователя, которое вы используете для входа в компьютер с запущенным x11VNC, когда вы сидите перед ним.
  • Пароль SSH: это пароль, который вы используете для входа в компьютер с запущенным x11VNC, когда вы сидите перед ним.
  • Парольная фраза SSH: требуется только в том случае, если вы установили парольную фразу при создании пары закрытый-открытый ключ. Пара закрытый-открытый ключ может использоваться вместо указанного выше пароля SSH.
  • Использовать ключ: указывает bVNC использовать пару закрытый-открытый ключ вместо пароля пользователя.
  • Управление ключом: эта кнопка перенаправит вас на другую страницу, где вы сможете сгенерировать пару закрытый-открытый ключ и поделиться открытым ключом, чтобы его можно было добавить в набор «Авторизованных ключей» на компьютере под управлением x11VNC. Это необходимо, только если вы установите флажок Использовать ключ.
  • Настройка AutoX: отключено. Оставить как есть.

Настройки подключения VNC

  • Локальный хост: оставить как есть.
  • 5900: оставьте как есть, если вы не изменили порт VNC по умолчанию на компьютере, на котором работает x11VNC.
  • Имя пользователя VNC (необязательно): добавьте имя пользователя, если вы настроили имя пользователя в конфигурации x11VNC.
  • Пароль VNC: добавьте сюда пароль VNC, если вы настроили его в конфигурации x11VNC.
  • Сохранить: Установите этот флажок, чтобы сохранить пароль VNC в bVNC.

После настройки bVNC вы сможете подключиться к удаленному компьютеру под управлением x11VNC с устройства Android.

Настройте пару закрытый-открытый ключ в bVNC

Если вы настроили свой ssh-сервер на компьютере под управлением x11VNC для использования только входа на основе ключа, тогда вы не сможете использовать пароли из раздела Пароли SSH выше. В этом случае вам нужно будет установить флажок Использовать ключ и использовать кнопку Управление ключом выше, чтобы сгенерировать и каким-то образом получить открытый ключ к правильной папке и файлу на компьютере, на котором работает x11VNC.

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

enter image description here

Во-первых, вам нужно сгенерировать новую пару закрытый-открытый ключ. Нажмите кнопку Создать новый ключ и сохраните тип 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

Надеюсь, это поможет

1
ответ дан 30 January 2020 в 22:50

Другие вопросы по тегам:

Похожие вопросы: