Kompilacja kernela + iptables + string patch
KERNEL – jądro monolityczne często stosowane w systemach typu Unix. Wszystkie zadania są wykonywane przez jądro, będące jednym, dużym programem działającym w trybie jądra. Przykładami takiego jądra mogą być: Linux, OpenBSD, FreeBSD, chociaż większość posiada umiejętność dołączania i odłączania modułów (najczęściej zawierających kod sterownika urządzenia lub obsługi potrzebnego w danej chwili systemu plików).
Zaletą tej techniki jest prostota, stabilność, łatwość komunikacji pomiędzy różnymi członami jądra (to przecież w tym wypadku jeden program!). Wadą jest, w późniejszym stadium rozwoju projektu, uciążliwość w rozwijaniu programu oraz w znajdywaniu błędów.
- Ściągamy do katalogu /usr/src/:
- Źródła najnowszego kernela np.: linux-2.4.26.tar.gz
- patch-o-matic-ng-20040302.tar.bz2
- iptables-1.2.9.tar.bz2 - Rozpakowujemy wszystko:
- # tar zxvf linux-2.4.26.tar.gz
- # bzcat patch-o-matic-ng-20040302.tar.bz2 | tar xvf -
- # bzcat iptables-1.2.9.tar.bz2 | tar xvf - - Tworzymy dowiązania symboliczne:
- # ln -s /usr/src/linux-2.4.26 /usr/src/linux
- # ln -s /usr/src/iptables-1.2.9 /usr/src/iptables - Przechodzimy do patch-o-matic
- # cd /usr/src/patch-o-matic-ng-20040302 - Wydajemy polecenie # ./runme extra
- na pytanie o ścieżki do iptables i kernela naciskamy enter
- naciskamy cały czas n (chyba że chcemy jeszcze coś doinstalować), a gdy pojawi się pytanie o string wybieramy y
- na koniec powinno się ukazac: Excellent! Source trees are ready for compilation. - Wydajeny polecenia
- # cd ..
- # cd linux
- # make menuconfig - Teraz nadszedł czas na konfigurację kernela, musi być zaznaczona opcja:
- Code maturity level options —> [*] Prompt for development and/or incomplete code/drivers
bo bez tego nie pojawi się nam string. - Zaznaczamy:
- Networking options —> [*] Network packet filtering (replaces ipchains)
- Networking options —> IP: Netfilter Configuration —> <*> String match support (EXPERIMENTAL) (NEW)dodatkowo dobrze jest zaznaczyć:
- Network Options –> QoS and/or fair queueing
[*] CBQ packet scheduler (NEW)
[*] HTB packet scheduler (NEW)
[*] QoS support (NEW) - Kompilacja kernela:
- # make clean dep bzImage modules
- # make modules_install - Instalacja kernela:
- # cp /usr/src/linux/System.map /boot/System.map-2.4.26
- # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26 - Kompilacja i instalacja iptables
- # cd ..
- # cd iptables
- # make KERNEL_DIR=/usr/src/linux/ PREFIX=/usr/local/iptables
- # make install
- # make install-devel - Blokowanie Kazzy za pomoca opcji string, do firewalla dopisujemy:
- iptables -A FORWARD -m string –string ‘KaZaA’ -j DROP
- iptables -A FORWARD -m string –string ‘X-Kazaa’ -j DROP - Coś nie działa ?
- w /lib/modules/2.4.26/kernel/net/ipv4/netfilter powinien sie znajdować plik ipt_string.o
- w katalogu z bibliotekami iptables: /usr/local/iptables/lib/iptables powiniem być plik libipt_string.so
- jesli nie ma tych plikow można jeszcze poszukać ich w /usr/src/iptables i skopiować ręcznie.