Polska Strona Freesco

Arpalert

Bezpieczeństwo sieci staje się dziś coraz ważniejszym zagadnieniem, szczególnie wtedy, gdy mamy do czynienia z sieciami radiowymi. W dużych profesjonalnych sieciach używa się skomplikowanych nieraz, ale skutecznych rozwiązań. NND jest przeznaczone dla małych sieci, często działa na niezbyt wydajnych komputerach, jak zatem zabezpieczać sieć, przy użyciu małych ale także skutecznych narzędzi? Jednym z nich jest program arpalert.

Najpierw należy zainstalować odpowiedni pakiet.
Pobieramy go stąd.
Pakiet ma swoje pliki konfiguracyjne w /etc/arpalert i musimy zacząć od edycji pliku arpalert.conf i dokonac w nim kilku zmian. Po pierwsze znajdujemy linię z wpisem user = arpalert, mamy do wyboru – utworzyć użytkownika arpalert i zgodnie z plikiem konfiguracyjnym ten użytkownik będzie uruchamiał program, utworzyć i wpisac innnego użytkownika lub wpisac użytkownika root, co może być pożyteczne, gdy będziemy chcieli uruchamiać jakieś skrypty wymagające przywilejów roota.
Następnie znajdujemy linię #interface = eth0 i odkomentowujemy ją (usuwamy #) oraz wpisujemy własny interfejs, na którym nasłuchiwac będzie program.
W zasadzie to już wystarczy, aby uruchomić program. Jednak arpalert ma służyć jako pies łańcuchowy, który będzie strzegł naszej sieci, przed niepowołanymi komputerami, które będą chciały skorzystac z naszej sieci. Zatem musimy wykonać jeszcze kilka czynności, które pozwolą arpalertowi szczekać a nawet gryźć.
W przypadku sieci LAN, do której nie jest tak łatwo się pdpiąć, wystarczy jeśli zastosujemy dodatkowy skrypt, który będzie np. wysyłał mail lub sms do administratora w przyapdku nowego MAC lub zmiany IP. W przypadku sieci WLAN warto rozważyć uruchomienie skryptu, który w takim wypadku podejmie automatyczne działania.
Szczególnie w wypadku WLAN zapewne działa DHCP przyznający stałe numery IP powiązane z MAC karty, a nawet wyłączony DHCP i numery IP ustawiane na stałe w kazdym kliencie (bezpieczniej), a do tego arp wiązący IP z MAC komputera. Musimy wypełnic plik konfiguracyjny maclist.allow, który jest „białą listą” programu.
Wpisujemy tam wszystkie komputery w naszej sieci według schematu: „00:07:95:50:97:c0 192.168.1.5 eth0”.
Od tego momentu arpalert będzie zauważał wszystkie nowe i nieautoryzowane „białą listą” adresy MAC. Początkowe doświadczenia wskazują też, że należy utworzyć plik konfiguracyjny authrq.conf z wpisami „[00:07:95:50:97:c0 eth0] 192.168.1.0/24” dla każdego komputera, który może miec dostęp do sieci.
Po pierwszym uruchomieniu program zapisze plik /var/lib/arpalert/arpalert.leases (chyba warto pamiętać o okresowym czyszczeniu tego pliku). Program można uruchamiac z różnymi opcjami, które pokaże help:
[root@router lib]# arpalert -h

arpalert [-f config_file] [-i network_interface]
[-p pid_file] [-e exec_script] [-D log_level]
[-l leases_file] [-d] [-f] [-v] [-h] [-w]
[-P][-V]

-f conf_file: configuration file
-i devices: comma separated list of interfaces
-p pid_file: file with pid of daemon
-e script: script executed whith alerts
-D loglevel: loglevel (0 to 7)
-l leases: file to store mac addresses
-d: run as daemon
-F: run in foreground
-v: dump config
-h: this help
-w: debug option: print a dump of paquets captured
(loglevel 7)
-P: run in promiscuous mode
-V: version
Na swój użytek do testów stworzyłem skrypt arpalert.sh z następująca zawartością:
#!/bin/bash
NOWYMAC=`awk /mac/'{ print $6 }’ /var/log/arpalert.log |cut -c 5-21`
iptables -I FORWARD -m mac –mac $NOWYMAC -j REJECT
echo „nowy zapis
” >/var/log/arpalert.log

