Difference between revisions of "Linux Januar 2012/apache log"
(→Eksempel på Rapport) |
(→Løsnings forslag) |
||
Line 44: | Line 44: | ||
[[category:UNIX]][[Category:Linux]] | [[category:UNIX]][[Category:Linux]] | ||
− | + | =Løsnings forslag= | |
Smid jeres løsnings forslag her under | Smid jeres løsnings forslag her under |
Revision as of 11:03, 13 November 2012
Der ønskes oversigter over hvem der anvender/misbruger adgangen til en Apache WEB-server. Log filen vi anvender under udvikling af opgaven er en lille kopi af den rigtige logfil og hedder /var/log/httpd-access.log
Der er to sites installeret på serveren hvor denne logfil kommer fra. mediawiki og mrbs. Det er kun opslag til mediawiki sitet der skal rapporteres.
Rapporten skal ende med at indeholde
- En liste over de 50 mest anvendte IP adresser (Hvor mange gange IP adressen optræder i filen) - Sorteret med mest flittige IP adresser øverst. Så er rapporten nemmere at læse.
- Domænenavnet til IP adressen.
Contents
Eksempel på Rapport
HTTP Access rapport fra mars.tekkom.dk
======================================
Rapporten genereret: Fri Aug 28 07:09:13 CEST 2009
------------------------------------------------------------------------------------
Data opsamlet er fra perioden den 26 Aug 2009 22:21:13 til den 28 Aug 2009 06:40:07
------------------------------------------------------------------------------------
806 192.168.146.155 ()
508 87.56.15.130 (0x57380f82.vgnqu2.dynamic.dsl.tele.dk.)
306 77.212.13.52 (0x4dd40d34.adsl.cybercity.dk.)
301 195.181.54.128 (pixuv.eucmidt.dk.)
.......
At komme igang
Det drejer sig om at tænke projektet igennem og bryde det ned til mange små overskuelige opgaver. Se på rapportens oplysninger og arbejd med en lille del af gangen. Lav et kommentarområde i dit script hvor du skriver de fejl og mangler der er. Brug ikke for meget tid på at løse et lille problem. For eksempel fjernelse af mellemrum, karakterer i rapporten. Det kan man altid gøre senere.
interessante utilities
- dig DNS opslag. Her er flaget -x interessant da det laver reverse DNS opslag.
- Prøv evt dig -x 213.174.68.45 | grep PTR | grep -v -E '^;' | tr ' \t' ' '|cut -d' ' -f5
- sort - sortere linier
- uniq - finde ens linier efter hinanden. Se evt flaget -c
- head - Se første linier en fil fx. head -n 1 FILNAVN viser den første linie i en fil
- tail - Se sidste linier i en fil fx. tail -n 1 FILNAVN viser sidste linie i en fil
Hjælp hinanden
At programmere er meget nemmere hvis man arbejder sammen. Så skriv dine spørgsmål, forslag og ideer her i artiklen. Good Luck Henrik Thomsen Mail evt Henrik Thomsen
Løsnings forslag
Smid jeres løsnings forslag her under
Forslag #1
- Lavet af Kristian (mr)Andersen og Kris Simonsen
#!/bin/bash
FILE=/var/log/apache2/access.log;
extip=`wget -q -O - checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'`
daystart=`head -n 1 $FILE |cut -d ' ' -f 4 | cut -c2-12 | tr '/' ' '`;
timestart=`head -n 1 $FILE |cut -d ' ' -f 4 | cut -c14-21 | tr '/' ' '`;
dayend=`tail -n 1 $FILE |cut -d ' ' -f 4 | cut -c2-12 | tr '/' ' '`;
timeend=`tail -n 1 $FILE |cut -d ' ' -f 4 | cut -c14-21 | tr '/' ' '`;
echo "==============================================="
echo -e "[ HTTP Access rapport for $extip Granat ]"
echo "==============================================="
echo -e " \t`date`\n"
echo "==============================================="
echo -e "\tDate collecting period"
echo "==============================================="
echo -e "\t[ Start Time/Date ] \t[ Untill ]"
echo -e "\t$daystart\t\t$dayend"
echo -e "\t$timestart\t\t$timeend\n"
for ip in `cat $FILE |cut -d ' ' -f 1 | sort |uniq -c | sort -rn`;
do { COUNT=`grep ^$ip $FILE |wc -l`; HOST=`dig -x $ip | grep PTR | grep -v -E '^;' | tr ' \t' ' '|cut -d' ' -f5`;
if [[ "$COUNT" -gt "1" ]];then echo -e "$COUNT: \t$ip \t($HOST)";
fi };
done
echo -e "\n"