sobota, 1 czerwca 2013
Debugowanie serwera NFS
Czy pamiętacie pierwsze wersje NFS-a? Miały sporo błędów, z których najgorszy był taki który w losowym momencie potrafił zawiesić jądro. Wyrobiło to złą opinie o NFS, ale na szczęście te czasy odeszły już do lamusa.
Inny problem przy współdzielonym systemie plików (pomiędzy wiele maszyn) jest taki, że serwer NFS loguje bardzo mało informacji. Nie dowiemy się z niego która maszyna jakie operacje wykonywała.
Poziom logowania zwiększamy np takimi poleceniami:
# echo $(( 0x10 | 0x0400 )) > /proc/sys/sunrpc/nfsd_debug
# echo $(( 0x0008 | 0x0100 )) > /proc/sys/sunrpc/rpc_debug
Wyłączamy:
# echo 0 > /proc/sys/sunrpc/nfsd_debug
# echo 0 > /proc/sys/sunrpc/rpc_debug
Po włączeniu logowania jądro zapisuje komplet informacji (zazwyczaj do /var/log/messages), czyli wszystkie wywołania systemowe (wykonywane poprzez RPC) oraz adresy ip klientów.
Przy takim poziomie logowania, log może oczywiście bardzo szybko przyrastać obciążając dodatkowo maszynę pod względem operacji I/O ;)
niedziela, 26 maja 2013
MikroTik Network Sniffing
Snifowaliście kiedyś połączenia w sieci gdzie role bramki pełni MikroTik? Mi się ostatnio zdarzyło, więc kilka informacji ku pamięci ;]
Sposobów jest kilka, jednak najlepszy i najbardziej godny polecenia jest tylko jeden. W skrócie, chodzi o to, że ruter wysyła pod wskazany adres ip (port 37008) wybrane pakiety, osadzając je w protokole TZSP (TaZmen Sniffer Protocol). Konfiguracja na MikroTik-u wygląda tak:
> tool sniffer set streaming-server=10.1.1.5 streaming-enabled=yes filter-address1=8.8.8.8/32:21-22 filter-address2=10.0.0.0/8:0-65535 interface=all
> tool sniffer start
Czyli chcemy by podsłuchane pakiety były wysyłane do hosta 10.1.1.5 i dodatkowo, interesuje nas ruch wychodzący z podsieci 10.0.0.0/8 do hosta 8.8.8.8 na porty od 21 do 22.
Drobny problem polega na tym, że tcpdump nie obsługuje protokołu TZSP a nie zawsze mamy możliwość odpalenia np Wireshark-a (czyli czegoś okienkowego) w danej podsieci (np. jesteśmy podłączeni via vpn i nie ma możliwości nawiązania do naszej maszyny bezpośrednio połączenia). Mimo wszytko możemy użyć tutaj tcpdump-a by zapisać złapane pakiety do pliku, np:
# tcpdump -i eth0 -U -w /root/packet-dump.pcap 'udp and port 37008'
Następnie kopiujemy plik i otwieramy go w Wireshark-u, który bez problemu czyta protokół TZSP.
Sposobów jest kilka, jednak najlepszy i najbardziej godny polecenia jest tylko jeden. W skrócie, chodzi o to, że ruter wysyła pod wskazany adres ip (port 37008) wybrane pakiety, osadzając je w protokole TZSP (TaZmen Sniffer Protocol). Konfiguracja na MikroTik-u wygląda tak:
> tool sniffer set streaming-server=10.1.1.5 streaming-enabled=yes filter-address1=8.8.8.8/32:21-22 filter-address2=10.0.0.0/8:0-65535 interface=all
> tool sniffer start
Czyli chcemy by podsłuchane pakiety były wysyłane do hosta 10.1.1.5 i dodatkowo, interesuje nas ruch wychodzący z podsieci 10.0.0.0/8 do hosta 8.8.8.8 na porty od 21 do 22.
Drobny problem polega na tym, że tcpdump nie obsługuje protokołu TZSP a nie zawsze mamy możliwość odpalenia np Wireshark-a (czyli czegoś okienkowego) w danej podsieci (np. jesteśmy podłączeni via vpn i nie ma możliwości nawiązania do naszej maszyny bezpośrednio połączenia). Mimo wszytko możemy użyć tutaj tcpdump-a by zapisać złapane pakiety do pliku, np:
# tcpdump -i eth0 -U -w /root/packet-dump.pcap 'udp and port 37008'
Następnie kopiujemy plik i otwieramy go w Wireshark-u, który bez problemu czyta protokół TZSP.
środa, 25 lipca 2012
Apache Basic Auth jakiego nie znacie!
Basic Auth w protokole HTTP jest to najprostszy i zapewne najszerzej wykorzystywany rodzaj autoryzacji. O bezpieczeństwie tego typu autoryzacji możemy mówić dopiero wtedy gdy używamy szyfrowanego https, ale dla nas nie ma to w tym momencie zanczenia :) Basic Auth konfigurujemy w apache bardzo łatwo np:
niedziela, 15 lipca 2012
Bind, sed, hosty i dopełnianie
W ostatnim poście pisałem jak usprawnić dopełnianie nazw hostów w dużym środowisku. Polecałem wtedy polecenie "rndc dumpdb -zones". Jak się jednak okazuje, potrafi ono często zwrócić segmentation fault. Chcąc nie chcąc w takim przypadku trzeba użyć jakiegoś toola który przeleci konfiguracje bind-a. Dla mnie, najprostszym rozwiązaniem było użycie polecania sed:
$ cat bind2hostname.sh
#!/bin/bash
sed -n '
{
:loop
s/\$ORIGIN[ \t]\+\(.*\)\./\1/
T nextcheck
h
n
:nextcheck
s/^\([[:alnum:].-]\+\).*IN.*/\1/
t hostname
n
b loop
:hostname
G
s/\n/./
p
d
n
b loop
}'
Działanie skryptu jest bardzo proste. Wyszukuje wartości dla parametru ORIGIN i dokleja je do znalezionych nazw hostów. Teraz wystarczy dodać do crona polecenie podobne do tego poniżej
$ cat /etc/bind/P/+([a-z.-]) | /home/scripts/bind2hostname.sh > /etc/named_hosts.db
Można jeszcze pokusić się o dopisanie adresów ip i wrzucenie tego wszystkiego do /etc/hosts. Mi jednak tyle wystarczy, a konfiguracja binda nie zawsze jest łatwa do parsowania :)
$ cat bind2hostname.sh
#!/bin/bash
sed -n '
{
:loop
s/\$ORIGIN[ \t]\+\(.*\)\./\1/
T nextcheck
h
n
:nextcheck
s/^\([[:alnum:].-]\+\).*IN.*/\1/
t hostname
n
b loop
:hostname
G
s/\n/./
p
d
n
b loop
}'
Działanie skryptu jest bardzo proste. Wyszukuje wartości dla parametru ORIGIN i dokleja je do znalezionych nazw hostów. Teraz wystarczy dodać do crona polecenie podobne do tego poniżej
$ cat /etc/bind/P/+([a-z.-]) | /home/scripts/bind2hostname.sh > /etc/named_hosts.db
Można jeszcze pokusić się o dopisanie adresów ip i wrzucenie tego wszystkiego do /etc/hosts. Mi jednak tyle wystarczy, a konfiguracja binda nie zawsze jest łatwa do parsowania :)
Subskrybuj:
Posty (Atom)
-
Poniżej kilka mniej lub bardziej przydatnych informacji odnośnie konfiguracji Armbian 22 (bullseye) na OrangePI Zero. Instalacja sama w...
-
Każdy administrator Linuxa, prędzej czy później zobaczy w logach błąd mówiący o tym, że system Linuks wyczerpał całą dostępną pamięć. Nie...
-
Kolejny wpis po dłuższej przerwie ;) Tym razem przyszła pora na odświeżenie mojego małego kontrolera dla drukarek 3d, na którym do tej p...