Strona 1 z 1
Odpalanie firewalla
: 01 lipca 2006, 15:08
autor: Rad
W jaki sposób powinno się poprawnie uruchamiać skrypt z firewallem? Teraz u siebie mam po prostu wrzucony skrypt (który nawet nie jest w formacie skryptu startowego - po prostu kolejne linijki iptables) do /etc/init.d/ i dodany przez update-rc.d defaults. Czy to jest dobry sposób, czy też robi się to jakoś lepiej, bardziej elegancko?
: 01 lipca 2006, 18:44
autor: Maciek_Rutecki
Ja zrobiłem coś takiego, plik /etc/init.d/piecuch:
Kod: Zaznacz cały
#! /bin/sh
# zmienne srodowiskowe
IPT=/sbin/iptables
export INTERFEJS="eth0"
echo $INTERFEJS
export MOJE_IP="`/sbin/ifconfig $INTERFEJS | grep inet | cut -d ':' -f 2 | cut -d ' ' -f 1`"
echo $MOJE_IP
case "$1" in
start)
echo 'Rozpoczecie ustawiania regul firewalla.'
echo 'Usuwam istniejace reguly filtra pakietow...'
$IPT -v -F
echo 'Akceptuje ruch po interfejsie lokalnym...'
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
echo 'Akceptuje ruch istniejacy i potomny...'
$IPT -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -A INPUT -m state --state RELATED -j ACCEPT
############WYCHODZACE################
echo 'Akceptuje ruch wychodzacy...'
$IPT -A OUTPUT -j ACCEPT
############PRZYCHODZACE##############
echo 'Akceptuje/blokuje ruch przychodzacy...'
#blokuj te IP
# czarna lista adresów IP
# wget -t 5 -N -r -O /etc/lista.txt [url]http://unixy.pl/maciek/black_ip/lista.txt[/url] #pobierz plik
chown root:root /etc/lista.txt #tylko root ma dostep do pliku
chmod 600 /etc/lista.txt
for i in `cat /etc/lista.txt | cut -d ' ' -f 1`; do #czytaj liste
$IPT -A INPUT --source $i -j DROP #blokuj dane ip
done;
# weryfikacja adresu zrodlowego
# zabezpieczenie przed falszowaniem adresu pakietow przychodzacych
$IPT -A INPUT -i $INTERFEJS --source $MOJE_IP -j DROP
# PING
$IPT -A INPUT -p icmp -j ACCEPT
# FTP
$IPT -A INPUT -p tcp --dport 20:21 -j ACCEPT
$IPT -A INPUT -p tcp --dport 30000:40000 -j ACCEPT
# DHCP
$IPT -A INPUT -p udp --dport 68 -j ACCEPT
# SSH
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT
#jabber przesyl plikow
$IPT -A INPUT -p tcp --dport 8010 -j ACCEPT
#gg przesylanie plikow
$IPT -A INPUT -p tcp --dport 1550 -j ACCEPT
#VoIP
$IPT -A INPUT -p udp --dport 5060 -j ACCEPT
$IPT -A INPUT -p udp --dport 5004 -j ACCEPT
$IPT -A INPUT -p udp --dport 8000 -j ACCEPT
$IPT -A INPUT -p udp --dport 10000 -j ACCEPT
######################################
# echo 'Wlaczam logowanie...'
# $IPT -A INPUT -j LOG --log-prefix "FROM INPUT: "
echo 'Blokuje reszte...'
$IPT -A INPUT -j DROP
$IPT -A FORWARD -j DROP
echo 'Zakonczono ustawianie regul firewalla.'
$IPT -L -n
;;
stop)
echo 'Rozpoczecie ustawiania regul firewalla.'
echo 'Usuwam istniejace reguly filtra pakietow...'
$IPT -F
echo 'Akceptuje ruch po interfejsie lokalnym...'
$IPT -A INPUT -i lo -j ACCEPT
echo 'Akceptuje ruch istniejacy i potomny...'
$IPT -A INPUT -m state --state ESTABLISHED -j ACCEPT
$IPT -A INPUT -m state --state RELATED -j ACCEPT
echo 'Akceptuje ruch wychodzacy...'
$IPT -A OUTPUT -j ACCEPT
echo 'Akceptuje ruch przychodzacy...'
$IPT -A INPUT -j ACCEPT
echo 'Akceptuje ruch przechodzacy...'
$IPT -A FORWARD -j ACCEPT
echo 'Zakonczono ustawianie regul firewalla.'
$IPT -L -n
;;
*)
echo "Usage: /etc/init.d/piecuch {start|stop}"
exit 1
;;
esac
exit 0
Re: Odpalanie firewalla
: 01 lipca 2006, 22:04
autor: Witek Baryluk
Jabber pisze:W jaki sposób powinno się poprawnie uruchamiać skrypt z firewallem? Teraz u siebie mam po prostu wrzucony skrypt (który nawet nie jest w formacie skryptu startowego - po prostu kolejne linijki iptables) do /etc/init.d/ i dodany przez update-rc.d defaults. Czy to jest dobry sposób, czy też robi się to jakoś lepiej, bardziej elegancko?
Bardzo dobrze, tylko powinien rozpoznawać argumenty start stop restart. to się przydaje. Jeśli ilość linijek tego iptables jest jakaś olbrzymia to lepiej zeby ten skrypt odpał jakiś inny powiedzmy w /etc/firewall/ albo wczytywał reguły zapisane w pliku np. /etc/default/firewall.iptables
ja mam coś takiego:
Kod: Zaznacz cały
#!/bin/bash
[ -f /etc/default/firewall.iptables ] || exit 1
case "$1" in
start)
$0 stop
echo -ne "Starting firewall: "
/sbin/iptables-restore < /etc/default/firewall.iptables
echo -ne "iptables "
/sbin/arptables -P FORWARD DROP
/sbin/arptables -A FORWARD --source-mac 00:50:ba:bf:8c:03 -j ACCEPT
/sbin/arptables -A FORWARD --destination-mac 00:50:ba:bf:8c:03 -j ACCEPT
echo -ne "arptables.\n"
]
linijki z arptables można wywalić.
a plik /etc/default/firwall.iptables wygląda powiedzmy tak:
[code]
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
... regulki
COMMIT
*nat
:PREROUTING DROP [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
... regulki
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
....regulik tak jak w iptables, tyle ze bez nazwy programu np.
-A OUTPUT -m ipp2p --ipp2p -j DROP
COMMIT
Bardzo szybkie. Nawet jeśli masz jakąś olbrzymią sieć, to lepiej żeby Twoje skrypt najpierw wygenerowały ten plik (albo część odpowiadającą jakiemuś łancuchowi/tablicy, poczytaj dokumentacje iptables-restore -save) i dopiero go odpaliły, dodatkowo zapewnia to atomowość (normalnie trzeba uważać, aby np. w czasie wstawiania regułek, nie pojawił się moment (ułamek sekundy) że sieć może być narażona na atak, można to robić recznie, wstawiając odpowiednie blokady na początku łańcucha, na czas dodawania reszty reguł, ale tak jest łatwiej) i jeśli zależy Tobie na tym, można dopisać aby zapisywał stan firewalla (wraz z licznikami) do pliku. To pozwala na eksperymenty na firewallu bezpośrednio, poprostu z konsoli, zamiast co chwile przeładowywać go, a kiedy efekt Ciebie zadowla, poprostu zrobić iptables-save .
: 01 lipca 2006, 23:19
autor: Rad
Wielkie dzięki, chodziło mi głównie o to, czy właśnie warto sobie zrobić start i stop oraz gdzie wrzucić skrypt. Mój firewall to raptem kilka linijek (natowanie kompa w drugim pokoju), ale informacje na pewno mi się przydadzą, gdy będę robił jakiś ruter lub po prostu poznawał netfiltera.