2007.04_Qmail – nowoczesny serwer pocztowy_[Bezpieczenstwo].pdf

(670 KB) Pobierz
332768120 UNPDF
bezpieczeństwo
Bezpieczeny serwer pocztowy
Qmail – nowoczesny
Agnieszka Kądziołka
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.
mowym działaniu, posiada duże możliwo-
ści koniguracji, 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 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):
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 zdeiniować, ż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.
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 konigura-
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-
32
maj 2007
serwer pocztowy
Q mail został napisany z myślą o bezproble-
332768120.024.png 332768120.025.png 332768120.026.png 332768120.027.png
 
bezpieczeństwo
Bezpieczeny serwer pocztowy
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)
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”
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:
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:
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 koni-
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 skonigurować. Domyślnie koni-
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
koniguracyjne, aby wiedzieć, jakie oferuje on
możliwości. Jednak demon powinien dobrze
działać przy domyślnych ustawieniach.
Wystarczy więc go uruchomić:
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ć).
/usr/local/sbin/clamd
groupadd clamav
useradd -g clamav
-s /bin/false
-c "Clam Antivirus"
clamav
i sprawdzić, czy poprawnie skanuje pliki:
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:
clamdscan /tmp/
Następnie należy rozpakować, skompilować
i zainstalować ściągnięty pakiet:
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.
host -t txt onet.pl
tar -zxvf clamav-0.90.tar.gz
cd clamav-0.90
./conigure
make
make install
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ć:
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:
Aby sprawdzić czy ClamAV działa popraw-
nie, można zrobić prosty test:
onet.pl descriptive text
"v=spf1 ip4:213.180.128.0/19 -all”
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.
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
patch -p0 < qmailqueue-patch
cd qmail-1.03
make
www.lpmagazine.org
33
332768120.001.png 332768120.002.png 332768120.003.png 332768120.004.png 332768120.005.png 332768120.006.png 332768120.007.png 332768120.008.png 332768120.009.png 332768120.010.png
 
bezpieczeństwo
Bezpieczeny serwer pocztowy
Następnie należy podmienić qmail-smtpd (za-
chowując kopię bezpieczeństwa):
Po instalacji sprawdź, czy użytkownik qma-
ild będzie miał prawa do uruchamiania ska-
nera:
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:
cp /var/qmail/bin/qmail-smtpd
/var/qmail/bin/
qmail-smtpd.old
cp qmail-smtpd
/var/qmail/bin/
setuidgid qmaild
/var/qmail/bin/
qmail-scanner-queue.pl
-g
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);
i zrestartować qmaila.
Aby zainstalować qmail-scannera, nale-
ży pobrać najnowszą wersję oprogramowa-
nia ze strony http://qmail-scanner.sourceforge.
net/.
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 modyikacją plik ten wyglą-
dał np. tak:
Kolejnym krokiem jest stworzenie gru-
py i użytkownika, z poziomu którego będzie
działał qmail-scanner:
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:
groupadd qscand
useradd -c "Qmail-Scanner
Account" -g qscand
-s /bin/false qscand
Po rozpakowaniu ściągniętego archiwum
trzeba uruchomić konigurację pakietu:
451 qq temporary problem (#4.3.0)
./conigure
--admin konto_mailowe
--domain twoja.domena.pl
--debug no
127.:allow,RELAYCLIENT=""
:allow
Trzeba wtedy zwiększyć ilość pamięci do-
stępnej dla qmaila. W przypadku ClamAV
wartością wystarczającą jest 25MB.
to po dodaniu obsługi antywirusowej będzie
wyglądał tak:
Powyższa koniguracja 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 skonigurować, używając
opcji -notify , np. -notify "none" – ozna-
cza to, że powiadomienia nie będą wysyła-
ne wcale.
Po skonigurowaniu pakietu należy
zwrócić uwagę na podsumowanie (czy nie
ma błędów), a w szczególności na linijkę:
127.:allow,
RELAYCLIENT="":allow,
QMAILQUEUE=
"/var/qmail/bin/
qmail-scanner-queue.pl"
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:
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 :
scanners=
"clamdscan_scanner"
tar -zxvf vpopmail-5.*
cd vpopmail-5.*
groupadd
-g 89 vchkpw
useradd
-g vchkpw
-u 89 vpopmail
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 ./conigure z opcją
--install ):
qmailctl cdb
lub – jeśli nie masz qmailctl :
Kolejnym krokiem jest kompilacja pakietu.
Można użyć opcji domyślnych, ale warto się
zapoznać z możliwościami koniguracyjny-
mi tego pakietu. Listę dostępnych opcji zoba-
czysz wydając polecenie:
./conigure
--admin konto_mailowe
--domain twoja.domena.pl
--notify "none" \
--debug no --install
tcprules
/etc/tcp.smtp.cdb
/etc/tcp.smtp.tmp <
/etc/tcp.smtp chmod 644
/etc/tcp.smtp.cdb
./conigure
--help
34
maj 2007
332768120.011.png 332768120.012.png 332768120.013.png
 
bezpieczeństwo
Bezpieczeny serwer pocztowy
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 koniguracji
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 oia-
ry właśnie w polu źródłowym. Wówczas
odbity mail traia do oiary z zupełnie nie-
winnego serwera. List w formie zwrotu po-
zwala też w większości przypadków omi-
nąć iltry antyspamowe analizujące treści
listów.
Istnieje możliwość takiej koniguracji
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 .
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:
./conigure [opcje koniguracji]
czas na kompilację oraz instalację pakietu:
make
make install-strip
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)
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 ).
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:
echo "192.168.1.:allow,
RELAYCLIENT=\"\"" >>
~vpopmail/etc/tcp.smtp
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 izyczne, 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.
Ostatnim krokiem jest dodanie domen, które
mają być obsługiwane przez serwer:
cd katalog/
qmail-1.03/
patch -p1
< qmail-1.03-realrcptto-
2006.12.10.patch
cd /home/vpopmail/bin
./vadddomain test.com.pl
oraz użytkowników w tych domenach:
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 konlikt tego typu występuje
przy bardzo popularnym patchu qmail-smt-
pauth .
Jeśli masz już poprawnie zmodyikowa-
ne źródła, kompilacja sprowadza się do po-
lecenia
./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.
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 .
make
Po pomyślnej kompilacji musisz zatrzymać
qmaila:
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.
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
qmailctl stop
po czym podmienić dwa pliki:
cp qmail-smtpd
/var/qmail/bin/
cp qmail-qmtpd
/var/qmail/bin/
www.lpmagazine.org
35
332768120.014.png 332768120.015.png 332768120.016.png 332768120.017.png 332768120.018.png 332768120.019.png 332768120.020.png 332768120.021.png 332768120.022.png 332768120.023.png
 
Zgłoś jeśli naruszono regulamin