Pokazywanie postów oznaczonych etykietą tips and tricks. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą tips and tricks. Pokaż wszystkie posty

poniedziałek, 6 sierpnia 2007

tips & tricks: ram disc w OpenWRT

Instalując coraz to nowe aplikacje na naszej maszynie wcześniej czy później dochodzi do momentu w którym brakuje nam miejsca. Można pokusić się o SD/MMC mod'a ... można też skorzystać z ram disc'u tworzonego podczas startu systemu :D
Jak z niego korzystać? Bajecznie prosta sprawa! Wystarczy edytować plik /etc/profile i dodać do niego dwie poniższe linijki:

export PATH=$PATH:/tmp/bin:/tmp/sbin:/tmp/usr/bin:/tmp/usr/sbin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/lib:/tmp/usr/lib

a następnie zrestartować urządzenie lub wykonać:
. /etc/profile

i to już koniec konfiguracji!
W tym momencie załóżmy że mamy chwilową potrzebę skorzystania z tcpdump'a:
ipkg -d ram install tcpdump

zainstalowane w ten sposób oprogramowanie nie przeżyje restartu .. ale o to nam w tym momencie chodziło!
Jeśli chcemy aby tcpdump na stałe zagościł na nowej partycji musimy dorobić tylko skrypt startowy który za każdym razem po starcie będzie pobierał i instalował tcpdump'a .. wykonujemy kolejno:
cat > /etc/init.d/S90local
#!/bin/sh
ipkg update
ipkg -d ram install tcpdump
Ctrl + D
chmod +x /etc/init.d/S90local

piątek, 3 sierpnia 2007

WRT54G SC/MMC hack/mod

Tunning wykonałem krok po kroku za instrukcją umieszczoną w WRT54G Ultimate Hacking. I niby wszystko było ok .. system widział kartę .. dało się na niej coś zapisać .. jednak podczas instalowania na niej dodatkowych paczek z oprogramowanie router wieszał się po chwili. A to wszystko za sprawą złej kolejności ustawiania maski GPIO oraz ładowania modułu mmc.o.
Prawidłowa kolejność to najpierw maska, potem moduł. Mój skrypt startowy wygląda tak:

root@OpenWrt:# cat /etc/init.d/S20mmc
#!/bin/sh
echo "0x7e" > /proc/diag/gpiomask
insmod mmc gpio_sd_di_pin=2
mount /mnt/mmc

0x7e zamiast 0x9c które można znaleźć w innych HowTo ponieważ mod wykonałem na modelu WRT54GL v1.0 gdzie nie ma (nie znaleziono) miejsca z którego by można wyciągnąć GPIO 5, dlatego też zamiast niego użyłem GPIO 2, a następnie poinformowałem o tym moduł mmc.o przez podanie parametru gpio_sd_di_pin=2. Moduł do systemu plików ładuje za pomocą /etc/modules.d.

Kolejna sprawa która wyskoczyła w tak zwanym miedzy czasie to problem z zainstalowaniem tcpdump'a na zewnętrznej karcie. Wszystko za sprawą systemu plików FAT który uniemożliwia tworzenie symlinków, a takowe chce tworzyć niezbędna do uruchomienia tcpdump'a paczka zbiblioteką pcap. Problem można obejść tworzą kopie odpowiednich plików i nadając im odpowiednie nazwy, ale tracimy przez to niepotrzebnie miejsce.
Wyjście? Formatujemy kartę na ext2. W tym celu musimy zainstalować paczkę e2fsprogs którą znajdziemy w backportach dla wersji RC6 whiterussian. Następnie wykonać komendę:
mkfs.ext2 /dev/mmc/disc0/part1

zainstalować moduł kmod-ext2
ipkg install kmod-ext2

spowodować aby ładował się on przy każdym starcie
echo 'ext2' > /etc/modules.d/30-ext2

zmodyfikować plik /etc/fstab
echo '/dev/mmc/disc0/part1 /mnt/mmc ext2 defaults 0 0' > /etc/fstab

reboot i już :)

czwartek, 19 kwietnia 2007

tips & tricks: RouterBOARD a temperatura

W sumie już po sezonie zimowym ale przed nami gorące lato (mam taką nadzieje) dlatego też jeśli obawiamy się o nasze płyty RouterBOARD'a powinniśmy zainteresować się trybem pracy procesora. Aby sprawdzić tryb pracy musimy mieć zainstalowaną i uruchomioną paczkę routerboard.

