2007 04 Qmail – nowoczesny serwer pocztowy [Bezpieczenstwo]

background image

bezpieczeństwo

Bezpieczeny serwer pocztowy

32

maj 2007

bezpieczeństwo

Bezpieczeny serwer pocztowy

33

www.lpmagazine.org

lin

ux

@

so

ftw

ar

e.

co

m

.p

l

Q

mail został napisany z myślą o bezproble-
mowym działaniu, posiada duże możliwo-
ści konfiguracji, jest też zadziwiająco szybki.
W poprzednim artykule pisałam o samym

qmailu, jego podstawowej instalacji, instalacji patcha
SMTP-AUTH, autorespondera oraz programu rblsmtpd
do blokowania adresów wpisanych na listach RBL.

Instalacja rozszerzenia SPF

SPF (ang. Sender Policy Framework) jest rozszerzeniem po-
zwalającym serwerowi sprawdzić, czy nagłówki maila,
który właśnie odbiera, nie zostały sfałszowane.

Przykładowo: jeśli osoba posiadająca domenę mojado-

mena.pl przy wysyłaniu poczty korzysta z serwera pocz-
towego poczta.mojadomena.pl, to za pomocą SPF-a mo-
że zdefiniować, że tylko listy wychodzące z tego serwera
pochodzą faktycznie od niej. Wówczas maile które w na-
główku w polu From mają adres @mojadomena.pl, ale zo-
stały wysłane z innego serwera pocztowego, mogą zostać
odrzucone.

Takie działanie ma na celu ograniczenie ilości spamu

oraz zmniejszenie ilości rozsyłających się wirusów.

Instalacja potrzebnego

oprogramowania

Instalację SPF-a dla qmaila rozpoczynamy od ściągnięcia
patcha ze strony http://www.saout.de/misc/spf/

Kolejnym krokiem jest nałożenie ściągniętej łatki

(w katalogu ze źródłami qmaila):

cd katalog/qmail-1.03/
patch -p0 < qmail-spf-rc5.patch

Teraz kolej na kompilację i podmianę pliku qmail-smtpd.
Najprostszy sposób to zatrzymanie qmaila, a następnie
wydanie komendy:

make setup check

Po pomyślnej kompilacji należy utworzyć plik konfigura-
cyjny dla SPF. Nazywa się on /var/qmail/control/spfbehavior
i zawiera liczbę oznaczającą sposób zachowania się roz-
szerzenia SPF.

Statusy zwracane przez SPF oznaczają, w jakim stop-

niu przesyłany mail łamie reguły ustalone przez właści-

Qmail – nowoczesny

serwer pocztowy

Qmail to program typu MTA (ang. Mail Transfer Agent) jego autorem jest Daniel J. Bernstein. Jest to
system transportu poczty elektronicznej powstały jako alternatywa dla sendmaila – programu, który
swego czasu „zasłynął” z dużej ilości błędów zagrażających bezpieczeństwu.

Agnieszka Kądziołka

background image

bezpieczeństwo

Bezpieczeny serwer pocztowy

32

maj 2007

bezpieczeństwo

Bezpieczeny serwer pocztowy

33

www.lpmagazine.org

ciela domeny. Wartości wyższe niż 3 nie po-
winny być stosowane, ponieważ istnieje ry-
zyko odrzucania całkiem poprawnych ma-
ili (na przykład na skutek chwilowej awarii
DNS-a nie będzie możliwe sprawdzenie re-
kordu SPF)

Jak przetestować SPF?

W celach testowych w pliku spfbehavior wpisz
wartość "1", żeby SPF dodawał jedynie na-
główki w sprawdzanych mailach.

Po wysłaniu do siebie wiadomości przez

poprawny serwer pocztowy w nagłówku ma-
ila powinien pojawić się taki wpis:

Received-SPF: pass
(0: SPF record
at twojadomena.pl designates
111.222.11.12 as permitted sender)

Jeśli natomiast serwer nie jest uprawniony
do przesyłania poczty z danej domeny, wpis
w nagłówku powinien wyglądać tak:

Received-SPF: softfail
(0: transitioning SPF record
at jakasdomena.pl
does not designate
111.222.33.44
as permitted sender)

Jeśli pojawiają się takie nagłówki, oznacza to,
że SPF jest poprawnie zainstalowany.

W przeciwnym wypadku sprawdź, czy

