Skriptimiskeeled aine aruanded 2010 sügis

From ICO wiki
Jump to navigationJump to search

Siia tulevad kodus tehtud tööde lingid

Esitaja nimi

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

Skript leiab dublikaat failid

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

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

Siim Kullerkupp AK21