firewall ipchains
Marek Guevara Braun
marek.guevara w atm.com.pl
Pią, 24 Paź 2003, 13:24:07 CEST
Andrzej Krzysztofowicz wrote:
> Wkurzyl mnie dzisiaj w koncu malo elastyczny parser konfiguracji firewalla w
> RA. Jesli krtos ma ochote potestowac, to dolaczam wersje z lekka rozbudowana.
> Glowne jej "ficzery", to:
>
> - akceptowanie "any" jako protokolu
> - mozliwosc dopisywania wykrzyknikow przy wszystkich polach zezwalajacych na
> to bez koniecznosci cytowania nastepujacych po nich spacji / tabulacji
> - tolerowanie pominiecia pola "port" (zrodlowy / docelowy) w niektorych
> sytuacjach, gdy nie rodzi to niejednoznacznosci.
>
> Komentarze i testetowanie mile widziane.
To jak jeszcze z drobna; modyfikacja;:
1. podstawowe odrzucanie linii zaczynaja;cych sie; od # oraz pustych
dla plików ${CHAIN} zasta;pi?em odrzucaniem linii zawieraja;cych
tylko znaki niealfanumeryczne (np. spacje) lub znaki komentarza
poprzedzone znakiem/ami niealfanumerycznymi
2. doda?em odfiltrowanie komentarzy dodawanych za regu?a; - do tej pory
nie moz.na by?o komentowac' w tej samej linijce co regu?ka.
efekt uboczny: wprowadza to zalez.nos'c' od awk
3. doda?em zmienne awk i grep wskazuja;ce na pe?ne s'ciez.ki do binarek
(nie zmienia?em wszystkich grep na ${grep} ale tylko tam gdzie
modyfikowa?em skrypt) - docelowo to pewnie powinno byc'
w /etc/sysconfig/firewall lub /etc/rc.d/init.d/functions.
IMHO lepiej pos?ugiwac' sie; s'ciez.kami bezwzgle;dnymi.
Kiedys' spe;dzi?em zdecydowanie za duz.o czasu szukaja;c b?edu w regu?ach
spowodowanego pozostawieniem w jednym z plików konfiguracyjnych
samej spacji - o ile proste literówki, brakuja;ce opcje moz.na by?o
wychwycic' po tres'ci komuikatu b?e;du to pamie;tam z.e sama spacja by?a
trudna do wys'ledzenia.
Pozdrawiam,
Marek
PS. Poprawki oczywis'cie na GNU GPL v.2 :-)
--- firewall.orig 2003-10-24 13:03:24.698804352 +0200
+++ firewall 2003-10-24 13:08:07.434821944 +0200
@@ -11,6 +11,9 @@
# config: /etc/sysconfig/firewall-rules/input
# config: /etc/sysconfig/firewall-rules/output
+grep='/bin/grep'
+awk='/bin/awk'
+
# Source function library.
. /etc/rc.d/init.d/functions
@@ -102,10 +105,10 @@
for CHAIN in ${FILES}; do
if [ -s ${CHAIN} ]; then
- grep -v '^#' ${CHAIN} | grep -v '^$' | \
+ ${grep} -v -e '^\W*#' ${CHAIN} | ${grep} -v -e '^\W*$' | \
while read LINE; do
#POLICY PROTO SADDR SPORT DADDR DPORT IFACE OPTIONS
- LINE2=`echo $LINE`
+ LINE2=`echo $LINE|${awk} -F# {'print $1'}`
POLICY=${LINE2%% *}
LINE2=${LINE2#$POLICY}; LINE2=${LINE2# }
case "${POLICY}" in
Więcej informacji o liście dyskusyjnej pld-betatesters