Page 1 of 1

Mein Script erstellt keine LOG File

Posted: Sun 19. Feb 2023, 07:18
by trollolol
Hall und einen Guten Morgen zusammen,

ich habe ein Script was ich auf einem unserer Server einsetze erfolgreich am laufen. Mein kleines Problem besteht jetzt darin, dass er mir keine LOGS anlegt. Ich stell mal das Script rein:

Code: Select all

#!/bin/bash
# Purpose: Block all traffic from AFGHANISTAN (af) and CHINA (CN). Use ISO code. #
# See url for more info - http://www.cyberciti.biz/faq/?p=3402
# Author: nixCraft <www.cyberciti.biz> under GPL v.2.0+
# -------------------------------------------------------------------------------
ISO="co cl ar ve "

### Set PATH ###
IPT=/sbin/iptables
WGET=/usr/bin/wget
EGREP=/bin/egrep

### No editing below ###
SPAMLIST="countrydrop"
ZONEROOT="/root/iptables"
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"

cleanOldRules(){
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}

# create a dir
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT

# clean old rules
cleanOldRules

# create a new iptables list
$IPT -N $SPAMLIST

for c  in $ISO
do
        # local zone file
        tDB=$ZONEROOT/$c.zone

        # get fresh zone file
        $WGET -O $tDB $DLROOT/$c.zone

        # country specific log message
        SPAMDROPMSG="$c Country Drop"

        # get
        BADIPS=$(egrep -v "^#|^$" $tDB)
        for ipblock in $BADIPS
        do
           $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
           $IPT -A $SPAMLIST -s $ipblock -j DROP
        done
done

# Drop everything
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST

# call your other iptable script
/root/firewall/firewall2.sh

exit 0
Wie ihr seht ist es ein vorgefertigetes Scipt, dass ich aus der Not heraus einsetzen musste. Wenn ich das Richtig sehe sollte er eine LOGfile anlegen mit dem Namen SPAMDROPMSG, oder?

Wenn ich den Weg über iptables -L -v gehe, dauert es ewig, ich seh nicht alles (wird nach ner weile abgeschnitten). Wäre nice wenn ihr mir da bitte helfen könntet.

Wäre auch übrigens ein Vorschlag für evtl. die nächste Version, dass man Länder mit einem Mausklick blockieren kann :)

Re: Mein Script erstellt keine LOG File

Posted: Sun 19. Feb 2023, 08:17
by Jolinar
trollolol wrote: Sun 19. Feb 2023, 07:18 Wenn ich das Richtig sehe sollte er eine LOGfile anlegen mit dem Namen SPAMDROPMSG, oder?
Nein.
Die Zeile im Script

Code: Select all

$IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
bewirkt, daß ein Eintrag ins Systemlog gemacht wird und dabei der Inhalt der Variablen "$SPAMDROPMSG" verwendet wird.

Bitte niemals Scripte einsetzen, deren Funktionsweise man nicht sicher versteht...

BTW:
Was die Funktionsweise angeht, kann man auch immer direkt die systeminterne Doku dazu befragen:

Code: Select all

man iptables

Edit:
Du solltest dich generell etwas tiefgründiger mit Shell Scripten befassen, denn du weißt ja bestimmt, daß iptables deprecated ist und aktuell durch sein Replacement nftables abgelöst wird und daß deshalb dein Script in absehbarer Zeit so nicht mehr funktionieren wird.
Spätestens dann solltest du fit genug sein, dein Script anzupassen, damit du die Funktion des Scripts weiter nutzen kannst. ;)

Re: Mein Script erstellt keine LOG File

Posted: Sun 19. Feb 2023, 11:26
by trollolol
Jolinar wrote: Sun 19. Feb 2023, 08:17 Edit:
Du solltest dich generell etwas tiefgründiger mit Shell Scripten befassen, denn du weißt ja bestimmt, daß iptables deprecated ist und aktuell durch sein Replacement nftables abgelöst wird und daß deshalb dein Script in absehbarer Zeit so nicht mehr funktionieren wird.
Spätestens dann solltest du fit genug sein, dein Script anzupassen, damit du die Funktion des Scripts weiter nutzen kannst. ;)
Ja, dass weiß ich :), aktuell haben wir alles auf Debian 11 umgestellt.

Das Script war mein Retter in der Not. Gibts denn eine Möglichkeit die geblockten IP's aus diesem Script zu loggen?

Re: Mein Script erstellt keine LOG File

Posted: Sun 19. Feb 2023, 11:46
by Jolinar
trollolol wrote: Sun 19. Feb 2023, 11:26 Gibts denn eine Möglichkeit die geblockten IP's aus diesem Script zu loggen?
Das tust du doch bereits :?
Das Script loggt die Packets, die gedroppt werden, ins Syslog.
Wie du die entsprechenden Logfileeinträge aus dem Syslog selektierst, weißt du ja bestimmt (Hint: grep).

Du könntest den Syslogdienst natürlich auch dazu bewegen, für die entsprechenden Logfileeinträge ein separates Logfile zu schreiben. ;)

Re: Mein Script erstellt keine LOG File

Posted: Sun 19. Feb 2023, 11:53
by trollolol
Alles gut, ich habs gerade gefunden :lol: :lol:

Mei, ich bin aber auch ein Schussel. Ich werde natürlich anpassungen vornehmen, aber es tut erstmal das was es soll, und das ist wichtig.

Danke