Программа stunnel шифрует - при помощи SSL - трафик демонов, не обладающих способностями к шифрованию, stunnel делает преимущества шифрования с открытым ключом доступными широкому спектру сетевых приложений. stunnel входит в состав пакета OpenSSL и устанавливается вместе с OpenSSL.

Подобно прочим приложениям, работающим с SSL, stunnel для нормальной работы требует наличия сертификата. Простейший способ создать сертификат stunnel: перейти в каталог сертификатов SSL и выполнить команду make, как показано в следующем примере:

» cd /usr/share/ssl/certs
B make stunnel.pem
umask 77 ; \
PEM1=7bin/mktemp /tmp/openssl.XXXXXX' ; \
PEM2='/bin/mktemp /tmp/openssl.XXXXXX1 ; \
/usr/bin/openssl req -newkey rsa:1024 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2
; \
cat $PEM1 > stunnel.pem ; \
echo "" » stunnel.pem ; \
cat $PEM2 » stunnel.pem ; \
rm -f $PEM1 SPEM2
Using configuration from /usr/share/ssl/openssl.cnf
Generating a 1024 bit RSA private key
.....++++++
l........++++++
writing new private key to '/tmp/openssl.3Wjex'
You are about to be asked to enter information that will be incorporated
into your certificate request. What you are about to enter is what is
called a Distinguished Name or a DN. There are quite a few fields but you
can leave some blank. If you enter the field will be left blank. For
some fields there will be a default value.
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:Maryland
Locality Name (eg. city) [] Gaithersburg
Organization Name (eg, company) [Internet Widgits LtdJ.WroteTheBook.com
Organizational Unit Name (eg, section) []:Books
Common Name (eg. your name or your server's hostname) []:Craig Hunt
Email Address []:craig.huntewrotethebook.com

По умолчанию при установке openssl создается каталог /usr/share/ssl/certs, предназначенный для хранения сертификатов, и stunnel по умолчанию ищет в этом каталоге сертификат с именем stunnel.pem.1 Как и для всех других новых сертификатов, openssl необходимо предоставить информацию, однозначным образом определяющую сертификат.

После создания сертификата программа stunnel готова к применению. Отличными примерами служб, работающих через защищенный канал stunnel, могут послужить POP и IMAP. Главной причиной совместного использования POP, IMAP и stunnel является защита паролей пользователей, передаваемых в ходе сеансов POP и IMAP. stunnel шифрует все: регистрацию на сервере и передаваемые почтовые сообщения. Последнее защищает содержимое сообщения от перехвата в процессе передачи от сервера клиента, хотя с точки зрения системного администратора важно защитить именно пароль.


Чтобы защищенный обмен по POP и IMAP заработал, обе стороны должны уметь передавать данные по каналам SSL. Однако это не всегда так. У некоторых клиентов нет stunnel; у других вообще нет SSL. По этой причине серверы обычно предоставляют стандартный доступ к службам POP и IMAP через широко известные порты, а SSL-доступ к тем же службам - через другие порты. При работе через stunnel служба POP называется pops и использует порт TCP 995; IMAP называется imaps и получает порт TCP 993. pops и imaps - это не специальные протоколы, а просто имена служб из файла /etc/ services, связанные с номерами портов 995 и 993. Следующая команда загрузочного сценария организует доступ к POP через туннель SSL и порт 995:

stunnel -d 995 -1 /usr/sbin/ipop3d -- ipop3d

Как вариант, stunnel может выполняться демоном inetd. Чтобы это происходило, следует создать соответствующую запись в файле inetd.conf. Например, следующая запись организует доступ к POP через туннель SSL - по запросам клиентов:

pops stream tcp nowait root /usr/sbin/stunnel -1 /usr/sbin/ipop3d — ipop3d

Если используется демон xinetd, работу stunnel следует настраивать в файле xinetd.conf. Следующая запись xinetd выполняет настройку imaps:

service imaps
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/stunnel
server_args = -1 /usr/sbin/imapd -- imapd
log_on_failure += USERID
}

Приложение stunnel никоим образом не связано именно с POP или IMAP, оно может применяться для обеспечения безопасности многих демонов. Если необходимо защитить демон, выполняемый inetd или xinetd, команда stunnel размещается в файле inetd.conf или xinetd.conf, как и должно быть. Если демон стартует по команде в загрузочном файле, там же должна размещаться и команда stunnel.

Несмотря на серьезные возможности инструментов вроде stunnel и ssh, шифрование не является заменой для качественной компьютерной безопасности. Оно способно защитить чувствительную или частную информацию от просмотра, но никогда не должно быть единственным средством защиты важной информации. Системы шифрования подвержены взломам, а зашифрованные данные - удалению и повреждениям, точно так же, как любые другие данные. Пусть шифрование не смущает вас ложным ощущением защищенности. Некоторая информация настолько чувствительна и важна, что ее не следует хранить на подключенных к сети компьютерах даже в закодированном виде. Шифрование - лишь небольшой фрагмент полноценной системы безопасности.