na pewno masz plik /var/qmail/control/spfbe-
havior
oraz czy ma on odpowiednie prawa
(qmail musi móc go odczytać).

Jak sprawdzić czy dana domena

obsługuje SPF?

Najprostszym sposobem jest sprawdzenie
w DNS rekordu typu TXT dla tej domeny.
Można to zrobić np. takim poleceniem:

host -t txt onet.pl

Jeśli wśród odpowiedzi będzie linijka zaczy-
nająca się od

v=spf1

, tzn. że ta domena ob-

sługuje SPF.

Przykładowo – dla domeny onet.pl linij-

ka ta wygląda następująco:

onet.pl descriptive text
"v=spf1 ip4:213.180.128.0/19 -all”

Jeśli twoja domena nie ma odpowiedniego
wpisu w DNS-ie, należy go dodać. Najprościej
jest skorzystać z kreatora na stronie http://
old.openspf.org/wizard.html

Instalacja systemu

antywirusowego ClamAV

dla qmaila

Clam AntiVirus (ClamAV) jest systemem
antywirusowym dostępnym na licencji GPL
przeznaczonym do integracji z serwerami
pocztowymi (np. z qmailem), a jego głów-
ne zadanie to skanowanie załączników ma-
ili. Pomysłodawcą programu jest Tomasz
Kojm. ClamAV, aktualnie dostępny w wer-
sji 0.90, zawiera w swojej bazie ponad 90 000
sygnatur wirusów.

Aby zainstalować system antywiruso-

wy ClamAV, należy pobrać jego najnowszą
wersję ze strony http://www.clamav.net/stable.
php#pagestart

ClamAV powinien mieć własnego użyt-

kownika i grupę, z prawami których będzie
działał. Przykładowo – aby stworzyć użyt-
kownika oraz grupę o nazwie clamav, nale-
ży wydać polecenia:

groupadd clamav
useradd -g clamav
-s /bin/false
-c "Clam Antivirus"
clamav

Następnie należy rozpakować, skompilować
i zainstalować ściągnięty pakiet:

tar -zxvf clamav-0.90.tar.gz
cd clamav-0.90
./configure
make
make install

Aby sprawdzić czy ClamAV działa popraw-
nie, można zrobić prosty test:

clamscan -r -l scan.txt clamav-0.90

Po wykonaniu tego polecenia w pliku scan.
txt
powinna się pojawić informacja o kil-
kukrotnym wykryciu wirusa ClamAV-Test-
File
. Oznacza to, że ClamAV działa popraw-
nie.

ClamAV jako demon

Aby ClamAV działał wydajnie, lepszym
pomysłem jest uruchomienie go jako demo-
na clamd i odwoływanie się do niego po-
przez program clamdscan. W takiej konfi-
guracji program nie musi za każdym razem
wczytywać z dysku całej bazy wirusów, ale
raz uruchomiony trzyma ją cały czas w pa-
mięci.

W celu uruchomienia demona należy go

najpierw skonfigurować. Domyślnie konfi-
guracja trzymana jest w pliku /usr/local/etc/
clamd.conf
.

Pierwszym krokiem powinno być usu-

nięcie linii „Example”, żeby w ogóle urucho-
mić demona. Warto przejrzeć wszystkie opcje
konfiguracyjne, aby wiedzieć, jakie oferuje on
możliwości. Jednak demon powinien dobrze
działać przy domyślnych ustawieniach.

Wystarczy więc go uruchomić:

/usr/local/sbin/clamd

i sprawdzić, czy poprawnie skanuje pliki:

clamdscan /tmp/

W przypadku problemów warto włączyć wy-
soki poziom logowania demona (LogVerbose)
i zobaczyć w logach, jaka jest przyczyna błęd-
nego działania.

Skanowanie poczty – qmail-scanner

Aby zintegrować qmaila z systemem antywi-
rusowym ClamAV, należy skorzystać z pro-
gramu qmail-scanner.

Do poprawnego działania qmail-scanner

potrzebuje qmaila z zainstalowanym patchem
qmailqueue-patch. Patcha można pobrać z ad-
resu http://www.qmail.org/qmailqueue-patch.

Nałożenie patcha wygląda następująco:

w katalogu nadrzędnym do qmail-1.03 nale-
ży uruchomić:

patch -p0 < qmailqueue-patch
cd qmail-1.03
make

Liczba Znaczenie
0

Wyłączenie SPF

1

