Exchange 2007 - bezpieczna komunikacja smtp, cz. II
Autor: Jacek Kochan
Opublikowano: 10 maja 2008
Scenariusz „single Exchange 2007”
Po instalacji serwera powinniśmy wykonać kilka czynności. Pierwszą jest założenie Send connectora. W konsoli Exchange zrobimy to wchodząc na Organization Configuration – Hub Transport i wybierająca akcję New Send Connector. Wpisujemy nazwę np. „Default”, typ można pozostawić Custom lub wybrać Internet.
Rys. 1 New Send Connector.
Następnie w Address Space podajemy domeny, które ma ten konektor obsługiwać. My chcemy, by obsługiwał całą komunikację, więc klikamy na Add i w pole Address wpisujemy gwiazdkę.
Rys. 2. New Send Connector - Address Space.
Następne okno „Network settings” pozostawiamy tak jak jest, czyli konektor będzie używał rekordów DNS typu MX do wyszukiwania adresów serwerów poczty, do których ma być ona dostarczona.
Rys. 3. New Send Connector - Network settings.
Następnie musimy skojarzyć ten konektor z serwerem Hub Transport. Ponieważ mamy tylko jeden serwer w organizacji, to pozostawiamy ten wybór.
Rys. 4. New Send Connector - Hub Transport.
W następnym oknie po kliknięciu New zobaczymy, że wykona nam się takie polecenie Shella:
new-SendConnector -Name 'Default' -Usage 'Custom' -AddressSpaces 'SMTP:*;
1' -IsScopedConnector $false -DNSRoutingEnabled $true -UseExternalDNSServersEnabled $false
-SourceTransportServers 'EXCH2007-1'
Ważne jest, aby send connector miał ustawiony parametr FQDN, którym będzie przedstawiał się innym serwerom pocztowym. Powinniśmy także ustawić logowanie protokołu na Verbose, abyśmy mieli wgląd do logów konektora. Te ustawienia są dostępne we właściwościach konektora na zakładce General.
Rys. 5. New Send Connector z parametrem FQDN.
Polecenie Exchange Management Shell:
Set-SendConnector "Default" -fqdn "exch2007.pl”
ustawia parametr FQDN konektora
Set-SendConnector "Default" -protocollogginglevel "verbose"
Ustawia logowanie zdarzeń do folderu „C:\Program Files\Microsoft\Exchange Server\TransportRoles\Logs\ProtocolLog\SmtpSend”.
Drugą rzeczą, jaką zrobimy, jest włączenie mechanizmów antyspamowych, które standardowo obsługuje serwer Edge. Ponieważ nasz serwer ma za zadanie bezpośrednią obsługę poczty z zewnątrz, powinniśmy takie mechanizmy na nim włączyć. W tym celu wystarczy uruchomić skrypt z lokalizacji „C:\Program Files\Microsoft\Exchange Server\Scripts” (jeżeli wybraliśmy domyślny katalog instalacyjny Exchange)o nazwie „install-AntispamAgents.ps1”.
W Exchange Management Shell wpisujemy:
cd „C:\Program Files\Microsoft\Exchange Server\Scripts”
a następnie
install-AntispamAgents.ps1.
Rys. 6. Exchange Management Shell.
Na koniec restartujemy usługę Transport poleceniami
- Stop-Service MSExchangeTransport
- Start-Service MSExchangeTransport
gdy włączymy na nowo konsolę Exchange, pojawi nam się nowa zakładka w Organization Configuration – Hub Transport o nazwie Anti-Spam.
Rys. 7. Organization Configuration – Hub Transport - Anti-Spam.
Trzecią rzeczą, którą trzeba zrobić, jest umożliwienie komunikacji serwerów z Internetu z naszym serwerem. Domyślnie w instalacji z pojedynczym serwerem takiego dostępu nie ma, gdyż jak wiemy, odbierające konektory nie mają włączonego dostępu anonimowego. Mamy do wyboru dwie możliwości - albo zmodyfikujemy konektor Default, albo utworzymy do tego celu nowy konektor. Najłatwiej oczywiście jest skorzystać z pierwszej metody i zmodyfikować zakładkę Permission groups.
Rys. 8. Permission groups.
Często jako serwer pocztowy brzegowy wykorzystujemy inne rozwiązania, niż Exchange. Wówczas lepiej jest utworzyć dodatkowy Receive connector, który będzie obierał od niego pocztę z włączonym uwierzytelnianiem anonimowym i ograniczeniem dostępu adresów IP tylko z tego serwera brzegowego.
W tym celu tworzymy nowy konektor z szablonu Custom, przypisujemy mu port 25 na oddzielnym adresie IP i ustawiamy, z których adresów IP jest możliwe połączenie. W tym wypadku zakresem byłby jeden adres IP, przypisany do brzegowego serwera SMTP. Po utworzeniu konektora w jego właściwościach na zakładce Network powinniśmy uzyskać taką konfigurację:
Rys.9. Konfiguracja zakładki Network.
W tym przypadku Receive Connector działa na adresie 192.168.151.217 i przyjmuje pocztę jedynie z adresu 192.168.10.10. Jeżeli byśmy spróbowali połączyć się telnetem z innego adresu, to konektor nas rozłączy z komunikatem:
421 4.3.2 Service not available, closing transmission channel
Niestety w Exchange 2007 nie ma możliwości zdefiniowania konektorów, na których mają działać filtry antyspamowe, a na których mają być wyłączone. Tak więc filtry działają albo na wszystkich, albo wcale. Dlatego też nie mamy możliwości, aby ograniczyć działanie internetowego konektora wyłącznie do obsługi obcych domen, tak jak to robiliśmy na Exchange 2003 wykorzystując Sender filtering na danym serwerze SMTP. Możliwe będzie następujące działanie:
Rys. 10. Exchange 2007 - filtry antyspamowe.
Konektor z włączonym dostępem anonimowym zezwala na przesyłanie maili w ramach organizacji, co na pewno nie jest bezpiecznym rozwiązaniem.
Czy można coś z tym fantem zrobić? Można! Exchange 2007 daje nam fantastyczne możliwości kontroli ruchu pocztowego poprzez reguły transportowe. Właśnie taką regułą się posłużymy.
W konsoli Exchange wchodzimy na Organization Configuration – Hub Transport i wybieramy akcję New Transport Rule. W pierwszym okienku podajemy nazwę, np.:
Rys. 11. New Transport Rule.
W następnym oknie wybieramy warunek selekcji When From address contains specific words. Klikamy na podkreśleniu specific words, aby wpisać wszystkie domeny, które obsługuje nasz serwer. Najlepiej, by była to ta sama lista domen, która znajduje się na liście Accepted Domains serwera Exchange. Na tym przykładzie wpisałem domeny exch.local i firma.pl.
Rys. 12. Przykładowy wpis domeny
Klikamy Next i w akcji wybieramy Send bounce message to sender with enhanced status code. Tekst wiadomości jak i status można w tym miejscu zmienić.
Rys. 13. Send bounce message to sender with enhanced status code.
Następnie określamy wyjątki dla tej reguły. Jest to tutaj bardzo ważne, gdyż jeśli byśmy tego nie zrobili, to wszystkie maile wysyłane od użytkowników naszego serwera byłyby odrzucane. Wybieramy wyjątek Except when the message is from users inside or outside the organization. W edycji reguły pozostawiamy wyraz inside. Dzięki temu uwierzytelnione maile z wewnątrz będą akceptowane przez serwer.
Rys. 14. Except when the message is from users inside or outside the organization
Klikamy Next, następnie potwierdzamy kliknięciem New. Warto poznać polecenie, które się wykona:
new-TransportRule -Name 'Reject unauthenticated from inside' -Comments '' -Conditions
'Microsoft.Exchange.MessagingPolicies.Rules.Tasks.FromAddressContainsPredicate' -Actions
'Microsoft.Exchange.MessagingPolicies.Rules.Tasks.RejectMessageAction' -Exceptions
'Microsoft.Exchange.MessagingPolicies.Rules.Tasks.FromScopePredicate' -Enabled $true -Priority '0'
Reguła gotowa, jesteśmy bezpieczni. W konsekwencji maile w obrębie własnej domeny można wysyłać jedynie po uwierzytelnieniu. Możemy ją oczywiście przetestować. Na przykład możemy spróbować poprzez Telnet wysłać nieuwierzytelnionego maila do samego siebie.
Rys. 15. Exchange 2007 - Reguły
Mail zostanie zaakceptowany, ale reguła transportowa każe serwerowi odrzucić tego maila i nie zostanie on dostarczony do adresata. Oczywiście w tym przypadku dostaniemy zwrotkę NDR zamiast maila.
Rys.16. Zwrotka NDR.
Podsumowując, Exchange 2007 w trybie single można skonfigurować do bezpiecznej obsługi poczty wewnętrznej zewnętrznej wraz z wykorzystaniem funkcji antyspamowych.
Jacek Kochan Absolwent Wydziału Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu. Obecnie pracuje w poznańskiej firmie softwarowo-consultingowej DomData. Autor artykułów do poradników dla administratorów wyd. "Wiedza i Praktyka". Wdrożył też m.in. pierwsze środowisko hostingowe, oparte na Exchange 2007, w Polsce. Specjalizuje się w systemach Windows Server, Exchange oraz ISA. Interesuje się też fizyką i kryptografią kwantową. Posiada certyfikaty MCSE+S, MCSE+M. |
Do początku strony |