A lista tartalmának csak az első tagja kerül bele a kívánt JailIP listbe, tudom, hogy szintaktikai gondom van, de jövök rá...
#!/bin/bash
more /var/log/mail.log |grep -e "warning: unknown\[" |cut -d [ -f 3,3 |cut -d ] -f 1,1 |sort -u > jailips
while read ip
do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP"
done < jailips
megoldás:
#!/bin/bash
more /var/log/mail.log |grep -e "warning: unknown\[" |cut -d [ -f 3,3 |cut -d ] -f 1,1 |sort -u > jailips
while read ip
do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP" < /dev/null
done < jailips
- 475 megtekintés
Hozzászólások
Nyilván ez egy működő megoldás, de nem lenne elegánsabb és hatékonyabb, ha lenne egy script a MT-en erre, és a mail.log-os gépről csak egy scp hívás (lista feltöltése), és egy ssh hívás (script futtatása) menne csak? Vagy még inkább a script scheduler-rel futhatna, és ha megjelenik a lista feldoglozza és törli... Akkor csak egy scp az egész.
Egyébként ha a /dev/null input helyett csak egy pontosvesszőt teszel a MT utasítás sor végére (szabályos utasítás vége jel), az nem elég? Ez a /dev/null az életbe nem jutott volna eszembe, de megjegyzem, hát ha kell egyszer!
- A hozzászóláshoz be kell jelentkezni
minek a more?
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A more megtette kötelességét, a more mehet.
"Normális ember már nem kommentel sehol." (c) Poli
- A hozzászóláshoz be kell jelentkezni
cat, less, more létezik valamilyen ökölszabály, hogy melyiket ?
"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */
- A hozzászóláshoz be kell jelentkezni
A cat simán stdout-ra küld mindent, a less és a more kifejezetten konzolos használatra, scrollozhatóan jelenít meg. Képernyő nélküli kimentet esetén vajójában csak a cat-nak van értelme, a másik kettőnek nem (sőt, szerintem, ha nem képernyő a kimenet, akkor cat-ként viselkednek).
A less és a more közül a less az okosabb, a more az egyszűbb.
- A hozzászóláshoz be kell jelentkezni
Jelen esetben egyiket sem, a grepnek ugyanis meg tudod mondani, hogy mit olvasson fel. Egy processz ée egy pipe megspórolva :-)
Bónuszként a "grep ... | cut ... " már awk-ért kiabál...
- A hozzászóláshoz be kell jelentkezni
annyira elvagyok merülve a hülyeségemben, hogy most fogom fel, mit more-zik itt mindenki :D :D :D
"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */
- A hozzászóláshoz be kell jelentkezni
"el vagyok"
- A hozzászóláshoz be kell jelentkezni
ez a megoldás mennyivel jobb egyébként mint egy "sima" fail2ban?
- A hozzászóláshoz be kell jelentkezni
Én arra tippelek, hogy kapásból az internetre kötött tűzfalon szeretne eldobálni minden ilyen kapcsolatot, nem engedi be a levelező szerverig sem.
- A hozzászóláshoz be kell jelentkezni
én is erre tippeltem, ezért nem értem, h miért jobb exportálni a listát, mint a mailserveren eldobni tűzfalból.
Vagy a másik opció: a mailserveren futó fail2ban adja ki az utasítást hogy address list-be vegye fel a tűzfal (akár expiry értékkel)
- A hozzászóláshoz be kell jelentkezni
fail2ban-nal akad egy pár gondom, pl a log-ok rotálását nem kedveli, de ez a legkisebb.
Lehet, hogy érződni fog a paranoiám, de a spam botok szépen megnövelték a számukat és az időintervallumokat a próbálkozások között.
Így soha nem bannolódnak.
Nem mellesleg nem én vagyok az első akinek, hasonló gondolatai támadnak: https://wiki.mikrotik.com/wiki/Use_Mikrotik_as_Fail2ban_firewall
"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */
- A hozzászóláshoz be kell jelentkezni
Pár megjegyzés:
1. Hacsak nincs szükséged a "jailips" fájlra, akkor nem írnám ki az IP-ket, hanem a while részt vinném tovább... Mellesleg tee-vel ekkor is lementhető a pipe tartalma.
2. A megoldásod többször indít SSH kapcsolatot, ami egy részről pazarlás, más részről lassít sok IP esetén.
Én így csinálnám (Nem teszteltem!):
#!/bin/bash
grep -Po "((?<=warning: unknown\[)(.*?)(?=\]))" /var/log/mail.log | sort -u | \
ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 \
"xargs -in1 ip firewall address-list add address={} list=JailIP"
Debian Linux rulez... :D
RIP Ian Murdock
- A hozzászóláshoz be kell jelentkezni
van xargs a mikrotik shellben?
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Köszönöm , ez igazán figyelemre méltó, nagyon köszönöm! Kellemes ünnepeket!
"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */
- A hozzászóláshoz be kell jelentkezni
maszatolunk, maszatolunk....., egyébként az IP-kre az esetleges későbbi "ügyekre" lenne szükség.
#!/bin/bash
MAINAP=`date +%Y%m%d`
grep -Po "((?<=warning: unknown\[)(.*?)(?=\]))" /var/log/mail.log | sort -u |
grep -Po "((?<=RCPT from unknown\[)(.*?)(?=\]))" /var/log/mail.log |sort -u >> jailips
while read ip
do whois -h whois.radb.net $ip |grep "route:" >> route
done < jailips
cat route | awk '{print $2}'|sort -u> route2
while read ip
do ssh -l user -p 22 -i /home/user/.ssh/id_rsa 192.168.1.1 "ip firewall address-list add address=$ip list=JailIP" < /dev/null
done < route2
#rm -rf jailips
mv jailips $MAINAP.jailips
rm -rf route
rm -rf route2
"#define QUESTION ((bb) || !(bb)) /* (c) written by W. Shakespeare. */
- A hozzászóláshoz be kell jelentkezni