ez a szkript rc.local-ból indul, valamint önállóan is meghívható (ezért olyan az eleje, amilyen)
/etc/ipban_script:
#! /bin/sh
IPLISTFILE=/etc/banned_ips
case $(iptables -L -n | grep BANNED) in
"" ) echo "No BANNED chain, creating";
iptables -N BANNED;
iptables -A BANNED -j RETURN;
iptables -A INPUT -j BANNED;;
* ) echo "Flushing BANNED chain";
iptables -F BANNED;
iptables -A BANNED -j RETURN;;
esac
for i in $(cat $IPLISTFILE);
do
case $i in
"#"* ) continue;;
";"* ) continue;;
"" ) continue;;
* ) iptables -I BANNED -s $i -j DROP; echo "$i banned";;
esac
done
/etc/banned_ips:
60.217.229.226
200.101.78.136
;123.123.123.123
61.153.176.122
196.15.143.106
#111.222.333.444
kell rajta valamit javítani szerintetek?
- bsh blogja
- A hozzászóláshoz be kell jelentkezni
- 1177 megtekintés
Hozzászólások
A sha-bang-ben van egy felesleges szokoz.
Talan ha a for helyett while read-dal dolgozod fel az inputot, elvileg se az ures sorokkal, se a sorkozi space-ekkel sincs gond.
Meg azert nem artana a szokasos valid IP regexppel tesztelni a cimeket.
A biztonsag kedveert a local LAN/trusted IP-kre tennek egy kivetelt.
Abszolut utolso szempont, de a kimenetet logba vagy syslogd-nek ki lehetne tee-zni. Valamint az input file lehetne sort-olva ;-) Meg ugye /etc alatt ne legyen futtathato allomany, az LSB compliance szellemeben ;-)
- A hozzászóláshoz be kell jelentkezni
"A sha-bang-ben van egy felesleges szokoz."
Nem felesleges. Jo az, es helyes!
ami át van húzva, azt teljesen fölösleges elolvasni. az olyan, mintha ott sem lenne
- A hozzászóláshoz be kell jelentkezni
miaza sha-bang? :) az első sorra gondolsz? a #! és a /bin/sh között?
a valid ip regexp-nek is utánanézek akkor google-n. bár mondjuk a logokban valós ip címek vannak, ezzel nem lehet baj.
logra igazából nincs szükségem, meg amúgy milyen kimenete lenne ennek? ha jól írtam mindent, akkor az iptables nem fog finnyázni, siker esetén meg csak -v -vel adna kimenetet, arra meg nincs szükségem.
az etc alatt amúgy is van futtatható állomány, plédául az rc.local is. de ennek is utánaolvasok azért, bár az ilyen compliance szellemiséget hírből sem ismerem :)
amúgy még azon gondolkoztam (és ez részben a valid ip-hez is kapcsolódhat), hogy a commentezett vagy üres sorok ellenőrzése helyett lehet, hogy úgy csinálom meg, hogy csak azt ellenőrzi, hogy az első karakter szám-e. ezzel kiszűrném kapásból a kommenteket is, üres sorokat is, vagy ha pl. egy sor szóközzel kezdődne valamiért... és akkor csak egy case lenne a 3 helyett.
ja és igazából az lett volna a kérdés, hogy ez a custom chaines megoldás ez mennyire jó/rossz/korrekt/használható? mert nekem így kényelmesnek tűnik, de mivel nem értek hozzá, lehet, hogy valami állati nagy baromságot csinálok (ami azért végső soron működik)
ja és jogos, a sorközi szóköz is megborítja a szkriptet... :)
----------------------------------
feel the beat - it's everywhere!
- A hozzászóláshoz be kell jelentkezni
/etc alatt ne legyen futtatható, meg LSB?
init.d-ék ezt tudják? :)
- A hozzászóláshoz be kell jelentkezni
Üdv! http://easyfwgen.morizot.net/gen/ Elég gyorsan lehet hatékony iptables -t gyártani vele. Amit kidob, átolvasod - konfolod, testre szabod, és megy.
********************
"Aki nem backupol az tehetsegtelen :-)"
"...ha nem tévedek!" (Sam Hawkins)
http://holo-media.hu
- A hozzászóláshoz be kell jelentkezni
és abban mennyi a fun factor? :)
----------------------------------
feel the beat - it's everywhere!
- A hozzászóláshoz be kell jelentkezni
Fun nem sok, de legalább értelmes lesz a script :)
********************
"Aki nem backupol az tehetsegtelen :-)"
"...ha nem tévedek!" (Sam Hawkins)
http://holo-media.hu
- A hozzászóláshoz be kell jelentkezni
értem én a kritikát... csak nem szeretem :D
----------------------------------
feel the beat - it's everywhere!
- A hozzászóláshoz be kell jelentkezni
Bocsi, nem néztem át a scriptedet, szóval remélem semmi harag. :) Úgy értettem, hogy ezzel igazán jó scriptet gyárthatsz rapid módon, persze sorról-sorra át kell nézzed.
********************
"Aki nem backupol az tehetsegtelen :-)"
"...ha nem tévedek!" (Sam Hawkins)
http://holo-media.hu
- A hozzászóláshoz be kell jelentkezni
szerintem az az igazán jó, ami pont azt csinálja, amire nekem szükségem van és semmi többet. és ha még ezt én eszkábálom össze, az külön jó. és ha még működik is... öröm s bódottá :)
----------------------------------
feel the beat - it's everywhere!
- A hozzászóláshoz be kell jelentkezni
még egy kérdés:
a rosszindulatú ip címeket átírom úgy, hogy az utolsó oktetet átírom 0-ra és /24, azaz (szerintem) az egész subnetet tiltom így. ez jó, szép, vagy sem? :)
amúgy ez a mostani verzió:
#! /bin/sh
IPLISTFILE=/etc/banned_ips
case $(iptables -L -n | grep BANNED) in
"" ) echo "No BANNED chain, creating";
iptables -N BANNED;
iptables -A BANNED -j RETURN;
iptables -A INPUT -j BANNED;;
* ) echo "Flushing BANNED chain";
iptables -F BANNED;
iptables -A BANNED -j RETURN;;
esac
sort -g -r $IPLISTFILE | while read i;
do
case $i in
[0-9]* ) echo -n "Banning $i : "; iptables -I BANNED -s $i -j DROP; if [ $? ]; then echo "OK"; else echo "FAIL"; fi;;
* ) continue;;
esac;
done
----------------------------------
feel the beat - it's everywhere!
- A hozzászóláshoz be kell jelentkezni