Jak skonfigurować adaptacyjną zaporę

4

Śledziłem ten link: Włącz adaptacyjną zaporę w systemie MacOS Server

i otrzymuję to wyjście, ale nie wiem, czy rzeczywiście aktywowałem adaptacyjną zaporę:

No ALTQ support in kernel
ALTQ related functions disabled
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled
Token : 13540967312582709951
No ALTQ support in kernel
ALTQ related functions disabled

Chcę, aby adaptacyjna zapora ogniowa automatycznie dodawała użytkowników z kilkoma nieudanymi próbami logowania.

Pomyślnie dodałem pewien adres IP do czarnej listy zapory, ale nie mogłem go zobaczyć w hb_summary, nie wiem, czy ma tam być pokazany ręcznie dodany adres IP. I nie dodawał się automatycznie, gdy podobno go włączałem.

W moim porcie IMAP wystąpił brutalny atak, a moja adaptacyjna zapora nie dodawała tego IP na czarnej liście. Tylko postfix radził sobie z tym robiąc fatalny błąd z powodu zbyt wielu błędów i program zakończył działanie, ale był to tylko bardzo krótki okres czasu.

Specyfikacje serwera:

  • Server.app 3.2.2
  • Mac OS X 10.9.5
SipriusPT
źródło

Odpowiedzi:

3

Po nurkowaniu w Adaptive Firewall jeszcze raz Odniosłem wrażenie, że cały system jest wadliwy, a dokumentacja jest bałaganem.

Komenda .../hb_summary najwyraźniej w ogóle nie działa, ponieważ wydaje się, że plik / private / var / db / af / blockedHosts jest wypełniany przez ipfw który nie jest aktywowany w 10.9 (i nie działałby z kotwicą 400.AdaptiveFirewall). pf nie używa zablokowanego plikuHosts w ogóle.

Najlepsze, co możesz zrobić, to:

  • Włącz usługę Adaptive Firewall

    sudo /Applications/Server.app/Contents/ServerRoot/usr/sbin/serverctl enable service=com.apple.afctl
    
  • Wypełnij białą listę za pomocą

    sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -c
    
  • Zdefiniuj maksymalne złe próby autoryzacji (np. 3) i czas zakazu (np. 60 minut)

    sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -T 3
    sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -H 60
    

    Spowoduje to modyfikację pliku / Applications /Server.app/Contents/ServerRoot/private/etc/emond.d/rules/AdaptiveFirewall.plist.

    Sprawdź mod za pomocą:

    sudo grep -m 2 -A 4 hostBlockThreshold /Applications/Server.app/Contents/ServerRoot/private/etc/emond.d/rules/AdaptiveFirewall.plist
    
  • Uruchom ponownie emond: sudo killall emond
  • Dodaj znane złe hosty przez długi czas:

    sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -a 104.16.35.178 -t 1000000
    

    (Pamiętaj o y2038 problem ). Spowoduje to modyfikację pliku / private / var / db / af / blacklist. Hosty dodane tutaj zazwyczaj nie przeżywają ponownego uruchomienia.

  • Zacznij af z sudo /Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl -f
  • Aby uzyskać zablokowane hosty, wprowadź:

    sudo pfctl -a com.apple/400.AdaptiveFirewall -t blockedHosts -T show -vvv
    

    Aby wejść w stan pf sudo pfctl -s all.

Jest to testowane z wrogością ssh i openssl s_client -connect imapserver_ip:993 próby logowania.


Po ponownym uruchomieniu .../afctl -f komenda uruchomi pf i af, ale w co najmniej jednym z dwóch przypadków nie blokuje wrogich prób logowania, chociaż jest to ogłaszane w pliku dziennika.


Ulepszenia:

Po modyfikacji kluczy debugLevel i logEvents w pliku /etc/emond.d/emond.plist ::

    ...
    <key>debugLevel</key>
    <integer>3</integer>
    ...
    <key>logEvents</key>
    <true/>
    ...

utworzenie pliku /System/Library/LaunchDaemons/com.apple.afctl_boot.plist z treścią:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>com.apple.afctl_boot</string>
    <key>Program</key>
    <string>/Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Server.app/Contents/ServerRoot/usr/libexec/afctl</string>
        <string>-f</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

i ładowanie go:

sudo launchctl load /System/Library/LaunchDaemons/com.apple.afctl_boot.plist

wydaje się działać bardziej niezawodnie. Adaptive Firewall zostanie załadowany podczas rozruchu. Nie jest wymagane dalsze polecenie uruchomienia afctl!

klanomath
źródło
Przede wszystkim bardzo dziękuję za niesamowity samouczek! W rzeczy samej, wszystkie dane opublikowane przez Apple na temat konfigurowania tej zapory w poprzednich wersjach macosx.
SipriusPT
Wykonałem kilka testów i odkryłem, że mój serwer nie zezwalał na więcej niż 6 prób zalogowania się domyślnie przy użyciu tej samej nazwy użytkownika, ale nie był w stanie automatycznie dodać złego adresu IP na czarnej liście. Po tym, jak zrobiłem samouczek do części „ulepszającej”, zauważam, że teraz z hostBlockThreshold 12 i hostMinBlockTime 60 działa dobrze (zrobiłem ten test co najmniej 2 razy i oba działają dobrze).
SipriusPT
Zrobię część ulepszającą, aby uniknąć konieczności wykonania polecenia afctl -f za każdym razem, gdy ponownie uruchomię system. P.S. Zmienię tytuł tego pytania, aby było bardziej intuicyjne dla innych osób, które mogą napotkać ten problem.
SipriusPT
Po prostu chcę wiedzieć, że w moim systemie miałem LaunchDaemons zamiast twojego LaunchDaemon. Jak mogę uzyskać dostęp do emond logevents? (Zmieniłem już emond.plist tak jak dokonałeś ulepszeń)
SipriusPT
@SipriusPT LaunchDaemon został błędnie napisany i poprawiłem go!
klanomath