kengdal Skrevet 8. mai 2006 Skrevet 8. mai 2006 Er det noe mulighet til å få iptables til å lese fra en fil? Jeg har lyst til å ha en fil med macadresser som er sperret. Det hadde vært mye bedre å vedlikeholdt en fil i steden får å gå inn i iptables scriptet. Takker for svar Mvh Kengdal
comicz Skrevet 8. mai 2006 Skrevet 8. mai 2006 Kan du ikke bare lage en løkke som leser MAC-adresser fra en fil, da? Det er jo tross alt et script, du har anledning til å hente informasjon utenfra om du vil.
kengdal Skrevet 9. mai 2006 Forfatter Skrevet 9. mai 2006 Kan du ikke bare lage en løkke som leser MAC-adresser fra en fil, da? Det er jo tross alt et script, du har anledning til å hente informasjon utenfra om du vil. 6061427[/snapback] Takker for svar, har du et eksempel på en slik løkke. Er ikke så kjent med slik scripting.
kengdal Skrevet 9. mai 2006 Forfatter Skrevet 9. mai 2006 (endret) for macaddresse in `cat macaddresse.txt $1` /sbin/iptables -A FORWARD -p ALL -i $eth0 -m mac --mac-source $macaddressse -j DROP Noe sånt? Er en stund siden jeg jobbet med noe sånt. Takker for svar MVH KEngdal Endret 9. mai 2006 av kengdal
|FSK| Skrevet 9. mai 2006 Skrevet 9. mai 2006 for n in $(ls -1 --color=none sperr.txt);do iptables -A INPUT -m mac --mac-source $n -j DROP;done Uten å ha testet, tror jeg den vil sperre macadresser i sperr.txt, så lenge det er en mac på hver linje. Orker ikke teste ettersom jeg ikke sitter på noen fysisk boks, og ikke orker peset om jeg stenger meg selv ute
kengdal Skrevet 9. mai 2006 Forfatter Skrevet 9. mai 2006 Den sier den ikke finner sperr.txt. Jeg har lagt den i mappen der hvor iptables scriptet ligger. Noen forslag?
comicz Skrevet 9. mai 2006 Skrevet 9. mai 2006 Øh. Hva er vitsen med "ls", FSK? Han skal ikke liste filen, han skal ha innholdet i den. #!/bin/bash for i in `cat sperr.txt` do echo "$i" done exit 0 Bytt ut echo "$i" med den aktuelle iptables-kommandoen ;--) Dette forutsetter at MAC'ene er på hver sin linje: cat sperr.txt 88:77:11:22:44 77:22:33:11:11
kengdal Skrevet 10. mai 2006 Forfatter Skrevet 10. mai 2006 Denne her funker fint. /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source 00:11:22:33:44:55 -j DROP Denne funker ikke for sperr in `cat /etc/sperr.txt` do /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source $sperr -j DROP done Noen råd?
comicz Skrevet 10. mai 2006 Skrevet 10. mai 2006 Du burde i hvert fall slenge "" rundt $sperr: "$sperr". Det er alltid et fint triks å kjøre echo i stedet for/i tillegg til kommandoen du skal kjøre, slik at du ser akkurat hva den bruker. Sleng en echo "$sperr" over iptables-linja og se hvordan det ser ut.
kengdal Skrevet 10. mai 2006 Forfatter Skrevet 10. mai 2006 Jeg satt echo "$sperr" å den hentet ut mac-adressen. Så det funket fint. Men den klarer likevell ikke å sperre.
kengdal Skrevet 10. mai 2006 Forfatter Skrevet 10. mai 2006 Distroen som bli kjørt her er ipcop. Den konfigurerer iptables selv. Dette fungerer fint: #!/bin/sh # # $Id: rc.firewall,v 1.7.2.19 2005/10/03 00:34:12 gespinasse Exp $ # eval $(/usr/local/bin/readhash /var/ipcop/ppp/settings) eval $(/usr/local/bin/readhash /var/ipcop/ethernet/settings) IFACE=`/bin/cat /var/ipcop/red/iface 2> /dev/null | /usr/bin/tr -d '\012'` if [ -f /var/ipcop/red/device ]; then DEVICE=`/bin/cat /var/ipcop/red/device 2> /dev/null | /usr/bin/tr -d '\012'` fi iptables_init() { # Flush all rules and delete all custom chains /sbin/iptables -F /sbin/iptables -t nat -F /sbin/iptables -t mangle -F /sbin/iptables -X /sbin/iptables -t nat -X /sbin/iptables -t mangle -X # Set up policies /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source 00:11:22:33:44:55 -j DROP Dette fungerer ikke #!/bin/sh # # $Id: rc.firewall,v 1.7.2.19 2005/10/03 00:34:12 gespinasse Exp $ # eval $(/usr/local/bin/readhash /var/ipcop/ppp/settings) eval $(/usr/local/bin/readhash /var/ipcop/ethernet/settings) IFACE=`/bin/cat /var/ipcop/red/iface 2> /dev/null | /usr/bin/tr -d '\012'` if [ -f /var/ipcop/red/device ]; then DEVICE=`/bin/cat /var/ipcop/red/device 2> /dev/null | /usr/bin/tr -d '\012'` fi iptables_init() { # Flush all rules and delete all custom chains /sbin/iptables -F /sbin/iptables -t nat -F /sbin/iptables -t mangle -F /sbin/iptables -X /sbin/iptables -t nat -X /sbin/iptables -t mangle -X # Set up policies /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT ACCEPT for sperr in `cat /etc/sperr.txt` do /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source "$sperr" -j DROP done
comicz Skrevet 10. mai 2006 Skrevet 10. mai 2006 (endret) Du kaller /bin/sh, ikke /bin/bash. Dette betyr sikkert annen syntaks - jeg kjenner ikke /bin/sh så godt. Så vidt jeg kan se skulle det ikke være noen problem å kjøre bash fremfor sh(altså bytte ut /bin/sh med /bin/bash i den første linja.) Edit: Hmm, syntaks skal være mer eller mindre den samme. Du kan prøve med bash og se hva som skjer? Evt kan du slenge de linjene i et eget skript, som invoker bash, og kjøre det fra iptables-skriptet(altså en form for wrapperskript). Endret 10. mai 2006 av comicz
kengdal Skrevet 11. mai 2006 Forfatter Skrevet 11. mai 2006 (endret) Det som er så rart er hvis jeg skriver echo /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source "$sperr" -j DROP Så viser den /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source 00:11:22:33:44:55 -j DROP Dette er merkelig. Skulle nesten tro at den ikke liker at det står " for sperr in `cat /etc/sperr.txt` do" Virker som den ikke bryr seg om det som skjer etter denne linja. Resten av scriptet fungerer nedover. Går det ann å legge til $sperr som henter ut infomasjon lenger oppe i scriptet så den bare henter ut det når den trenger det. Litt dårlig forklart men. Så det ser sånn ut. /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT ACCEPT /sbin/iptables -A FORWARD -p ALL -i $GREEN_DEV -m mac --mac-source "$sperr" -j DROP Noen som skjønte det Endret 15. mai 2006 av kengdal
kengdal Skrevet 15. mai 2006 Forfatter Skrevet 15. mai 2006 Ingen som har noen nye forslag? Noen andre metoder jeg kansje kan prøve på?
|FSK| Skrevet 15. mai 2006 Skrevet 15. mai 2006 Øh. Hva er vitsen med "ls", FSK? Han skal ikke liste filen, han skal ha innholdet i den. Akk, det må være en av de bedre typoene mine på lang tid. Selvfølgelig burde det ha vært cat sperr.txt inne i bildet der... Jaja
arokh Skrevet 16. mai 2006 Skrevet 16. mai 2006 Dere tenker litt for tungvindt: iptables -A FORWARD -p ALL -i $GREENDEV -m mac --mac-source 00:14:22:1b:2a:a6 -j DROP iptables -A FORWARD -p ALL -i $GREENDEV -m mac --mac-source 00:14:22:1b:2a:a7 -j DROP iptables -A FORWARD -p ALL -i $GREENDEV -m mac --mac-source 00:14:22:1b:2a:a8 -j DROP Ikke noe poeng å putte mac-addressene i en egen fil. Om du absolutt vil organisere det litt "penere" kan du jo gjøre noe slik: MACS="00:14:22:1b:2a:a8 " MACS="$MACS 00:14:22:1b:2a:a9 " MACS="$MACS 00:14:22:1b:2a:a7 " MACS="$MACS 00:14:22:1b:2a:a6" Deretter kan du bruke "for a in $MACS" osv.
kengdal Skrevet 16. mai 2006 Forfatter Skrevet 16. mai 2006 Jeg har mange adresser som ligger i en txt.fil som jeg skulle hatt sperret. Det er mye lettere å legge til eller fjærne mac-adresser fra en fil, en å gå inn i scriptet å manuelt redigere dette hvergang.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå