Показаны сообщения с ярлыком tls. Показать все сообщения
Показаны сообщения с ярлыком tls. Показать все сообщения

среда, 2 июня 2010 г.

Про безопасные соединения

OpenSSL Command-Line HOWTO

Самое необходимое:

 

# port 25/TLS; use same syntax for port 587
openssl s_client -connect remote.host:25 -starttls smtp

# port 465/SSL
openssl s_client -connect remote.host:465

# imaps: IMAP over SSL
openssl s_client -connect remote.host:993

# pop3s: POP-3 over SSL
openssl s_client -connect remote.host:995
Иногда может потребоваться указать протокол: -ssl2 или -ssl3

понедельник, 29 июня 2009 г.

Установка и настройка почтового сервера Postfix + Cyrus-imapd в Fedora

Итак, хочу наконец собрать всё в одну кучу.
Платформа - Fedora 11.
Обслуживаем вирт.домены, раздаём почту по POP3, IMAP, HTTP.


Сначала база:

1. Поставить Postfix, Сyrus-sasl, Сyrus-imapd

2. Подготовка:
Создать каталог для почты /var/mail/vhosts/домен
Создать пользователя и группу virtual, uid/gid 5000, сделать владельцем /var/mail/vhosts/


# mkdir /etc/mail/vhosts
# mkdir /etc/mail/vhosts/домен
# groupadd -r virtual -g 5000
# useradd -r -M virtual -u 5000 -g 5000
# chown -R virtual:virtual /var/mail/vhosts/


3. Настроить виртуальный домен:
Прописать вирт.домен в /etc/postfix/main.cf:

#Virtual domain
virtual_mailbox_domains = домен
virtual_mailbox_base = /var/mail/vhosts
# файл с адресами
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
# пользователь virtual, от которого доставляется почта
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# файл с алиасами
virtual_alias_maps = hash:/etc/postfix/virtual
Внимание! Виртуальный домен не может быть указан в mydestination!!!

4. Настроить Cyrus-imapd:
добавить в /etc/imapd.conf

allowplaintext: 1
# sasl пользователь-админ
admins: cyrusadmin
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sasldb
sasl_sasldb_path: /etc/sasldb2
virtdomains: userid
# обслуживаемый виртуальный домен
loginrealms: домен
Прописать транспорт в /etc/postfix/main.cf:


# передача писем сайрусу
virtual_transport = lmtp:unix:/var/lib/imap/socket/lmtp


5. Настроить SASL:
В /usr/lib/sasl2/smtpd.conf вписать:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login cram-md5
(этим мы сказали, что используем плагин, смотрящий в базу /etc/sasldb2)

Прописать настройки SASL в /etc/postfix/main.cf:

#SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
#Restrictions
# Это начальные разграничения, потом усилим
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
6. Создать ящики и SASL пользователей вирт.домена:
Ящики и алиасы (в т.ч. для создания групп):
в файле /etc/postfix/vmailbox указать ящики в формате

юзер@домен домен/юзер
в файле /etc/postfix/virtual указать алиасы в формате

юзер@домен адрес1 адрес2
SASL пользователи и ящики Cyrus-imapd:


создать sasl пользователей

# saslpasswd2 -c -u домен юзер


отдельно создать админа

# saslpasswd2 -c -u cyrusadmin


сделать ящики:

# cyradm --user cyrusadmin localhost
Password:
localhost.localdomain> cm user.юзер@домен
localhost.localdomain> sam user.юзер@домен cyrusadmin c

Таким образом создаётся ящик и даются права на него админу.


7. Создание сертификатов и ключей.

Создание сертификата центра сертификации:



cd /etc/pki/tls/
misc/CA -newca


Указываем неск. параметров, самый главный - Common name, там должно быть имя сервера.
Получим сертификат /etc/CA/cacert.pem
и закрытый ключ /etc/CA/private/cakey.pem

Создание закрытого ключа и сертификата для Postfix:


# openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 730
# openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem
Теперь создаём каталог под ключи и кидаем туда ключи и права выставляем на закрытый ключ:


# mkdir /etc/postfix/certs
# mv postfix_private_key.pem /etc/postfix/certs/
# mv postfix_public_cert.pem /etc/postfix/certs/
# cp /etc/CA/cacert.pem /etc/postfix/certs
# chmod 600 /etc/postfix/certs/postfix_private_key.pem

Закидываем CA сертификат в хранилище:

cat /etc/CA/cacert.pem >> /etc/pki/tls/certs/ca-bundle.crt
Настраиваем Postfix - пишем в /etc/postfix/main.cf:

# TLS
smtpd_use_tls = yes
smtpd_tls_key_file = /etc/postfix/certs/postfix_private_key.pem
smtpd_tls_cert_file = /etc/postfix/certs/postfix_public_cert.pem
smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
tls_random_source = dev:/dev/urandom
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes

