squid sarg raporlarında ip yerine netbios ismi kullanmak için

Bazı durumlarda squid veya sarg IP’den bilgisayar ismini çözümleyemeyebilir ve sarg raporları IP adresleri ile oluşturulacağından karışıklık oluşur.
Sorunu gidermek için, nbtscan kullanarak WORKGROUP içinde makine adını çözümleyebiliriz.

#!/bin/bash
# 10-08-2013 Cem DOGAN
#
for i in `cat /var/log/squid/access.log|awk '{print $3}'|grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' |sort|uniq`
do
        echo "+++"$i"+++"
        if grep -q $i /root/sarg.ip
        then
        zatenvar=`grep $i /root/sarg.ip`
        echo $zatenvar" dosyada zaten bulunuyor"
        else
        name=`/usr/sbin/nbtscan $i |grep $i |grep -v NBT|awk '{print $2}'`
                if [ $name ]
                        then
                        echo $i":"$name>> /root/sarg.ip.tmp
                        #sort /root/sarg.ip.tmp|uniq > /root/sarg.ip
                        echo $i,$name "eklendi"
                        else
                        dhcpden=`cat /var/lib/dhcpd/dhcpd.leases |grep -A 10 $i| grep hostname| awk -F " '{print $2}'|sort|uniq`
                                if [ $dhcpden ]
                                then
                                #       echo $i":"$dhcpden>> /root/sarg.ip.tmp
                                        echo $i":"$dhcpden|tr "[:lower:]" "[:upper:]">> /root/sarg.ip.tmp

                                        echo $i":"$dhcpden
                                fi
                fi
        fi
done
sort /root/sarg.ip.tmp|uniq > /root/sarg.ip

Gün içinde topladığımız ip ve bilgisayar isimlerini sed kullanarak başka bir dosyada düzenlenmiş şekilde hazırlıyoruz.

#!/bin/bash
# 10-08-2013 Cem DOGAN
#
INPUT=/root/sarg.ip
OLDIFS=$IFS
IFS=:
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read ip name
do
        params+="s/$ip/$name/g;"
done < $INPUT
IFS=$OLDIFS

params=`echo $params| sed 's/;$//'`
sed  -e "$params" /var/log/squid/access.log > /var/log/squid/access.log.sarg

Artık sarg ayarlarımızı yeni oluşturduğumuz dosyadan okuyacak şekilde yapabiliriz.

dhcpd ile lease time’ı uzun tutmak ve günlük olarak oluşturulan ip tablosunu temizlemek de gerekebilir. Gerisi size kalmış.

squid için tek eth ile kullanılabilecek iptables kuralları

squid in 3169 portundan çalıştığını düşünürsek aşağıdaki kurallar bütünü işimizi görecektir.

#!/bin/sh
# squid server IP
SQUID_SERVER=`ifconfig eth0 | sed -ne 's/.*inet addr:([^ ]*).*/1/p'`
# Interface connected to Internet
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth0"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
#iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 443 -j DNAT --to $SQUID_SERVER:3130

# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
#iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3130
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP

iptables -A OUTPUT -i $INTERNET -p tcp -m multiport --dports 21,22,110,25,143,587,3169 -m state --state NEW -j ACCEPT
iptables -A INPUT -i $INTERNET -p tcp -m multiport --dports 21,22,110,25,143,587,3169 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

yum ile otomatik güncelleme

Yum ile otomatik güncelleme yapmak için yum-cron uygulamasını yüklemeliyiz.

yum install yum-cron

Sadece kontrol etme, sadece uyarma veya sadece indirme gibi seçenekleri ayarlamak için aşağıdaki dosyayı düzenliyoruz.

vi /etc/sysconfig/yum-cron

Aktif hale getirmek için;

/etc/init.d/yum-cron start
chkconfig yum-cron on

Güncellemek istemediğiniz paketler varsa, yum-cron config dosyasında belirtmek gerekir. Örnek olarak;

YUM_PARAMETER="-x perl* -x python* -x kernel*"