Centos. Установка и настройка Stunnel.
Stunnel это программная обертка, позволяющая спрятать в шифрованный ssl-туннель произвольный трафик. Stunnel создает и поддерживает туннель как TCP соединение и передавать может только tcp-трафик. Возможность туннелировать сетевой трафик изначально не предполагавший ни шифрования ни туннелирования реализована через localhost, а механизм туннелирования заключается в том, что Stunnel:
- на клиенте: слушает порт на локальном хосте клиента и передает информацию (шифруя) на определенный порт удаленного сервера;
- на сервере: слушает порт на внешнем адресе и передает информацию (расшифровывая) на определенный порт локального хоста сервера.
Установка необходимого программного обеспечения.
# yum -y install stunnel net-tools telnet
Создание необходимых каталогов и файлов.
# touch /etc/stunnel/stunnel.conf
# touch /etc/systemd/system/stunnel.service
Создание самоподписанного сертификата.
# cd /etc/stunnel
# openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem
Создание файла конфигурации.
Отредактируем файл /etc/stunnel/stunnel.conf приведя его к следующему виду:
debug = 7
client = yes
output = /var/log/stunnel.log
cert = /etc/stunnel/stunnel.pem[pop3_gmail]
accept = 127.0.0.1:11110
connect = pop.gmail.com:995[smtp_gmail]
accept = 127.0.0.1:11025
connect = smtp.gmail.com:465
Откроем необходимые порты.
# firewall-cmd --list-all
# firewall-cmd --zone=public --add-masquerade --permanent
# firewall-cmd --zone=public --add-port=11110/tcp --permanent
# firewall-cmd --zone=public --add-port=11025/tcp --permanent
# firewall-cmd --zone=public --add-forward-port=port=11110:proto=tcp:toport=11110:toaddr=127.0.0.1 --permanent
# firewall-cmd --zone=public --add-forward-port=port=11025:proto=tcp:toport=11025:toaddr=127.0.0.1 --permanent
# firewall-cmd --reload
Настройка автозапуска.
Отредактируем файл /etc/systemd/system/stunnel.service приведя его к следующему виду:
[Unit]
Description=SSL tunnel for network daemons
After=network.target
After=syslog.target[Install]
WantedBy=multi-user.target
Alias=stunnel.target[Service]
Type=forking
ExecStart=/usr/bin/stunnel /etc/stunnel/stunnel.conf
ExecStop=/usr/bin/killall -9 stunnelTimeoutSec=600
Restart=always
PrivateTmp=false
и выполним команды:
# systemctl start stunnel.service
# systemctl enable stunnel.service
Проверим работоспособность.
netstat -nalp|grep stunnel
telnet localhost 11110
telnet localhost 11025