Шифрование трафика с помощью Stunnel

26.11.2010 - 09:00

Stunnel - это программа, с помощью которой мы можем шифровать трафик других программ при помощи SSL.
Пример:

dia1.png

Обновляем порты и устанавливаем пакет:
[root@router /]# cd /usr/ports/security/stunnel
[root@router /usr/ports/security/stunnel]# make config && make install && make cert && make clean

В Options for stunnel 4.34_1 выбираем:
[X] PTHREAD   use the pthread(3) threading model (default)
[X] LIBWRAP   use TCP wrappers
[X] SSL_PORT  use OpenSSL from the Ports Collection

После установки нас попросят создать сертификат:
Country Name (2 letter code) [PL]:UA
State or Province Name (full name) [Some-State]:Ukraine
Locality Name (eg, city) []:Cherkassy
Organization Name (eg, company) [Stunnel Developers Ltd]:House
Organizational Unit Name (eg, section) []:HouseIT
Common Name (FQDN of your server) [localhost]:lymar.no-ip.org
subject= /C=UA/ST=Ukraine/L=Cherkassy/O=House/OU=HouseIT/CN=lymar.no-ip.org
notBefore=Nov 26 10:06:55 2010 GMT
notAfter=Nov 26 10:06:55 2011 GMT
SHA1 Fingerprint=60:AA:06:9C:87:A4:31:15:42:C8:E8:77:35:C8:23:60:CF:B6:35:20
/usr/bin/install -c -o root -g wheel -d -m 1770 /var/tmp/lib/stunnel
chgrp nogroup /var/tmp/lib/stunnel
if uname | grep SunOS; then  /usr/bin/install -c -o root -g wheel -d -m 755 /var/tmp/lib/stunnel/dev;  mknod /var/tmp/lib/stunnel/dev/zero c 13 12;  chmod 666 /var/tmp/lib/stunnel/dev/zero;  fi
===>  Cleaning for stunnel-4.33
[root@srv /usr/ports/security/stunnel]#

Добавим демон для автозапуска в /etc/rc.conf:
[root@srv /]# cat /etc/rc.conf | grep stunn
stunnel_enable="YES"
stunnel_pidfile="/var/tmp/stunnel/stunnel.pid"
[root@srv /]#

Создаем конфиг stunnel:
[root@srv /]# cp /usr/local/etc/stunnel/stunnel.conf-sample /usr/local/etc/stunnel/stunnel.conf

У меня он выглядит так:

; Расположение сертификата.
cert = /usr/local/etc/stunnel/stunnel.pem

; Расположение ключа.
;key = /usr/local/etc/stunnel/mail.pem

; Версии протоколов, выбираем все. (all, SSLv2, SSLv3, TLSv1)
sslVersion = all

; Каталог для chroot.
chroot = /var/tmp/stunnel

; Пользователь и группа с правами которых запущен stunnel.
setuid = stunnel
setgid = nogroup

; PID-файл, создается в chroot-окружении.
pid = /stunnel.pid

; Настройки, которые повышают производительность.
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;compression = rle

; Workaround for Eudora bug
;options = DONT_INSERT_EMPTY_FRAGMENTS

; Authentication stuff
;verify = 2
; Don't forget to c_rehash CApath
; CApath is located inside chroot jail
;CApath = /certs
; It'
s often easier to use CAfile
;CAfile = /usr/local/etc/stunnel/certs.pem
; Don't forget to c_rehash CRLpath
; CRLpath is located inside chroot jail
;CRLpath = /crls
; Alternatively you can use CRLfile
;CRLfile = /usr/local/etc/stunnel/crls.pem

; Подробность записей в log-файле
;debug = 7
; Расположение log-файла
;output = stunnel.log

; Use it for client mode
;client = yes

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

[pop3s]
accept  = 995
connect = 110

[imaps]
accept  = 993
connect = 143

[ssmtp]
accept  = 465
connect = 25

[https]
accept  = 443
connect = 80
TIMEOUTclose = 0

Так как демон stunnel работает в chroot окружении, создадим необходимый каталог для chroot и установим нужные права:

[root@srv /]# mkdir -p /var/tmp/stunnel
[root@srv /]# touch /var/tmp/stunnel/stunnel.pid
[root@srv /]# chown -R stunnel:nogroup /var/tmp/stunnel

Пробуем запускать демон:

[root@router /]# ./usr/local/etc/rc.d/stunnel start
Starting stunnel.

Проверяем поднялся ли он:

[root@router /]# ./usr/local/etc/rc.d/stunnel status
stunnel is running as pid 53295.

Не забываем открыть в фаерволе необходимые порты.

Ваша оценка: Нет Средняя: 1 (2 голосов)