# разрешить auth plain только под TLS, при необходимости раскомментить:
#smtpd_tls_auth_only = yes

# для оптимизации TLS
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
Обращаю внимание на "smtpd_tls_auth_only = yes" - её лучше включить.


Проверка:

# openssl s_client -starttls smtp -connect localhost:25

Если выскочит что-то типа:

CONNECTED(00000005)
5552:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
То проверяем в первую очередь правильность имён и пути в main.cf!


8. Теперь антивирус и спаморез.
Ставим Amavis, ClamAV и spamassassin.

В /etc/postfix/main.cf пишем:

# передача писем амавису на проверку
content_filter = amavisd-new:[127.0.0.1]:10024
В /etc/postfix/master.cf:


# amavisd-new LMTP
amavisd-new unix - - n - 2 lmtp
-o lmtp_data_done_timeout=1200s
-o disable_dns_lookups=yes


# smtpd демон, принимающий проверенную почту
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc_envelopes=yes


Качаем eicar и проверяем всё эту красоту, отправив вирь простым sendmail'ом.
Смотрим логи - там должно быть сообщение о пойманном вире.

Для автообновления баз антивируса:
в /etc/freshclam.conf комментим строку

#Example
в /etc/sysconfig/freshclam комментим:

#FRESHCLAM_DELAY=disabled-warn


Сам сервер готов. Остался веб интерфейс.

среда, 6 августа 2008 г.

Cyrus-imap + TLS

Организация шифрования для сайруса - дело простое. Делаем закрытый ключ и сертификат и прописываем в /etc/imapd.conf:

tls_cert_file: /var/lib/imap/certs/cyrus_public_cert.pem
tls_key_file: /var/lib/imap/certs/cyrus_private_key.pem
tls_ca_file: /var/lib/imap/certs/cacert.pem
tls_ca_path: /var/lib/imap/certs/
естественно, пути могут отличаться, у юзера, от кот. работает сайрус, должны быть права на чтение этих файлов.

Ключ и сертификат делаем так же, как для Postfix'а.

воскресенье, 13 июля 2008 г.

Postfix + TLS

Здесь я буду постить результаты своих попыток прикручивания TLS к Постфиксу.

Для начала нам нужен сертификат нашего центра сертификации:

#cd /usr/share/ssl/misc
#./CA.pl -newca

В процессе создания говорим, что common name - имя нашего хоста.

Получаем каталог /usr/share/ssl/demoCA, в кот. есть файлик cacert.pem, ставим этот сертификат конкверором.

Делаем сертификат Постфикса:
из каталога /usr/share/ssl

#openssl req -new -nodes -keyout postfix_private_key.pem -out postfix_private_key.pem -days 730
#openssl ca -policy policy_anything -out postfix_public_cert.pem -infiles postfix_private_key.pem
если в процессе выполнения второй команды получаем ошибки открытия файлов - значит есть проблема с путями (т.к. путь к закрытому ключу сервера относительный, то имеет значение, откуда даётся команда).

Дальше делаем каталог /etc/postfix/certs, куда копируем /usr/share/ssl/demoCA/cacert.pem и созданные для постфикса закрытый ключ postfix_private_key.pem и сертификат postfix_public_cert.pem. Устанавливаем на ключ права 600.

Пишем в /etc/postfix/main.cf :

smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom

smtpd_tls_key_file = /etc/postfix/certs/postfix_private_key.pem
smtpd_tls_cert_file = /etc/postfix/certs/postfix_public_cert.pem
smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem

smtpd_tls_loglevel = 2
smtpd_tlsreceived_header = yes
Таким образом мы включили TLS, сказали, где генератор случайных чисел, сертификаты, а таже установили детальные логи для tls и добавление заголовков.

Внимание - грабли!

В /etc/postfix/master.cf раскомментируйте строку
tlsmgr unix - - n 1000? 1 tlsmgr
Иначе получите ошибки, вроде:
Jul 15 15:26:19 deck postfix/smtpd[3098]: initializing the server-side TLS engine
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:19 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: connect to private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: problem talking to server private/tlsmgr: Connection refused
Jul 15 15:26:20 deck postfix/smtpd[3098]: warning: no entropy for TLS key generation: disabling TLS support
Убеждаемся, что всё работает:

#openssl s_client -starttls smtp -connect localhost:25
Если мы видим данные о сертификате и ожидание дальнейшего ввода - значит всё правильно.

А так, как ранее мы прикрутили к нашему серваку plaintext аутентификацию, то имеет смысл засунуть её под шифрование, /etc/postfix/main.cf:
smtpd_tls_auth_only = yes
Коннектимся телнетом и убеждаемся, что нам не предлагают аутентификацию, а только STARTTLS, опять коннектимся, используя openssl, потом приветствуем сервер и убеждаемся, что теперь аутентификация возможна.

для оптимизации шифрования добавляем в конфиг:

smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s

Продолжение следует...