Program uruchomiłem z opcjami arpalert -e /usr/local/sbin/arpalert.sh -d – arpalert uruchomił się jako demon i po podłączeniu do sieci nowego komputera wykonał regułę iptables, która nowemu komputerowi zablokowała dostęp do internetu, dodanie jeszcze reguły z INPUT odetnie go całkowicie. Oczywiście przydałoby się, aby za stworzenie regułek wziął się jakis fachowiec i napisał taką, która zablokuje dostęp do sieci ponad wszelką wątpliwość. Czas reakcji programu zwykle nie przekracza kilku sekund, więc mało prawdopodobne, że włamywacz zdąży cokolwiek zrobić zanim zostanie zablokowany.
Uwagi końcowe.
Ten opis został przygotowany na bieżąco, bez szczegółowej analizy i długich doświadczeń, zatem może się zdarzyć, że ulegnie zmianom w przyszłości, najprawdopodobniej program ma sporo innych możliwości, których jeszcze nie odkryłem, niestety dokumentacja jest dość uboga. Liczę na współpracę innych użytkowników NND.
Poniżej jeszcze podaję zawartość pliki arpalert.conf, aby ułatwić chętnym porównanie. Plik jest bardzo rozbudowany, stąd moje przypuszczenie, że program ma jeszcze wiele niewykorzystanych możliwości.

# white list
maclist file = „/etc/arpalert/maclist.allow”

# black list
maclist alert file = „/etc/arpalert/maclist.deny”

# dump file
maclist leases file = „/var/lib/arpalert/arpalert.leases”

# list of authorized request
auth request file = /etc/arpalert/authrq.conf

# log file
log file = „/var/log/arpalert.log”

# pid file
lock file = „/var/run/arpalert.pid”

# log level
use syslog = true

# log level
log level = 6

# user for privilege separation
user = root

# rights for file creation
umask = 177

# only for debugging: this dump paquet received on standard outpu
dump paquet = false

# run the program as daemon ?
daemon = false

# minimun time to wait between two leases dump
dump inter = 5

#Configure the network for catch only arp request.
#The detection type „new_mac” is desactived.
#This mode is used for CPU saving if Arpalert is running on a router
catch only arp = true

# comma separated interfaces to lesson
# if not precised, the soft select the first interface.
# by default select the first interface encontered
interface = eth0

# script launched on each detection
# parameters are: „mac adress of requestor” „ip of requestor” „supp. parm.” „type of alert”
# type of alert:
# 0: ip change
# 1: mac address only detected but not in whithe list
# 2: mac address in black list
# 3: new mac address
# 4: unauthorized arp request
# 5: abusive number of arp request detected
# 6: ethernet mac address different from arp mac address
# 6: ethernet mac address different from arp mac address
# 7: global flood detection
# 8: new mac adress without ip
# 9: mac change
action on detect = „type of alert”

# module launched on each detection
mod on detect = „”
# this chain is transfered to the init function of module loaded
mod config = „”

# script execution timeout (seconds)
execution timeout = 5

# maximun simultaneous lanched script
max alert = 20

# what data are dumped in leases file
dump black list = false
dump white list = true
dump new address = true

# after this time a mac adress is removed from memory (seconds) (default 1 month)
mac timeout = 259200

# after this limit the memory hash is cleaned (protect to arp flood)
max entry = 1000000

# this permit to send only one mismatch alert in this time (in seconds)
anti flood interval = 5
# if the number of arp request in seconds exceed this value, all alerts are ignored for
# „anti flood interval” time
anti flood global = 50

# vendor name
mac vendor file = „/etc/arpalert/oui.txt”
log mac vendor = true
alert mac vendor = true
mod mac vendor = true

# log if the adress is referenced in hash but is not in white list
log referenced address = false
alert on referenced address = false
mod on referenced address = false

# log if the mac adress is in black list
log deny address = true
alert on deny address = true
mod on deny address = true

# log if the adress isn’t referenced
log new address = true
alert on new address = true
mod on new address = true

# log if the adress isn’t referenced (for mac adress only)
log new mac address = true
alert on new mac address = true
mod on new mac address = true

# log if the ip adress id different from the last arp request with the same mac adress
log ip change = true
alert on ip change = true
mod on ip change = true

# log if the ip adress id different from the last arp request with the same mac adress
log mac change = true
alert on mac change = true
mod on mac change = true

# unauthorized arp request:
# log all the request not authorized in auth file
log unauth request = false
alert on unauth request = false
mod on unauth request = false
# dont analyse arp request for unknow hosts (not in white list)
ignore unknown sender = false
# ignore arp request with mac adresse of the lessoned interfaces for the authorizations checks
ignore me = true
# ignore windows self test
ignore self test = false
# suspend time method:
# 1: ignore all unauth alerts during „anti flood interval” time
# 2: ignore only tuple (mac address, ip address) during „anti flood interval” time
unauth ignore time method = 2

# log if the number of request per seconds are > „max request”
log request abus = true
alert on request abus = true
mod on request abus = true
# maximun request authorized by second
Max request = 1000000

# log if the ethernet mac address are different than the arp amc address (only for requestor)
log mac error = true
alert on mac error = true
mod on mac error = true

# log if have too many arp request per seconds
log flood = true
alert on flood = true
mod on flood = true


Dodaj komentarz