Skriptimiskeeled aine aruanded 2010 sügis: Difference between revisions
From ICO wiki
Jump to navigationJump to search
Line 49: | Line 49: | ||
Jah, ma tean, et on ka paremaid viise hoste blokeerida, näiteks kasutada hosts-allow parameetrit ssh konfiguratsioonis. | Jah, ma tean, et on ka paremaid viise hoste blokeerida, näiteks kasutada hosts-allow parameetrit ssh konfiguratsioonis. | ||
<source lang="bash"> | |||
#!/bin/bash | |||
# Skript, mis loeb läbi UNIX-i auth.log faili ja koostab IPTables block reeglid IP aadressidele, | |||
# mille pealt on autentimine ebaõnnestunud vähemalt etteantud arv kordi | |||
# käivitamise näide: | |||
# sh check_ip.sh /var/log/auth.log /etc/iptables_blocked.txt | |||
# Autor: Sigmar Muuga, DK31 | |||
# mitme ebaõnnestumise korral me IP blokeerime | |||
BLOCK_LEVEL=5 | |||
# auth.log faili asukoht | |||
AUTH_LOG_FILE=$1 | |||
# tüüpilised veasituatsioonid | |||
ERROR_PATTERNS="error | illegal | not\ allowed" | |||
# väljundfaili nimi (või asukoht) | |||
IP_TABLES_FILE=$2 | |||
# kontrollime etteantud argumenti | |||
if [ -z "$1" ]; then | |||
echo "No command-line arguments." | |||
exit 0 | |||
fi | |||
if [ -z "$2" ]; then | |||
echo "No IPTABLES file specified." | |||
exit 0 | |||
fi | |||
# kontrollime, et faili saaks kirjutada | |||
touch "$IP_TABLES_FILE" | |||
if [ -e $IP_TABLES_FILE ]; then | |||
echo "IPTABLES file: "$IP_TABLES_FILE | |||
else | |||
echo "Cannot write IPTABLES file!" | |||
exit 0 | |||
fi | |||
# itereerime yle logiridade | |||
more $AUTH_LOG_FILE | egrep "$ERROR_PATTERNS" | while read line; do | |||
address=$(echo $line | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}') | |||
# kas on valiidne IP | |||
if [ ${#address} -gt 0 ]; then | |||
# loeme esinevuskorrad | |||
occurences=$(grep -c $address $AUTH_LOG_FILE) | |||
if [ $occurences -ge $BLOCK_LEVEL ]; then # kui on juba piisavalt feilinud IP | |||
added_occurences=$(grep -c $address $IP_TABLES_FILE) | |||
#kontrollime, et poleks juba lisatud | |||
if [ $added_occurences -lt 1 ]; then | |||
echo "Blacklisting "$address" with "$occurences" occurences" | |||
#kirjutame IPTABLES reegli | |||
echo "iptables -A INPUT -s "$address" -j DROP" >> $IP_TABLES_FILE | |||
fi | |||
fi | |||
fi | |||
done | |||
</source> | |||
==Siim Kullerkupp AK21== | ==Siim Kullerkupp AK21== |
Revision as of 01:47, 17 January 2011
Siia tulevad kodus tehtud tööde lingid
Esitaja nimi
- Skript, mis teeb maailma paremaks - BASH
- Skript, mis teeb maailma paremaks - Python
- Skript, mis teeb maailma paremaks - PowerShell
- Arvustused sellele skriptile
Vabad ideed
Alvar Unuks AK41
Suurima andmemahuga paketite leidmine
Reget Kalamees DK21
Skript otsib vabade Wifi AP-de hulgast kõige kiirema ühenduse ja haagib end selle külge
Kaspar Prei
Lembit Elmik AK21
Skript, mis kontrollib võrguühenduse olemasolu ning selle puudusel diagnoosib häda. V6rgudiagnoosiskript
Marko Valing
Lauri Liibert AK21
Siim Liivand AK41
Midagi mailiserveri logide põhjal?
Sander Tuulik AK41
Skript mis otsib kõik pildi,video,muusika,dokumendid ja jagab need kaustadesse.
Kristjan Karmo AK41
- Skript, mis teeb varukoopia WordPressi instantsist - BASH
- Skript, mis teeb varukoopia WordPressi instantsist - Python
- Skript, mis... - PowerShell
Chris Sinihelm AK41
Nadežda Furs A31
Sigmar Muuga DK31
Skript, mis vaatab /var/log/auth.log faili ja võtab sealt enim ebaõnnestunud IP aadressid, mis üritasid teha sisse logimist SSH kaudu(lävend võiks näiteks olla 10 ebaõnnestunud katset) ning saadab need kas e-mailile või lisab tulemüüri reeglitesse(IPTABLES näiteks).
Jah, ma tean, et on ka paremaid viise hoste blokeerida, näiteks kasutada hosts-allow parameetrit ssh konfiguratsioonis.
#!/bin/bash
# Skript, mis loeb läbi UNIX-i auth.log faili ja koostab IPTables block reeglid IP aadressidele,
# mille pealt on autentimine ebaõnnestunud vähemalt etteantud arv kordi
# käivitamise näide:
# sh check_ip.sh /var/log/auth.log /etc/iptables_blocked.txt
# Autor: Sigmar Muuga, DK31
# mitme ebaõnnestumise korral me IP blokeerime
BLOCK_LEVEL=5
# auth.log faili asukoht
AUTH_LOG_FILE=$1
# tüüpilised veasituatsioonid
ERROR_PATTERNS="error | illegal | not\ allowed"
# väljundfaili nimi (või asukoht)
IP_TABLES_FILE=$2
# kontrollime etteantud argumenti
if [ -z "$1" ]; then
echo "No command-line arguments."
exit 0
fi
if [ -z "$2" ]; then
echo "No IPTABLES file specified."
exit 0
fi
# kontrollime, et faili saaks kirjutada
touch "$IP_TABLES_FILE"
if [ -e $IP_TABLES_FILE ]; then
echo "IPTABLES file: "$IP_TABLES_FILE
else
echo "Cannot write IPTABLES file!"
exit 0
fi
# itereerime yle logiridade
more $AUTH_LOG_FILE | egrep "$ERROR_PATTERNS" | while read line; do
address=$(echo $line | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}')
# kas on valiidne IP
if [ ${#address} -gt 0 ]; then
# loeme esinevuskorrad
occurences=$(grep -c $address $AUTH_LOG_FILE)
if [ $occurences -ge $BLOCK_LEVEL ]; then # kui on juba piisavalt feilinud IP
added_occurences=$(grep -c $address $IP_TABLES_FILE)
#kontrollime, et poleks juba lisatud
if [ $added_occurences -lt 1 ]; then
echo "Blacklisting "$address" with "$occurences" occurences"
#kirjutame IPTABLES reegli
echo "iptables -A INPUT -s "$address" -j DROP" >> $IP_TABLES_FILE
fi
fi
fi
done