Dodawaj jedynie nagłówki "Received-SPF", nigdy nie blokuj

2

Zwracaj błędy typu "spróbuj później", jeśli masz problemy ze sprawdzeniem rekordu SPF
w DNS-ie

3

Odrzucaj maile, jeśli SPF zwróci status fail

4

Odrzucaj maile, jeśli SPF zwróci status softfail

5

Odrzucaj maile, jeśli SPF zwróci status neutral

6

Odrzucaj maile, jeśli SPF zwróci status inny niż „przepuszczaj”

background image

34

bezpieczeństwo

Bezpieczeny serwer pocztowy

maj 2007

35

bezpieczeństwo

Bezpieczeny serwer pocztowy

www.lpmagazine.org

Następnie należy podmienić qmail-smtpd (za-
chowując kopię bezpieczeństwa):

cp /var/qmail/bin/qmail-smtpd
/var/qmail/bin/
qmail-smtpd.old
cp qmail-smtpd
/var/qmail/bin/

i zrestartować qmaila.

Aby zainstalować qmail-scannera, nale-

ży pobrać najnowszą wersję oprogramowa-
nia ze strony http://qmail-scanner.sourceforge.
net/.

Kolejnym krokiem jest stworzenie gru-

py i użytkownika, z poziomu którego będzie
działał qmail-scanner:

groupadd qscand
useradd -c "Qmail-Scanner
Account" -g qscand
-s /bin/false qscand

Po rozpakowaniu ściągniętego archiwum
trzeba uruchomić konfigurację pakietu:

./configure
--admin konto_mailowe
--domain twoja.domena.pl
--debug no

Powyższa konfiguracja oznacza, że wszelkie
powiadomienia administracyjne qmail-scan-
ner będzie wysyłał na adres konto_mailowe-
@twoja.domena.pl
.

Zachowanie podczas wysyłania powia-

domień można skonfigurować, używając
opcji

-notify

, np.

-notify "none"

– ozna-

cza to, że powiadomienia nie będą wysyła-
ne wcale.

Po skonfigurowaniu pakietu należy

zwrócić uwagę na podsumowanie (czy nie
ma błędów), a w szczególności na linijkę:

scanners=
"clamdscan_scanner"

Oznacza ona, że qmail-scanner znalazł zain-
stalowanego ClamAV i będzie go obsługiwał
w trybie demona.

Jeśli wszystko jest OK, możesz zainstalo-

wać program (uruchom

./configure

z opcją

--install

):

./configure
--admin konto_mailowe
--domain twoja.domena.pl
--notify "none" \
--debug no --install

Po instalacji sprawdź, czy użytkownik qma-
ild będzie miał prawa do uruchamiania ska-
nera:

setuidgid qmaild
/var/qmail/bin/
qmail-scanner-queue.pl
-g

Jeśli otrzymasz komunikat Can't do setu-
id
lub Permission denied, to najprawdopo-
dobniej nie masz zainstalowanego pakietu
suid-perl (w RedHacie jest to perl-suidperl,
w Debianie – perl-suid).

Ostatnią rzeczą, którą należy zrobić jest

ustawienie zmiennej

QMAILQUEUE

. Zmien-

na ta przechowuje wartość używaną przez
qmaila do odnalezienia programu do kolej-
kowania poczty. Należy w niej podać ścież-
kę do programu qmail-scanner. Najwygod-
niejszym sposobem jest dopisanie jej do pli-
ku /etc/tcp.smtp.

Jeśli przed modyfikacją plik ten wyglą-

dał np. tak:

127.:allow,RELAYCLIENT=""
:allow

to po dodaniu obsługi antywirusowej będzie
wyglądał tak:

127.:allow,
RELAYCLIENT="":allow,
QMAILQUEUE=
"/var/qmail/bin/
qmail-scanner-queue.pl"

Zasadniczo do poczty przesyłanej bezpo-
średnio z serwera nie trzeba uruchamiać
antywirusa (dlatego w pierwszej linijce
nie wpisujemy zmiennej

QMAILQUEUE

). Jeśli

jednak serwer obsługuje np. pocztę przez
WWW i mogą się pojawić listy z wirusami
przesyłane przez localhosta, to oczywiście
przy 127. też warto dopisać odpowiednie

QMAILQUEUE

.

Po zmianie czegokolwiek w tcp.smtp trze-

ba przebudować jego wersję binarną – tcp.
smtp.cdb
:

