UcallWeconn

Не IP-метады, заснаваныя на рэле


Original on http://postfix.state-of-mind.de/patrick.koetter/easterhegg2004/

This translation is proudly done by UcallWeconn. UcallWeconn is an ambitious startup, which aims the market of cheap VoIP.

SMTP AUTH і кліента на аснове сертыфікатаў рэтрансляцыі


Patrick Ben Koetter

p@state-of-mind.de

Змест

SMTP AUTH
Сервер SMTP AUTH
SMTP AUTH кліента
Сервер TLS
Стварэнне і падпісванне сертыфікатаў
Сервер TLS Уключыць
TLS тэставыя серверы
Звычайны механізм тэксту TLS абароны
Кліент на аснове сертыфікатаў рэтрансляцыі

Рэзюмэ

У гэтым кароткім артыкуле вы ўбачыце рэзюмэ свайго выступу на "Non-IP-метадаў, заснаваных на Postfix рэле" на Easterhegg 2004 у Мюнхене.

SMTP AUTH

Сервер SMTP AUTH

SMTP AUTH Server робіць, Postfix SMTP AUTH для кліента прапановы. Акрамя таго, неабходна наладзіць:

  1. Аўтэнтыфікацыя серверную частку для SASL

  2. Пароль праверкі службы ў SASL

  3. Аўтэнтыфікацыя ў Postfix інтэрфейс

  4. SMTP AUTH у Postfix параметры канфігурацыі

Postfix - SASL Узаемадзеянне

У гэтай частцы апісваюцца крокі налады 1 да 3

Аўтэнтыфікацыя бэкэнд: shadow

Усё, што трэба падрыхтаваць што-небудзь. Вы павінны saslauthd, самастойных, так пачніце дэман, пункт /etc/shadow аўтэнтыфікацыі бэкэнд як з дапамогай:

# saslauthd -a shadow

Тады звяжыцеся з testsaslauthd калі saslauthd можа пацвердзіць сапраўднасць карыстача:

# testsaslauthd -u test -p testpass