[admin@MikroTik] > system package print
Flags: X - disabled
# NAME VERSION
0 system 2.9.41
1 wireless 2.9.41
2 routerboard 2.9.41
3 X wireless-legacy 2.9.41
4 X rstp-bridge-test 2.9.41
5 ntp 2.9.41
6 hotspot 2.9.41
7 webproxy-test 2.9.41
8 dhcp 2.9.41
9 routeros-rb500 2.9.41
10 X routing-test 2.9.41
11 routing 2.9.41
12 ppp 2.9.41
13 security 2.9.41
14 advanced-tools 2.9.41

Następnie zaglądamy do:
[admin@MikroTik] > system routerboard settings print
baud-rate: 115200
boot-delay: 1s
boot-device: nand-if-fail-then-ethernet
enter-setup-on: any-key
cpu-mode: power-save
memory-test: no
cpu-frequency: 264MHz
safe-cpu-frequency: 264MHz
boot-protocol: bootp
enable-jumper-reset: yes

Jeśli chodzi o temperaturę to z tego menu zainteresują nas napewno dwie opcje: cpu-mode oraz cpu-frequency. Domyślnym trybem pracy procesora (cpu-mode) jest tryb oszczędzania energii (power-save) który skutkuje utrzymaniem niższej temperatury pracy urzadzenia. Tryb ten dobrze sprawdzi się w lecie. Na zimę jednak proponował bym zmianę trybu pracy na regular który spowoduje zwiększenie temperatury pracy systemu.
Podobnie ma się sprawa z częstotliwością pracy procesora (cpu-frequency). Im większa częstotliwość tym większa temteratura pracy, jednak nie polecam znacznie przekraczać bezpiecznych wartości (safe-cpu-frequency).

wtorek, 13 marca 2007

tips & tricks: overall-tx-ccq / current-ack-timeout / current-distance

Jak się okazuje, ilość informacji wyświetlanych za pomocą

interface wireless monitor wlan1

zależy od ustawionego na danym interfejscie mac-address'u.
Dla przykładu gdy na karcie z Atheros AR5413 "zasymulujemy" kartę Planet przez zmianę mac-address'u na naprzykład 00:30:4F:31:F5:E9 w raporcie wyświetlonym przez powyższą komendę będzie brakować parametrów overall-tx-ccq, current-ack-timeout, current-distance:
               status: running-ap
band: 2.4ghz-b
frequency: 2472MHz
noise-floor: -96dBm
registered-clients: 2
authenticated-clients: 2
nstreme: no
current-tx-powers: 1Mbps:19,2Mbps:19,5.5Mbps:19,11Mbps:19
notify-external-fdb: no

gdy tylko przywrócimy stary mac-address otrzymamy:
               status: running-ap
band: 2.4ghz-b
frequency: 2472MHz
noise-floor: -96dBm
overall-tx-ccq: 92%
registered-clients: 3
authenticated-clients: 3
current-ack-timeout: 39
current-distance: 39
nstreme: no
current-tx-powers: 1Mbps:19,2Mbps:19,5.5Mbps:19,11Mbps:19
notify-external-fdb: no

sobota, 3 marca 2007

tips & tricks: port knocking

Podczas "co sobotnich" porządków wpadł mi do głowy pomysł jak za pomocą address-list zaimplementować w MikroTik RouterOS metodę zabezpieczającą uruchomione na nim usługi zwaną port knocking'iem.

"Port-knocking" jest metodą pozwalającą na nawiązanie zdalnego połączenia z usługami działającymi na komputerze, do którego dostęp został ograniczony np. za pomocą filtra pakietów, umożliwiającą odróżniania prób połączeń, które powinny i nie powinny być zrealizowane.

Można uznać, że z punktu widzenia chcącego się połączyć klienta, na komputerze tym nie ma otwartych portów. System, z którego ma nastąpić połączenie, wysyła serię pakietów na zamknięte porty maszyny docelowej. Pakiety te są oczywiście ignorowane, ale odpowiednie oprogramowanie śledzi przychodzące pakiety i jeśli pakiety z danego adresu IP układają się w zdefiniowaną dla pewnej usługi sekwencję, wówczas system zezwala na połączenia z nią z tego adresu IP.

źródło: pl.wikipedia.org

Wyobraźmy sobie scenariusz w którym powinniśmy uzyskać dostęp do SSH działającego na danej maszynie pod warunkiem wysłania do niej wcześniej określonej sekwencji pakietów, na przykład: 100/tcp, 50/udp, 72/udp.