qmailctl cdb

lub – jeśli nie masz qmailctl:

tcprules
/etc/tcp.smtp.cdb
/etc/tcp.smtp.tmp <
/etc/tcp.smtp chmod 644
/etc/tcp.smtp.cdb

Od tej chwili qmail powinien już skanować
przechodzące przesyłki. Możesz to przetesto-
wać przesyłając pocztę do siebie i obserwując
nagłówki. Powinny tam się pojawić wpisy in-
formujące o skanowaniu przesyłki:

Received: from 111.222.33.44
by grendel ... with
qmail-scanner-1.25
(clamdscan: 0.86.2/1290.
spamassassin: 3.1.7.
Clear:RC:0(111.222.33.44):
SA:0(0.2/5.0):.
Processed in 0.116137 secs);

Po dodaniu skanera antywirusowego zna-
cząco zwiększa się apetyt qmaila na pa-
mięć. Jeśli masz qmaila wywoływanego
z ograniczeniem pamięci do wykorzystania,
limit ten może okazać się niewystarcza-
jący.

Objawia się to najczęściej przy próbie wy-

słania poczty takim komunikatem:

451 qq temporary problem (#4.3.0)

Trzeba wtedy zwiększyć ilość pamięci do-
stępnej dla qmaila. W przypadku ClamAV
wartością wystarczającą jest 25MB.

Konta wirtualne

– vpopmail dla qmaila

Vpopmail jest pakietem na licencji GPL, któ-
ry umożliwia łatwe zarządzanie wirtualny-
mi kontami pocztowymi na serwerze pocz-
towym.

Aby zainstalować vpopmaila, należy po-

brać najnowszą wersję pakietu ze strony
http://www.inter7.com/index.php?page=vpop-
mail.

Po rozpakowaniu archiwum dodajemy

odpowiednie grupy w systemie:

tar -zxvf vpopmail-5.*
cd vpopmail-5.*
groupadd
-g 89 vchkpw
useradd
-g vchkpw
-u 89 vpopmail

Kolejnym krokiem jest kompilacja pakietu.
Można użyć opcji domyślnych, ale warto się
zapoznać z możliwościami konfiguracyjny-
mi tego pakietu. Listę dostępnych opcji zoba-
czysz wydając polecenie:

./configure
--help

background image

34

bezpieczeństwo

Bezpieczeny serwer pocztowy

maj 2007

35

bezpieczeństwo

Bezpieczeny serwer pocztowy

www.lpmagazine.org

Na uwagę zasługuje np. blokowanie zapi-
sywania haseł w postaci niezaszyfrowanej
(

--disable-clear-passwd

), wybieranie spo-

sobu logowania zdarzeń (

--enable-log-

ging

) czy współpraca z bazą danych My-

SQL (kilka różnych opcji).

Po wybraniu opcji konfiguracji

./configure [opcje konfiguracji]

czas na kompilację oraz instalację pakietu:

make
make install-strip

Po zainstalowaniu pakietu powinniśmy do-
dać komputery, które będą uprawnione do
przesyłania poczty przez serwer (można to
również zrobić korzystając z autoryzacji
SMTP-AUTH).

echo "192.168.1.:allow,
RELAYCLIENT=\"\"" >>
~vpopmail/etc/tcp.smtp

Ostatnim krokiem jest dodanie domen, które
mają być obsługiwane przez serwer:

cd /home/vpopmail/bin
./vadddomain test.com.pl

oraz użytkowników w tych domenach:

./vadduser jakisuser@test.com.pl

Po wykonaniu powyższych komend powi-
nien zostać utworzony katalog /home/vpop-
mail/domains/test.com.pl/
i w nim katalogi
użytkowników.

Jeśli serwer jest uprawniony do odbioru

poczty dla domen, które mu zostały przypi-
sane (rekord MX w DNS-ie wskazuje na nie-
go), to w tym momencie przesłanie poczty
na adres jakisuser@test.com.pl powinno spo-
wodować pojawienie się listu w katalogu
/home/vpopmail/domains/test.com.pl/jakisuser/
Maildir/new/.

Jeśli tak się stało, można uznać, że pakiet

vpopmail działa prawidłowo.

Patch realrcptto

do qmaila

Zwykle serwer pocztowy działa tak, że po
otrzymaniu maila do dostarczenia przyj-
muje go do kolejki. Dopiero gdy nadej-
dzie jego pora, mail jest pobierany z kolej-
ki i następuje próba jego dostarczenia – wy-
szukiwany jest odbiorca listu. Gdy odbior-
ca nie zostanie odnaleziony, do nadawcy

maila zostanie przesłany mail z odpowied-
nim komunikatem informacyjnym. Spame-
rzy zauważyli, że bardzo łatwo sfałszować
nadawcę listu i zaczęli wstawiać adres ofia-
ry właśnie w polu źródłowym. Wówczas
odbity mail trafia do ofiary z zupełnie nie-
winnego serwera. List w formie zwrotu po-
zwala też w większości przypadków omi-
nąć filtry antyspamowe analizujące treści
listów.

Istnieje możliwość takiej konfiguracji

qmaila, aby już na początku transmisji
sprawdzał on, czy konto odbiorcy znajduje
się na serwerze. Jeśli nie – połączenie zosta-
nie przerwane. Do tego właśnie służy patch
realrcptto
.

Instalacja patcha

Aby go zainstalować, należy pobrać jego naj-
nowszą wersję ze strony http://code.dogmap.
org./qmail/.

Następny krokiem jest przejście do ka-

talogu ze źródłami qmaila i nałożenie ścią-
gniętej łatki:

cd katalog/
qmail-1.03/
patch -p1
< qmail-1.03-realrcptto-
2006.12.10.patch

Niestety część poprawek może zostać od-
rzucona, jeśli wcześniej były zakładane in-
ne patche.

Należy wtedy wejść do plików z rozsze-

rzeniem .rej i sprawdzić, jaki fragment ko-
du nie został zaaplikowany, a następnie rę-
cznie dokonać odpowiednich poprawek
w źródłach.

Na pewno konflikt tego typu występuje

przy bardzo popularnym patchu

qmail-smt-

pauth

.

Jeśli masz już poprawnie zmodyfikowa-

ne źródła, kompilacja sprowadza się do po-
lecenia

make

Po pomyślnej kompilacji musisz zatrzymać
qmaila:

qmailctl stop

po czym podmienić dwa pliki:

cp qmail-smtpd
/var/qmail/bin/
cp qmail-qmtpd
/var/qmail/bin/

Następnie wystarczy ponownie wystartować
serwer:

qmailctl start

Po restarcie qmaila dobrze jest sprawdzić,
czy nowe oprogramowanie zachowuje się
poprawnie. Najprościej będzie wysłać ma-
ila na nieistniejący adres w twojej dome-
nie:

telnet localhost 25
ehlo test.com
mail from: test@test.com
250 ok
rcpt to:
nieistnieje@lokalna.domena
552 sorry, no mailbox here
by that name. (#5.1.1)

Jeśli otrzymasz komunikat jak powyżej, zna-
czy to, że wszystko działa zgodnie z oczeki-
waniami.

Dodatkowe uwagi

Realrcptto w trakcie trwania sesji SMTP
sprawdza, czy możliwe jest dostarczenie
maila do podanego odbiorcy. W tym celu
sprawdza konta fizyczne, konta wirtualne
oraz aliasy. Jeśli na serwerze mamy alias
.qmail-default, to używanie qmail-realrcptto
mija się z celem, gdyż alias ten pasuje do
wszystkich odbiorców, którzy nie zostali
wcześniej znalezieni przy dostarczaniu pocz-
ty.

W przypadku vpopmaila plik ten jest

automatycznie zakładany i wykorzysty-
wany do odbijania maili lub do przekie-
rowywania błędnie zaadresowanej pocz-
ty na konto jednego z użytkowników
(tzw. catch-all account). Plik .qmail-default
jest również wykorzystywany do podpi-
nania wszelkich filtrów, np. antyspamo-
wych. Dlatego też, jeśli zdecydujemy się na
jego usunięcie, musimy przenieść obsługę
filtrów w inne miejsce, np. do qmail-scan-
nera
.

Podsumowanie

Dzięki wpółpracy serwera qmail z roz-
szerzeniem SPF, programem antywiruso-
wym, systemem antyspamowym, syste-
mem vpopmail oraz patch realrcptto blo-
kujący wysyłanie niepotrzebnych zwro-
tów maili otrzymujemy stabilny, bezpiecz-
ny, funkcjonalny a zarazem nowoczesny
serwer pocztowy.


Wyszukiwarka

Podobne podstrony:

więcej podobnych podstron