Окт 22 2009

Stunnel. Шифруем трафик.

Stunnel это по сути дела прокси сервер шифрующий трафик. Его можно использовать в том случае, если сервис не умеет использовать SSL шифрацию, а вам нужно ее обеспечить — воспользоваться можно Stunelем. Типичными примерами использования являются pop3, imap, http сервисы. Это связано с тем, что пароли в этих протоколах передаются открытым текстом и с легкостью могут быть прослушаны обычным snifferом. Конечно большинство современных почтовых и http серверов поддерживают ssl, тем не менее использование stunnel остается актуальным.
Устанавливаем stunnel из портов:

cd /usr/ports/security/stunnel/
make

В начале будет небольшой диалог настройки:

┌────────────────────────────────────────────────────────────────────┐                                   
│                     Options for stunnel 4.27                       │                                   
│ ┌────────────────────────────────────────────────────────────────┐ │ 
│ │   [ ] FORK      use the fork(3) threading model                │ │
│ │   [X] PTHREAD   use the pthread(3) threading model (default)   │ │                                   
│ │   [ ] UCONTEXT  use the ucontext(3) threading model            │ │                                   
│ │   [ ] IPV6      enable IPv6 support                            │ │
├─└────────────────────────────────────────────────────────────────┘─┤                                   
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘

Когда сборка закончится сгенерируем сертификат:

make cert

При этом понадобится заполнить диалог создания сертификата.
И после того, как вы создадите сертификат, можно устанавливать stunnel.

make install clean

И после того, как установка закончится, можно начинать настройку.
В первую очередь скопируем stunnel-sample.conf в stunnel.conf

cd /usr/local/etc/stunnel/
cp stunnel-sample.conf stunnel.conf

И редактируем stunnel.conf

#Путь к сертификату
#Поскольку у нас stunnel chrootится в /var/tmp/stunnel
#То сертификат мы положим прямо в эту директорию и 
#и он будет в прямо в корне
cert = stunnel.pem
#Версия SSL
sslVersion = SSLv3
#chrootимся в каталог /var/tmp/stunnel
chroot = /var/tmp/stunnel
#работать будем от юзера stunnel
setuid = stunnel
#и группы nogroup
setgid = nogroup
#Путь к пидфайлу. Создадим его прямо в корне
pid = /stunnel.pid
#Немного стандартного тюнинга
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
#Описываем сервис, трафик к которому будем шифровать
[https]
#Внешние соединения принимаем на 443 порту
accept  = 443
#Переадресовываемся на 80 порт localhost.
#Если адрес в connect не указан(192.168.0.1:80),
#то по умолчанию подразумевается локалхост
connect = 80
TIMEOUTclose = 0

далее создаем директорию в которую stunnel будет chrootится:

mkdir /var/tmp/stunnel

И ставим владельца на эту директорию

chown stunnel:nogroup /var/tmp/stunnel

Тепеь скопируем сертификат в /var/tmp/stunnel:

cp /usr/local/etc/stunnel/stunnel.pem /var/tmp/stunnel

Теперь изменим немного /usr/local/etc/rc.d/stunnel, выставим другое место где находится pid файл stunnel.
Для этого найдем строку:

${stunnel_pidfile="/var/run/${name}.pid"}

и изменим ее:

${stunnel_pidfile="/var/tmp/stunnel/${name}.pid"}

Теперь остается разрешить запускаться stunnel:

echo 'stunnel_enable="YES"' >> /etc/rc.conf

теперь запускаем его:

/usr/local/etc/rc.d/stunnel start

И можно соединятся с нашим сервером по шифрованному каналу.

В конфигурационном файле приведен пример только для вебсервера, но можно организовать шифрованный канал с любым TCP сервисом, на любом порту.

На этом настройка закончена.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By Anonym, 15.11.2009 @ 18:56

    Спасибо, хорошее описание. Только поправьте
    echo ‘stunnel_enable=»YES»‘ > /etc/rc.conf
    на
    echo ‘stunnel_enable=»YES»‘ >> /etc/rc.conf

Other Links to this Post


Украинская Баннерная Сеть