Progmar Marcin Załęczny

Język:

PSAD - Port Scan Attack Detector - w Ubuntu 15.10

Narzędzie służące do wykrywania skanowania portów oraz pasywnego rozpoznawania atakującego systemu operacyjnego.

Instalacja: sudo apt-get install psad

Uruchomienie usługi: sudo service psad start lub: sudo systemctl start psad

Następnie konfigurujemy iptables i ip6tables. W obu przypadkach polityka domyślna obsługi pakietów powinna być ustawiona na DROP oraz ostatnią regułą w łańcuchach INPUT i FORWARD powinno być zalogowanie pakietu, np. tak: ip6tables -A INPUT -j LOG --log-prefix "[ipt]: INPUT6 DROP: " ip6tables -A FORWARD -j LOG --log-prefix "[ipt]: FORWARD6 DROP: " W powyższych instrukcjach argument --log-prefix z ciągiem tekstowym prefiksu logu jest opcjonalny. U mnie służy on do 'wylądowania' logu w odpowiednim pliku (/var/log/iptables.log zamiast domyślnie w /var/log/kern.log). Jeśli zdecydowaliśmy się na przekierowanie logów do innego pliku niż domyślnego, to powinniśmy jeszcze wskazać go programowi psad edytując plik /etc/psad/psad.conf i ustawiając zmienną IPT_SYSLOG_FILE, np: IPT_SYSLOG_FILE /var/log/iptables.log; Po tej zmianie restartujemy psad-a.
Jeśli nie chcemy sobie zawracać głowy konfiguracją firewalla dla pakietów IPv6, to plik firewalla blokujący cały ruch IPv6 może wyglądać następująco:

#!/bin/bash

ip6tables -F INPUT
ip6tables -F OUTPUT
ip6tables -F FORWARD
ip6tables -X

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT DROP


# #############################################################################################################
# INPUT
# #############################################################################################################
ip6tables -A INPUT -j LOG --log-prefix "[ipt]: INPUT6 DROP: "
# #############################################################################################################
# #############################################################################################################




# #############################################################################################################
# OUTPUT
# #############################################################################################################
ip6tables -A OUTPUT -j LOG --log-prefix "[ipt]: OUTPUT6 DROP: "
# #############################################################################################################
# #############################################################################################################

# #############################################################################################################
# FORWARD
# #############################################################################################################
ip6tables -A FORWARD -j LOG --log-prefix "[ipt]: FORWARD6 DROP: "
# #############################################################################################################
# #############################################################################################################

Następnie odpalamy skrypty konfigurujące firewalla IPv4 i IPv6 i sprawdzamy czy dają nam one poprawnie funkjonującą konfigurację dla psad-a: psad --fw-analyze Jeśli wszystko pójdzie OK, to rezultat powinien być następujący:

[+] Parsing /sbin/iptables INPUT chain rules.
[+] Parsing /sbin/ip6tables INPUT chain rules.
[+] Firewall config looks good.
[+] Completed check of firewall ruleset.
[+] Results in /var/log/psad/fw_check
[+] Exiting.
W przeciwnym razie dostaniemy krótką informację o błędzie oraz maila na konto administratora z bardziej szczegółową informacją na temat błędu w konfiguracji.
Pocztę administartora możemy odczytać np. programem alpine: sudo apt-get install alpine sudo alpine

Sprawdzenie czy psad jest uruchomiony:

sudo bash
kill -0 `cat /var/run/psad/psad.pid`
echo $?
Jeśli na wyjściu powyższego polecenia dostaniemy 0, to znaczy, że psad jest uruchomiony. W przeciwnym razie psad nie jest uruchomiony lub wystąpił jakiś błąd.

Jeśli nie jesteśmy zainteresowani powiadomieniami o skanowaniu po IPv6, to możemy ustawić poniższą zmienną na 'N': ENABLE_IPV6_DETECTION N

Aktualizacja bazy sygnatur psad-a: sudo psad --sig-update

Załadowanie najnowszej bazy sygnatur do uruchomionego już psad-a: sudo psad -H

Wyświetlenie szczegółowych informacji statusowych oraz statystycznych programu psad: sudo psad --Status

Uruchomienie psad-a w trybie analizy wskazanego pliku z logami. Wyświetlane dane są podobne do tych, które otrzymamy z opcją --Status: sudo psad -A -m /path/to/iptables.logs

Zmienne konfiguracyjne w pliku /etc/psad/psad.conf odpowiedzialne za reakcję psad-a na atak:
ENABLE_AUTO_IDS - określa czy psad działa w trybie automatycznej obrony czy nie
AUTO_IDS_DANGER_LEVEL - liczba od 1 do 5 określająca minimalny poziom zagrożenia, od którego włącznie podejmowana jest obronna reakcja psad
AUTO_BLOCK_TIMEOUT - czas na jaki ustawiane są reguły blokujące, jeśli jest ustawiona na 0, to reguły blokujące są ustawiane na cały czas działania psad-a (do jego restartu lub restartu całego komputera)
IPTABLES_BLOCK_METHOD - jeśli jest ustawione na 'Y' i na 'Y' ustawiona jest zmienna ENABLE_AUTO_IDS, to dodaje DROP-ujące reguły iptables

Wypisuje blokujące reguły dodane przez psad-a w odpowiedzi na atak: psad --fw-list

Ręczne dodanie adresu IP do łańcucha reguł blokujących psad: sudo psad --fw-block-ip 10.0.0.10

Ręczne usunięcie adresu IP z łańcucha reguł blokujących psad: sudo psad --fw-rm-block-ip 10.0.0.10

W pliku /etc/psad/auto_dl znajduje się zbiór podnoszący bądź obniżający (lub nawet ignorujący) poziom zagrożenia podanych adresów IP i sieci.

Opróżnienie wszystkich łańcuchów reguł blokujących psad: sudo psad --Flush