Так Postfix ведае, што ён мае справу з saslauthd і тэкст толькі механізмы дамінуюць, вы ствараеце наступнай канфігурацыі ў /usr/lib/sasl2/smtpd.conf (Debian: /usr/lib/sasl2/smtpd.conf:

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level: 3 
Аўтэнтыфікацыя бэкэнд: sasldb2

Доступ да sasldb Postfix рэгулюе напроста. Спачатку вы павінны стварыць sasldb2. Акрамя таго, вы зможаце скарыстацца saslpasswd2:

saslpasswd2-C-U mail.example.com тэст 

Генераваць /etc/sasldb2, root і групы павінны быць прачытаны толькі Postfix!

Тады ў вас ёсць у /usr/lib/sasl2/smtpd.conf (Debian: /etc/postfix/sasl/smtpd.conf) усталюеце наступныя параметры:

pwcheck_method: auxprop
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
log_level: 3
auxprop_plugin: sasldb 
Аўтэнтыфікацыя бэкэнд: MySQL

SASL 2.1.17 Паколькі не існуе асобных MySQL убудова auxprop больш, ён цяпер з'яўляецца часткай агульнага SQL убудовы auxprop. Макета для табліцы Mysql можа выглядаць наступным чынам:

-- MySQL dump 9.10
--
-- Host: localhost    Database: mail
-- ------------------------------------------------------
-- Server version  4.0.18-log
 
--
-- Table structure for table `users`
--
 
CREATE TABLE users (
  id int(11) unsigned NOT NULL auto_increment,
  username varchar(255) NOT NULL default '0',
  userrealm varchar(255) NOT NULL default 'mail.example.com',
  userpassword varchar(255) NOT NULL default '1stP@ss',
  auth tinyint(1) default '1',
  PRIMARY KEY  (id),
  UNIQUE KEY id (id)
) TYPE=MyISAM COMMENT='SMTP AUTH relay users';
 
--
-- Dumping data for table `users`
--
 
INSERT INTO users VALUES (1,'test','mail.example.com','testpass',1);

Тут, таксама, рэгулюе Postfix smtpd доступу дэмана непасрэдна. Тое, што ён павінен уважліва, то звычайна вяртаюцца smtpd.conf у:

pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5
log_level: 3
sql_engine: mysql
sql_hostnames: localhost
sql_database: mail
sql_user: postfix
sql_passwd: Yanggt!
sql_select: SELECT %p FROM users WHERE username = '%u' AND userrealm = '%r' AND auth = '1'
sql_usessl: no

Тут, таксама, рэгулюе Postfix smtpd доступу дэмана непасрэдна. Тое, што ён павінен уважліва, то звычайна вяртаюцца smtpd.conf у:

Smtpd_sasl_auth_enable серверы = yes mail.example.com
  smtpd_sasl_local_domain = broken_sasl_auth_clients = yes 
  smtpd_sasl_security_options = noanonymous 
  smtpd_recipient_restrictions = permit_mynetworks...
1.

SMTP AUTH уключаны

2

smtpd_sasl_local_domain наладзіць вобласці. Пры выкарыстанні saslauthd, тое неабходна задаць параметры, але пусты (!) Можна.

3.

Падтрымка для кліентаў, якія прызнаюць SMTP AUTH не RFC падатлівы, такіх як Outlook (Express).

4.

Якія механізмы можа прапанаваць Postfix. заўсёды павінна быць прынамсі noanonymous, у адваротным выпадку кожны з рэле, як любы радок пасылае AUTH ...

5.

У smtpd_recipient_restrictions Вы павінны зарэгістравацца ў якасці опцыі permit_sasl_authenticated для аўтарызаваных кліентаў рэле.

Затым перамесціце з Postfix Postfix перазагрузкі чытаць новую канфігурацыю.

Выпрабаванні

Выкарыстоўвайце наступную каманду вы можаце праверыць простых радкоў тэксту для аўтэнтыфікацыі для карыстачоў test з паролем testpass:

#encrypt
perl -MMIME::Base64 -e 'print encode_base64("test\0test\0testpass");'
dGVzdAB0ZXN0AHRlc3RwYXNz
# decrypt
perl -MMIME::Base64 -e 'print decode_base64("dGVzdAB0ZXN0AHRlc3RwYXNz"); print "\n";'

Зараз вы можаце пайсці на ўсе тры вышэйзгаданых сцэнараў канфігурацыі для праверкі SMTP AUTH у Postfix. Акрамя таго, вы проста Telnet для праверкі Postfix:

220 mail.example.com ESMTP Postfix
EHLO example.com
250-mail.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 GSSAPI PLAIN LOGIN
250-AUTH=DIGEST-MD5 CRAM-MD5 GSSAPI PLAIN LOGIN
250-XVERP
250 8BITMIMEAUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz 235 Аўтэнтыфікацыя паспяховага QUIT 221 Bye 

SMTP AUTH кліента

SMTP AUTH Server робіць, Postfix SMTP дэман выкарыстоўвае свой уласны SMTP AUTH для аўтэнтыфікацыі сябе серверы для іншых. Акрамя таго, неабходна наладзіць:

  1. Карта для стварэння ўліковых дадзеных

  2. На боку кліента SMTP AUTH у Postfix наладзіць

Карта для стварэння ўліковых дадзеных

Па-першае, вы павінны карце /etc/Postfix/sasl_passwd стварыць Postfix у гаспадара, у якім ён з'яўляецца выкарыстанне SMTP AUTH, месца і паўнамоцтвы якога яна павінна выкарыстоўваць гэты:

mail.foo.com  username:password
smtp.bar.com  username:password 

У файле /etc/Postfix/sasl_passwd павінны быць прачытаны толькі ў root...

Тады вы павінны падаць з postmap генераваць карты:

postmap hash:/etc/postfix/sasl_passwd

На боку кліента SMTP AUTH у Postfix наладзіць

Затым неабходна наладзіць на боку кліента SMTP AUTH у Postfix:

## SMTP AUTH Client
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous, noplaintext

Затым перазагрузіце Postfix чытаць новы рух Postfix канфігурацыі і ён павінен ісці адразу)

Сервер TLS