ip firewall filter [ent]
add chain=input protocol=tcp dst-port=100 action=add-src-to-address-list address-list=stage-1 address-list-timeout=5 [ent]
add chain=input protocol=udp dst-port=50 src-address-list=stage-1 action=add-src-to-address-list address-list=stage-2 address-list-timeout=5 [ent]
add chain=input protocol=udp dst-port=72 src-address-list=stage-2 action=add-src-to-address-list address-list=stage-3 address-list-timeout=5 [ent]
add chain=input protocol=tcp dst-port=22 src-address-list=stage-3 action=accept [ent]

Powyższa konfiguracja zakłada że kolejne pakiety z sekwencji będą pojawiać się nie później niż w 5 sekundowych odstępach.

piątek, 2 marca 2007

tips & tricks: dst-port 25

W tym post'cie przedstawię jak skutecznie walczyć z wirusami z własnym silnikiem umożliwiającym im rozsyłanie się za pomocą poczty elektronicznej. Skutecznie .. to znaczy pozbywając się ruchu przez nie generowanego i przy okazji informując klienta o fakcie zainfekowania jego maszyny.

W iptables z modułem recent wystarczy 4 reguły a nawet 2 (bez jump'a do osobnego łańcucha):

iptables -N tcp_dport25 [ent]
iptables -A FORWARD -p tcp --dport 25 -m state --state NEW -j tcp_dport25 [ent]
iptables -A tcp_dport25 -m recent --update --seconds 10 --name smtp -j DROP [ent]
iptables -A tcp_dport25 -m recent --set --name smtp -j ACCEPT [ent]

Co robią powyższe regułki? Pierwsza tworzy nowy łańcuch o nazwie tcp_dport25. Kolejna wysyła do niego ruch wędrujący przez łańcuch FORWARD z portem docelowym 25/tcp oraz stanem połączenia NEW. Następna sprawdza w tabeli smtp czy z danego źródłowego adresu IP, w ciągu ostatnich 10 sekund, była już próba nawiązania połączenia z docelowym portem 25. Jeśli tak, to uaktualnia czas żywotności wpisu informującego o tym fakcie na 10 sekund, oraz DROP'uje próbę nawiązania połączenia. Ostatnia reguła dokonuje wpisu w tabeli smtp świadczącego o tym że z danego IP zanotowano próbę połączenia z zdalnym portem 25, oraz ACCEPT'uje to połączenie.
W tym momencie klient jest w stanie wysłać jednego maila co 10 sekund pod warunkiem że w ciągu tych 10 sekund nie próbował ponownie łączyć się do portu 25. W tym momencie wirusowi, który średnio rozsyła się z częstotliwością kilku prób na sekundę, uda się tylko jedna próba wyjścia na świat z portem docelowym 25. Wszystkie kolejne będą skutecznie blokowane.

A jak powyższy scenariusz zaimplementować w MikroTik'u?

ip firewall filter [ent]
add chain=forward protocol=tcp dst-port=25 connection-state=new action=tcp_dport25 [ent]
add chain=tcp_dport25 src-address-list=smtp address-list=smtp address-list-timeout=10s action=add-src-to-address-list [ent]
add chain=tcp_dport25 src-address-list=smtp action=drop [ent]
add chain=tcp_dport25 action=add-src-to-address-list address-list=smtp address-list-timeout=10s [ent]
add chain=tcp_dport25 action=accept [ent]

Najpierw przechodzimy do konfiguracji tabeli filter firewall'a. Następnie do automatycznie tworzonego łańcucha tcp_dport25 przekierowujemy pakiety rozpoczynające (NEW) połączenie z docelowym portem 25. W kolejnej regule sprawdzamy czy z danego IP były już próby nawiązania połączenia na port 25. Jeśli tak to uaktualniamy wpis. Następnie jeśli nadający host znajduje się już na liście DROP'ujemy połączenie. Jeśli natomiast się na niej nie znajduje dodajemy go do listy na 10 sekund. Ostatnia reguła zezwala na połączenie.

Dodając jeszcze jedną regułę można doprowadzić do tego, że z danego IP można będzie przeglądać strony www pod warunkiem czystego komputera.

ip firewall nat [ent]
add chain=dstnat src-address-list=smtp action=dst-nat to-address=[IP serwera www z stroną informacyjną] to-ports=[port na którym nasłuchuje serwer] [ent]