Odpalanie firewalla
Odpalanie firewalla
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?
-
- Posty: 93
- Rejestracja: 28 czerwca 2006, 20:31
- Lokalizacja: Koluszki
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
-
- Beginner
- Posty: 207
- Rejestracja: 26 czerwca 2006, 01:49
- Lokalizacja: Kraków za firewallem
Re: Odpalanie firewalla
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.iptablesJabber 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?
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