забяспечвае для сервера Postfix для TLS іншых кліентаў, вы павінны распачаць наступныя крокі:

  1. Стварэнне і падпісваць сертыфікаты і

  2. Сервер Уключыць TLS

  3. TLS тэставым серверы

  4. Звычайны механізмаў Тэкст TLS абароны

  5. Кліент на аснове сертыфікатаў рэтрансляцыі

Стварэнне і падпісваць сертыфікаты і

Спачатку вы павінны спытаць для атрымання сертыфіката сервера. Тады ў вас ёсць ён падпісаны CA, сертыфікацыі, ці калі вы можаце ўласны CA, ёсць знак сам. CA Cert, зачынены ключ і сертыфікат сервера вы паклалі яго як /etc/Postfix/сертыфікаты, як:

/etc/postfix/certs$ ls -all
total 24
drwxr-xr-x    2 root     root    4096 Apr 10 11:09 .
drwxr-xr-x    5 root     root    4096 Apr 10 14:20 ..
lrwxr-xr-x    1 root     root 23 Apr 10 11:09 ba2647d8.0 -> postfix_public_cert.pem
-rw-r--r--    1 root     root    1322 Apr  9 23:43 cacert.pem
lrwxr-xr-x    1 root     root 10 Apr 10 11:09 e8346ee7.0 -> cacert.pem
-rw-------    1 root     root    1599 Apr  9 23:43 postfix_private_key.pem
-rw-r--r--    1 root     root    3713 Apr  9 23:43 postfix_public_cert.pem

Сервер Уключыць TLS

Тады Вам неабходна ўключыць серверны TLS у Postfix

## TLS Server
smtpd_use_tls = yes
smtpd_tls_loglevel = 2
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

TLS тэставым серверы

Выкарыстоўвайце наступную каманду на серверы, вы можаце праверыць, калі Postfix прыцягнуў сертыфікаты правільна і што сертыфікаты могуць быць правераны:

openssl s_client -starttls smtp -CApath /etc/postfix/certs/ -connect localhost:25 

Звычайны механізмаў Тэкст TLS абароны

З наступнымі параметрамі ў main.cf вы можаце SMTP AUTH наладжаны так, што звычайны тэкст Mechanisnmen Кліенты тое прапануецца толькі пасля сесіі TLS, перш чым яны стварылі сервер з:

smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous 

Кліент на аснове сертыфікатаў рэтрансляцыі

Кліент на аснове сертыфікатаў рэтрансляцыі патрабуе, каб кліент мае свой уласны сертыфікат, што ён можа мець зносіны з серверам па запыце. Сервер параўноўвае MD5 адбітак сертыфіката кліента на лакальны спіс адбіткі пальцаў. Калі адбіткі пальцаў у такі спіс, кліент можа Postfix і рэле ў такім дазволе. У main.cf неабходна дадаць:

 # Кліенты просяць сертыфікат
smtpd_tls_ask_ccert = yes
# Спіс сертыфікатаў кліентаў
relay_clientcerts = хэш:/etc/Postfix/relay_clientcerts
 # TLS загаловак у паштовых Уставіць адпраўлена з TLS
smtpd_tls_received_header = yes
smtpd_recipient_restrictions = 
    ...
    permit_tls_clientcerts... 
1.

У smtpd_recipient_restrictions Вы павінны зарэгістравацца ў якасці опцыі permit_tls_clientcerts для аўтарызаваных кліентаў рэле.

Тады вы ўсё адно павінны стварыць карту з яго адбіткі пальцаў. З наступную каманду вы можаце атрымаць адбіткі пальцаў з сертыфікатам кліента:

openssl x509 -noout -fingerprint -in client_public_cert.pem

Затым вы кладзяце адбіткаў пальцаў/і г.д./Postfix/relay_clientcerts з У і стварыць з postmap hash:/etc/postfix/relay_clientcerts фактычнай карту для Postfix:

#LHS RHS
E0:AC:69:B8:23:3F:8F:3F:FB:BB:31:D2:34:64:F0:30   mail.example.com 
1.

Структура Postfix карце патрабуецца паказаць значэнне на RHS, і адбіткаў пальцаў будзе цалкам досыць, толькі ў гэтай кропцы.



Valid CSS Valid XHTML 1.0 Transitional

---