Jest to ciąg dalszy z sąsiedniej
strony,
która wyjaśniała technikę wykonania udostępniania Internetu dla
domowej sieci na Mandrake 8.1. Teraz czas na prezentację bardziej
rozbudowanej wersji pliku
/etc/rc.d/rc.firewall.inet_sharin-2.2 . Przypominam, że na
Kernelu 2.2.x firewall pracuje na
ipchains, a na Kernelu
2.4.x oraz 2.6.x na iptables. Tutaj zajmujemy się ipchains.
Tekst w kolorze czarnym poprzedzony znakiem hasz (#) możesz
skasować - jest to oczywiście komentarz. Uwaga: jeżeli pracujesz na monitorze o rozdzielczości
poniżej 800-600 (czyli np. 640-480) to niniejsza stronka www
wyświetli się nieprawidłowo (zbyt długie wpisy w niektórych
wierszach zostaną zrzucone na dół, co w oryginalnym pliku
konfiguracyjnym jest wykluczone).
#!/bin/sh
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_quake
26000,27000,27910,27960
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_vdolive
echo 1 >
/proc/sys/net/ipv4/ip_forward
echo 1 >
/proc/sys/net/ipv4/icmp_echo_ignore_all
/sbin/ipchains -M -S 7200 10 160
/sbin/ipchains -P forward DENY
#Zwróć uwagę, że Internet w twojej sieci będzie
docierał wyłącznie do
#wybranych komputerów czyli 192.168.0.1,
192.168.0.2 Nie dociera do np. 192.168.0.3
/sbin/ipchains -A forward -s
192.168.0.1/255.255.255.255 -d 0/0 -j
MASQ
/sbin/ipchains -A forward -s
192.168.0.2/255.255.255.255 -d 0/0 -j
MASQ
/sbin/ipchains -A input -i eth0 -j
ACCEPT
#
#Powyższy zapis potraktuj jako standard. Nie
zmieniaj więc nic.
#Pamiętaj jednak, że masz teraz aktywną opcją
niereagowania
#na ping (icmp_echo_ignore_all) oraz
pozwolileś na maskowanie
#plikow ftp, irca, realaudio, gre Quake (co nie
szkodzi nikomu).
#
###################################################
# BLOKOWANIE PRECYZYJNE #
###################################################
#
#blokowanie na serwerze wybranego portu 23
(telnet) wobec wszystkich
/sbin/ipchains -I input -p tcp -s 0/0 1024:65535
-d 0/0 23 -j REJECT
/sbin/ipchains -I output -p tcp -s 0/0
1024:65535 -d 0/0 23 -j REJECT
#oraz odblokowanie portu 23 dla klienta
wewnetrznego 192.168.0.253
#wobec nas, czyli serwera wewnetrznego
192.168.0.1 , co ma sens przy zachowaniu powyższej
reguły
/sbin/ipchains -I input -p tcp -s 192.168.0.1 -d
192.168.0.253 23 -j ACCEPT
/sbin/ipchains -I output -p tcp -s 192.168.0.1
-d 192.168.0.253 23 -j ACCEPT
#
###################################################
#
#BLOKOWANIE na serwerze wybranego portu 22
(ssh) wobec wszystkich
/sbin/ipchains -I input -p tcp -s 0/0 1024:65535
-d 0/0 22 -j REJECT
/sbin/ipchains -I output -p tcp -s 0/0
1024:65535 -d 0/0 22 -j REJECT
#oraz odblokowanie portu 22 dla klienta
zewnetrznego 180.149.145.166
#wobec nas, czyli serwera 218.179.171.100 , co
ma sens przy zachowaniu powyższej reguły
/sbin/ipchains -I input -p tcp -s
218.179.171.100 -d 180.149.145.166 -j ACCEPT
/sbin/ipchains -I output -p tcp -s
218.179.171.100 -d 180.149.145.166 -j ACCEPT
#oraz odblokowanie portu 22 dla klienta
wewnetrznego 192.168.0.253
#wobec nas, czyli serwera 218.179.171.100 , co
ma sens przy zachowaniu powyższej reguły
/sbin/ipchains -I input -p tcp -s
218.179.171.100 -d 192.168.0.253 22 -j ACCEPT
/sbin/ipchains -I output -p tcp -s
218.179.171.100 -d 192.168.0.253 22 -j ACCEPT
#oraz odblokowanie portu 22 dla klienta
127.0.0.1
#wobec nas, czyli serwera 218.179.171.100 , co
ma sens przy zachowaniu powyższej reguły
/sbin/ipchains -I input -p tcp -s
218.179.171.100 -d 127.0.0.1 22 -j ACCEPT
/sbin/ipchains -I output -p tcp -s
218.179.171.100 -d 127.0.0.1 22 -j ACCEPT
#oraz odblokowanie portu 22 dla klienta
wewnetrznego 192.168.0.1
#wobec nas, czyli serwera 218.179.171.100 , co
ma sens przy zachowaniu powyższej reguły
/sbin/ipchains -I input -p tcp -s
218.179.171.100 -d 192.168.0.1 22 -j ACCEPT
/sbin/ipchains -I output -p tcp -s
218.179.171.100 -d 192.168.0.1 22 -j ACCEPT
#
##################################################
#
#blokowanie wszystkich (od 1 do 65535) portów na
serwerze
#wobec nielubianego u nas klienta
217.167.149.246
/sbin/ipchains -I input -p tcp -s
217.167.149.246/255.255.255.255 1024:65535 -d 0/0 1:65535 -j
REJECT
/sbin/ipchains -I output -p tcp -s
217.167.149.246/255.255.255.255 1024:65535 -d 0/0 1:65635 -j
REJECT
#blokowanie na serwerze grupy portów (od 1148 do
1150)
#wobec klienta 192.168.000.222
/sbin/ipchains -I input -p tcp -s
192.168.000.222/255.255.255.255 1024:65535 -d 0/0 1148:1150 -j
REJECT
/sbin/ipchains -I output -p tcp -s
192.168.000.222/255.255.255.255 1024:65535 -d 0/0 1148:1150 -j
REJECT
#
#Zablokowany na serwerze port 443 - wobec
klienta 192.168.0.222
#Zwróc uwagę, ze zapis jest nieco
inny.
#Zastosowałem tutaj łamanie wiersza przy pomocy
znaku \
#co ułatwia widzenie zbyt dlugiego
zapisu.
#Uwaga: nie wklepnij przypadkiem zbędnych
spacji!!!
sbin/ipchains -I input -p tcp \
-s 192.168.0.222/255.255.255.255 1024:65535
\
-d 0/0 443 -j REJECT
/sbin/ipchains -I output -p tcp \
-s 192.168.0.222/255.255.255.255 1024:65535
\
-d 0/0 443 -j REJECT
#
#Zablokowane na serwerze porty od 1148 do
1150
#wobec klienta 218.179.171.100
/sbin/ipchains -I input -p tcp
\
-s 218.198.34.124/255.255.255.255 1024:65535
\
-d 0/0 1148:1150 -j REJECT
/sbin/ipchains -I output -p tcp
\
-s 218.198.34.124/255.255.255.255 1024:65535
\
-d 0/0 1148:1150 -j REJECT
Obserwowałem przez dłuższy czas plik portsentry.history w
katalogu /etc/portsentry. Stwierdziłem, że znakomita większość
ataków jest prostacka i polega na próbach prymitywnego odpalania
najprawdopodobniej tych samych skryptów. Jeżeli masz prawidłowo
poblokowane usługi w plikach /etc/hosts.allow ,
/etc/hosts.deny to śpij spokojnie. Możesz jednak dodatkowo
zabezpieczyć się, blokujac porty w opisywanym tutaj pliku
/etc/rc.d/rc.firewall.inet_sharin-2.2 :-) Uwaga: nie blokuj
portów, które planujesz używać pod wybrane usługi:
- 22 (SSH - szyfrowane połączenie
zastępujące telnet)
- 23 (telnet - stary i
niepolecany sposób zdalnej łączności z systemem)
- 111 (SUN Remote Procedure Call
- przyznam, że nie wiem co to)
- 443 (https - bezpieczny http,
jeżeli nie skonfigurowałeś swojego apache pod https, to śmiało
zablokuj ten port)
- 515 (drukarka - jeżeli nie masz
drukarek sieciowych, to blokuj)
Jeżeli masz problemy z ustaleniem numeru portu na jakim pracuje
wybrana aplikacja lub usługa internetowa (którą chcesz zablokować
np. na kliencie w Twojej sieci domowej) - zapraszam tutaj.
Pamiętaj, że w Twoim Mandrake jest plik /etc/services
zawierający wykaz portów z krótkim objaśnieniem.
Dla ambitnych polecam stronkę http://www.jtz.org.pl/Html/mini/IP-Masquerade.pl.html
Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.
Uwaga.
Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).