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