Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

Безопасность транспортного уровня Sendmail.

Рубрика: Безопасность -> Защита сервисов
Метки: | | | |
Вторник, 6 октября 2009 г.
Просмотров: 5864
Подписаться на комментарии по RSS

     Transport Layer Security.

     Протокол TLS основан на SSL, который предоставляет кодирование и целостность сообщения с помощью применения РКС. Конкретно к Sendmail (поддержка TLS появилась в версии 8.11), TLS предлагает:

  • Аутентификацию: можно быть точно уверенным в том, что удаленный узел именно тот, кем он и должен быть на самом деле.
  • Секретность: защиту от «подслушивания».
  • Целостность: можно не волноваться: данные не могут быть изменены.

     С помощью следующих опций можно конфигурировать сертификаты, используемые TLS, их можно добавить в файл generic-linux.mc:


Define('CERT_DIR', 'MAIL_SETTINGS_DIR''certs')dnl define ('conf CACERT_PATH', 'CERT_DIR') dnl define ( "confCACERT, 'CERT_DIR/CAcert .pem') dnl define ('conf SERVER_CERT', 'CERT_DIR/cert.pem' ) dnl define ('conf SERVER_KEY', 'CERT_DIR/key.pem') dnl define('confCLIENT_CERT", 'CERT_DIR/cert .pem') dnl define ('confCLIENT_KEY', "CERT_DIR/key.pem') dnl

     Конечно, можно заменить MAIL_SETTINGS_DIR и CERTDIR, указав каталоги, которые используются в конкретной системе. Было предположено, что для сертификатов используется каталог /etc/mailcerts.

     Необходимые сертификаты могут быть сгенерированы сценарием CA.pl (/etc/ssl/misc/CA.pl). Первоначально нужно создать новый сертификат:

# ./CA.pl <file:///CA.pl> -newca


СА certificate file name (or enter to create)
Making CA certificate...
Generating a 1024 bit RSA private key
..++++++
.... ++++++
writing new private key to *./demoCA/private/cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
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 Distinguished
Name or DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
IF you enter '.', the field will be left blank.
Country name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]: Moskow
Locality Name (eg, city) []:Moskow
Organization Name (eg, company) [Internet Widgits Pty Ltd] :Test K&T
Organization Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Petr S
Email Address []:petr@test.net <mailto:petr@test.net>

     В результате будет сгенерирован СА-файл demoCA/cacert.pem, который можно скопировать в каталог /etc/mailcerts/CAcert .pem.

Теперь нужно сгенерировать приватный ключ для сервера:

#   ./CA.pl <file:///CA.pl>   -newreq


Generating a 1024 bit RSA private key
. + + ++++
    ++++++++
writing new private key to Newreq.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
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 Distinguished
Name or DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
IF you enter ' .', the field will be left blank.
Country name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]: Moskow
Locality Name (eg, city) []:Moskow
Organization Name (eg, company)  [Internet Widgits Pty Ltd]: Test K&T
Organization Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Petr S
Email Address []:pete@test.net <mailto:petr@test.net>
Please enter the following 'extra' attributes to be send with
your
certificate request
A challenge password[]:changethis
An optional company name[] :
Request (and private key) is in newreq.pem

     Теперь надо скопировать результирующий файл (newreq.pem) в /etc/mail/certs/key.pem. Осталось только подписать этот приватный ключ, используя сгенерированный сертификат (самоподписанный сертификат):

#   ./CA.pl <file:///CA.pl>   -sign


Using configuration form /etc/ssl/openssl. cnf
Enter pass phrase for ./demoCA/private/сэкеу.pern:
Check that the request matches the signature
Signature Ok
Certificate Details:
Serial Number: 1 (Oxl) Validity
Not Before: Aug 31  16:19:03 2004 GMT Not After:  Aug 31  16:19:03 2005 GMT Subject:
countryName    = RU
stateOrProvinceName       = Moskow
localityName    = Moskow
organizationName    = Test K&T
commonName    = Petr S
emailAddress    = petr@test.net <mailto:petr@test.net>
X509v3 extensions:
X509v3 Basic Constraints: CA:FALSE
Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 20:96:61:C9:81:CC:8A:CE:19:89:EE:E4:'02:C0:C4:37:09:15:E1 X509v3 Authority Key Identifier: keyed:
0C:07:A3:C5:E3:A8:38:5B:EE:EA:0F:59:08:AE:B7: CE:02:35:6B:3B
DirName:/C=RU/ST=Moskow/L=Moskow/0=Test K&T/ CN=Petr S/emailAddress=petr@test.net  <mailto:petr@test.net>serial:00
Certificate is to be certified until Aug 31 16:19:03 2005 GMT (365 days)
Sign the certificate? [y/n]:y Write out database with 1 new entries
Data Base Updated
Signed  certificate is in newcert.pem

     В результате будет реализован публичный сертификат newcert.pem (он будет помещен в каталог demoCA). Нужно переместить это файл в /etc/mail/certs/certs.pem. Права доступа ко всем файлам должны быть установлены в 0700, владельцем файла должен быть root.

     Были сгенерированы сертификаты и настроен Sendmail на употребление TLS. Теперь надо перезапустить Sendmail. Надо проверить, что все работает:

# telnet localhost 25


Trying 127.0.0.1. . .
Connected to localhost.
Escape character is ,A]'.
220 example.com <http://test.net> ESMTP Sendmail 9.2.3/9.2.3; Mon, 31 Sep
2004 12:10:56
ehlo localhost
250-null.null Hello IDENT:OSlocalhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
starttls
220 2.0.0 Ready to start TLS

     Если сервер положительно реагирует на команду stattls, значит, TLS сконфигурирован правильно и может применяться другими серверами и клиентами при их взаимодействии с этим сервером.

     Нужно помнить, что TLS будет употребляться только в том случае, если удаленная машина также поддерживает TLS. Так как обычно не контролируются удаленные машины и не нельзя заставить их администраторов установить TLS, то не получится и применять TLS. Надо помнить, что так как TLS применяется только между поддерживающими его машинами, то гарантировать секретность передаваемой почты между данным сервером и серверами, не поддерживающими TLS, гарантировать не может никто.

     Если секретность почты очень важна, рекомендуется употреблять GnuPG или PGP.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)