|
STunnel - программа, позволяющая защитить любой небезопасный сервис, способный работать
по TCP-протоколу, включая сервисы, которые изначально не имеют интеграции
с TSL/SSL. STunnel осуществляет прозрачную, как для пользователя (в случае
использования клиентских сертификатов), так и для сервиса шифрацию траффика. Принцип
работы демона STunnel прост: зашифрованный пакет, поступающий для сервиса расшифровывается
STunnel и передается незащищенному сервису. Передача ответа от сервиса происходит в
обратном порядке. К достоинствам STunnel можно отнести также простоту установки и
настройки. Итак, рассмотрим установку stunnel для FreeBSD и для Gentoo Linux.
Установка и настройка STunnel
- Если это не было сделано ранее, установите OpenSSL.
FreeBSD:
cd /usr/ports/security/openssl
make install
Gentoo:
emerge openssl
- Установите STunnel.
FreeBSD:
cd /usr/ports/security/stunnel
make && make install
cp work/stunnel.cnf /usr/local/etc/stunnel/stunnel.conf
Gentoo:
emerge stunnel
- Создайте каталог для хранения сертификатов и скопируйте скачанный с сайта сертификат
и приватный ключ сервера.
FreeBSD:
mkdir /usr/local/etc/stunnel/certs
cp certificate.crt /usr/local/etc/stunnel/certs
cp privatekey.key /usr/local/etc/stunnel/certs
Gentoo:
mkdir /etc/stunnel/certs
cp certificate.crt /etc/stunnel/certs
cp privatekey.key /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/certificate.crt |
расположение сертификата |
| key = /usr/local/etc/stunnel/privatekey.pem |
расположение ключа |
| chroot = /var/run/stunnel/ |
каталог для 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, для Gentoo меняются переменные cert и key:
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 - адрес и порт, на который следует передавать расшифрованные
данные для незащищенного сервиса.
Если адрес не указан, то использоваться будут все доступные сетевые интерфейсы.
При необходимости, отредактируйте правила брандмауэра. Либо отредактируйте файл
/etc/hosts.allow для запрета доступа к незащищенному сервису напрямую.
Запустите stunnel
FreeBSD:
stunel
Gentoo:
/etc/init.d/stunnel start
|