MANIPULASI SQUID ACCESS.LOG - CARA ORANG KAMPUNG

Apa itu squid? Untuk lebih tepat saya rujuk sahaja kepada maklumat dari laman sesawangnya.

What is Squid?
Squid is a fully-featured HTTP/1.0 proxy which is almost (but not quite - we're getting there!) HTTP/1.1 compliant. Squid offers a rich access control, authorization and logging environment to develop web proxy and content serving applications.

ACCESS.LOG

Ianya merupakan satu fail (log) yang mempunyai maklumat berkaitan dengan transaksi laman web yang dilayari seperti waktu, ip, url, jenis fail dll. Maklumat-maklumat ini memberi kemudahan segera kepada system administrator dalam membuat pemantauan dan mengenal pasti masalah yang berlaku.

Perincian data dari log ini juga boleh didapati juga melalui pelbagai jenis aplikasi dari sumber terbuka ataupun komersil.


Contoh log
1342580482.700      6 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/2d8cac004f5558a1a69fa61bb31559c7/RSS.js? - DIRECT/202.187.31.12 unknown/unknown
1342580482.702      7 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/c4954a804f555919a862ac1bb31559c7/textReSizeGraphic.js? - DIRECT/202.187.31.42 unknown/unknown
1342580482.712      7 10.1.1.1 TCP_MISS/304 317 GET http://www.jnj.com/wps/wcm/connect/fb6b60804f555919a865ac1bb31559c7/textReSizeTextOnly.js? - DIRECT/202.187.31.12 unknown/unknown


Walaupun tidak menggunakan sebarang aplikasi tertentu, kita juga boleh mengambil dan memanipulasi data yang ada dari log ini untuk tujuan tertentu, bergantung kepada maklumat apa yang kita kehendaki.

Di bawah adalah beberapa contoh maklumat yang boleh diisihkan dari log asal dengan hanya menggunakan arahan langsung dari CLI.


TUKAR TARIKH & PANTAU AKTIVITI SEMASA

# awk '{ print strftime("%c"), $1 = "", $0}' /var/log/squid/access.log

# tail -f /var/log/squid/access.log|awk '{ print strftime("%c"), $1 = "", $0}'

Contoh hasil:
Fri Jul 26 15:19:21 2013   982 10.10.1.66 TCP_MISS/200 3815 GET http://resources.crossrider.com/apps/26766/resources/meta/1? - DIRECT/127.0.0.1 text/html
Fri Jul 26 15:19:21 2013   69 10.10.1.66 TCP_MISS/200 3792 GET http://discountbu-a.akamaihd.net/loaders/cid? - DIRECT/127.0.0.1 text/html
Fri Jul 26 15:19:21 2013   114 10.10.1.66 TCP_MISS/200 3794 GET http://contentcache-a.akamaihd.net/loaders/cid? - DIRECT/127.0.0.1 text/html
Fri Jul 26 15:19:21 2013   392 10.10.1.12 TCP_MISS/200 6414 GET http://www.guablog.com/thumbs/thumb-47594-140.jpg - DIRECT/205.251.137.10 image/jpeg

** Arahan di atas boleh diringkaskan dengan penggunaan skrip.

# cat > /usr/local/bin/chg.sh
#!/bin/sh
awk '{ print strftime("%c"), $1 = "", $0}'
Tekan CTRL+ D untuk simpan fail.

# chmod +x /usr/local/bin/chg.sh

# tail -f /var/log/squid/access.log|chg.sh

Selain awak, perl juga biasa digunakan untuk membuat perubahan waktu.

#!/usr/bin/perl -p
s/^\d+\.\d+/localtime $&/e;


PERINCIAN DAN STATISTIK

Gabungan arahan tertentu mampu membantu kita membuat perincian maklumat yang dikehendaki. Juga boleh dibuat kiraan ringkas berdasarkan apa yang kita cari. Di bawah disenaraikan beberapa contoh seperti:
- Statistik berkaitan status kod akses
- Jenis fail
- Pengguna dll

# awk '{print $4}' /var/log/squid/access.log |cut -d"/" -f2| \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
  ** Perincian jenis kod

 # awk '/MISS/ {print $4}' /var/log/squid/access.log |cut -d"/" -f1| \
 > awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
 ** Perincian jenis kod

# awk '{print $NF}' /var/log/squid/access.log |grep -v ^- | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian jenis fail

# awk '!/DENIED/ && !/-/ {print $8}' /var/log/squid/access.log | \
> awk '{arr[$1]++} END {for(i in arr) print i" =",arr[i]""}'
** Perincian pengguna (hanya yang mempunyai nama pengguna)

SIAPA | KE MANA | APA

 Di bawah adalah sekadar contoh, pencarian pastinya berbeza mengikut keperluan dan keadaan.

# awk '$7 {split($7,dmn,"/");print $3"\t" dmn[3]}' /var/log/squid/access.log | \
> grep -v 127.0.0.1

# tail -f /var/log/squid/access.log|grep -v 127.0.0.1| \
> awk '$7 {split($7,fqdn,"/");print $3"\t" fqdn[3]}'

# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print $3"\t" dmn[3]}' \
> /var/log/squid/access.log|grep blog|sort -n|uniq
** Khusus untuk kunjungan ke blogspot

# awk '$7 ~ /blogspot.com/ && !(/cdn|bp|quantserve/){split($7,dmn,"/");print dmn[3]}' \
> /var/log/squid/access.log |grep blog|sort -u|grep ^a
** Cari kunjungan ke blogspot yang bermula dengan huruf "a"

# awk -F "/" '/blogspot\.com/ {print $4}' /var/log/squid/access.log | \
> egrep -v "bp.|cdn|quant" |grep blog|sort -u

 # awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ {print $3 "\t" $7}' \
 > /var/log/squid/access.log|sort -u


# tail -f /var/log/squid/access.log |awk '$7 ~ /\.(exe)$|\.(msi)$|\.(zip)$|\.(rar)$/ { print strftime("%c", $1) "\t" $3 "\t" $7 }'
** Pemantauan langsung kepada beberapa jenis fail seperti .exe/.msi/.zip/.rar

# awk '$7 ~ /blogspot.com/ && !(/bp|cdn/) && (/masak| citarasa| dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3]} ' \
> /var/log/squid/access.log |sort -u|grep blog
* * Cari siapa suka akses blog masakan

# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print dmn[3], "\t" $3 | \
"sort -k1|uniq "}' /var/log/squid/access.log|grep blog
* Cari siapa suka akses blog masakan - isih ikut blog

# awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) && (/masak|citarasa|dapur/) {split($7,dmn,"/");print $3,"\t",dmn[3] | \
> "sort -u"}' /var/log/squid/access.log|grep blog
* Cari siapa suka akses blog masakan - isih ikut IP

awk '$7 ~ /blogspot.com/ && !(/bp|cdn|pixel/) {split($7,fqdn,"/");print $3,"\t",fqdn[3] | \
> "sort -k2|uniq -c|sort -rn|head -20"}' /var/log/squid/access.log
* Kira kekerapan kunjungan

*** Maklumat lanjut tentang kandungan access.log boleh dirujuk melalui   http://wiki.squid-cache.org/SquidFaq/SquidLogshttp://wiki.squid-cache.org/SquidFaq/SquidLogs

Apa yang ditulis di sini tidak lebih kepada nota & rujukan peribadi berdasarkan keperluan semasa. Pastinya di luar sana ada jalan yang lebih baik lagi. Sila tinggalkan mesej di ruangan komen sekiranya ada cara yang lebih efektif atau berkaitan.

Comments

Popular Posts

Scanned

Website Security Test