Вопрос или проблема
Я создал ssl туннель, к которому могу подключаться через ssh, но когда я пытаюсь подключиться, у меня не получается
Мой stunnel.conf
cert = /etc/stunnel/stunnel.pem
client = no
socket = a:SO_REUSEADDR=1
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
[ssh]
accept = 441
connect = 0.0.0.0:22
Порты 22 и 441 (мой порт 443 занят, поэтому я использую 441)
sudo netstat -tuln | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
sudo netstat -tuln | grep :441
tcp 0 0 0.0.0.0:441 0.0.0.0:* LISTEN
Мой статус stunnel:
sudo systemctl status stunnel4
● stunnel4.service - LSB: Запуск или остановка stunnel 4.x (TLS туннель для сетевых демонов)
Loaded: загружен (/etc/init.d/stunnel4; сгенерировано)
Active: активен (работает) с Чт 2024-09-26 16:21:49 -03; 19 минут назад
Docs: man:systemd-sysv-generator(8)
Process: 3434447 ExecStart=/etc/init.d/stunnel4 start (code=exited, status=0/SUCCESS)
Tasks: 2 (limit: 38417)
Memory: 2.5M
CPU: 21ms
CGroup: /system.slice/stunnel4.service
└─3434463 /usr/bin/stunnel4 /etc/stunnel/stunnel.conf
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Скомпилирован/работает с OpenSSL 3.0.2 15 мар 2022
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Потоки:PTHREAD Сокеты:POLL,IPv6,SYSTEMD TLS:ENGINE,OCSP,PSK,SNI Auth:LIBWRAP
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Чтение конфигурации из файла /etc/stunnel/stunnel.conf
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: UTF-8 байтовая метка порядка не обнаружена
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Режим FIPS отключен
26 сен 16:21:49 domain.com stunnel[3434461]: LOG4[ui]: Небезопасные права доступа к файлу /etc/stunnel/stunnel.pem
26 сен 16:21:49 domain.com stunnel4[3434447]: Запуск TLS туннелей: /etc/stunnel/stunnel.conf: запущен (pidfile не указан!)
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Конфигурация успешна
26 сен 16:21:49 domain.com stunnel[3434461]: LOG5[ui]: Привязка сервиса [ssh] к :::441: Адрес уже используется (98)
26 сен 16:21:49 domain.com systemd[1]: Запущен LSB: Запуск или остановка stunnel 4.x (TLS туннель для сетевых демонов).
Я активировал права ufw, но все равно не могу подключиться
Ответ или решение
Чтобы решить вашу проблему с подключением к SSL туннелю через stunnel, давайте разберем несколько важных моментов, которые могут привести к сбоям в работе.
-
Конфигурация stunnel.conf:
- Ваш файл конфигурации выглядит в целом правильно, но следует обратить внимание на сообщение:
Binding service [ssh] to :::441: Address already in use (98)
. Это означает, что порт 441 уже занят другим процессом. Проверьте, какой процесс использует этот порт, с помощью команды:sudo netstat -tuln | grep :441
Если другой процесс использует этот порт, измените его на свободный порт в конфигурации stunnel.
- Ваш файл конфигурации выглядит в целом правильно, но следует обратить внимание на сообщение:
-
Правильные разрешения на файл сертификата:
- Сообщение
Insecure file permissions on /etc/stunnel/stunnel.pem
указывает на то, что права доступа к файлу сертификата слишком свободные. Убедитесь, что права доступа к вашему файлу сертификата установлены корректно (обычно 600):sudo chmod 600 /etc/stunnel/stunnel.pem
- Также убедитесь, что файл сертификата принадлежит пользователю, под которым работает stunnel (обычно это пользователи
stunnel4
илиroot
):sudo chown root:root /etc/stunnel/stunnel.pem
- Сообщение
-
Проверка правил Firewall (UFW):
- Проверьте, разрешены ли входящие соединения на порт 441. Вы можете использовать следующую команду, чтобы отобразить текущие правила:
sudo ufw status
- Если порт 441 не разрешен, добавьте правило:
sudo ufw allow 441/tcp
- Проверьте, разрешены ли входящие соединения на порт 441. Вы можете использовать следующую команду, чтобы отобразить текущие правила:
-
Запуск и тестирование:
- После внесения вышеуказанных изменений перезапустите stunnel:
sudo systemctl restart stunnel4
- Убедитесь, что stunnel запущен без ошибок:
sudo systemctl status stunnel4
- Попробуйте подключиться к вашему SSL туннелю через SSH, используя клиентскую команду:
ssh -p 441 user@your_server_ip
- Замените
user
на имя пользователя иyour_server_ip
на IP-адрес вашего сервера.
- После внесения вышеуказанных изменений перезапустите stunnel:
-
Дополнительные проверки:
- Если у вас все еще возникают проблемы с соединением, попробуйте подключиться локально, используя
localhost
:ssh -p 441 user@localhost
- Если соединение успешно, возможно, проблема в сетевых настройках или на стороне клиента.
- Если у вас все еще возникают проблемы с соединением, попробуйте подключиться локально, используя
Если все перечисленные шаги не решают проблему, рассмотрите возможность детального анализа логов stunnel для выявления более специфичных ошибок:
sudo tail -f /var/log/syslog | grep stunnel
Надеюсь, эти шаги помогут вам успешно настроить и использовать ваш SSL туннель через stunnel.