Bsdadmin.ru

Записки администратора FreeBSD

Путь на сайте

Использование STunnel

STunnel - программа, позволяющая защитить любой небезопасный сервис, способный работать по TCP-протоколу,включая сервисы, которые изначально не имеют интеграции с TSL/SSL. STunnel  осуществляет прозрачное, как для пользователя (в случае использования клиентских сертификатов), так и для сервиса шифрование трафика. 

Принцип работы демона STunnel прост: зашифрованный пакет, поступающий для сервиса, расшифровывается STunnel  и передается незащищенному сервису.
Передача ответа от сервиса происходит в обратном  порядке.
К достоинствам STunnel можно отнести также простоту установки и настройки.  
Приступим.
Ставим OpenSSL,если кто не поставил.
#cd /usr/ports/security/openssl
#make install

Ставим  STunnel.
#cd /usr/ports/security/stunnel
#make && make install
#cp work/stunnel.cnf /usr/local/etc/stunnel/stunnel.conf

 

добавляем в rc.conf
stunnel_enable="YES"

Создаем каталог для хранения сертификатов и копируем скачанный с сайта сертификат и приватный ключ сервера.

#mkdir /usr/local/etc/stunnel/certs
#cp certificate.crt /usr/local/etc/stunnel/certs
#cp privatekey.key /usr/local/etc/stunnel/certs
Так как демон STunnel работает в chroot-окружении, создаем каталог  для chroot и установливаем нужные права.
#mkdir /var/run/stunnel
#chown stunnel:stunnel /var/run/stunnel
#chmod 700 /var/run/stunnel

Отредактируйте файл конфигурации stunnel и поместите туда следующие строки для
настройки демона stunnel:

Переменная Значение
cert = /usr/local/etc/stunnel/certs/certificate.crt           расположение сертификата
key = /usr/local/etc/stunnel/certs/privatekey.pem         расположение ключа
chroot = /var/run/stunnel/                                         каталог  chroot
chroot setuid = stunnel 
setgid = stunnel
pid = /stunnel.pid                                                     PID-файл, создается в chroot-окружении
socket = l:TCP_NODELAY=1 
socket = r:TCP_NODELAY=1
verify = 0                                                 не запрашивать сертификат клиента
debug = 7                                               подробность записей в log-файле
output = /var/log/stunnel.log                     расположение log-файла

Обычные настройки, приведены для ОС FreeBSD:
cert = /etc/stunnel/certificate.crt
key  = /etc/stunnel/privatekey.pem

Определите защищаемые сервисы в файле конфигурации, например, так :

[https]
accept  = 192.168.0.1:443
connect = 127.0.0.1:80
либо
[https]
accept  = 443
connect = 80

Описание каждого сервиса должно быть в квадратных скобках.

Параметры:
accept - адрес и порт, на который поступают зашифрованные запросы
connect - адрес и порт, на который следует передавать расшифрованные данные для незащищенного сервиса.

Если адрес не указан, то использоваться будут все доступные сетевые интерфейсы.
При необходимости, отредактируйте правила брандмауэра.
Запустите stunnel
# stunnel  start