Squid java kullanan sitelerde problem çıkarıyordu. Yani java ile bağlanmak istiyorduk java uygulaması çalışmıyordu. Bu sorunun kaynağı bizim ntlm auth kullanmamız olduğunu anladım. Squid.conf'a basic auth u da eklediğim zaman problem kalmıyor. Bu bağlantıda ntlm auth çalışmadığı için java uygulamasını kullanamıyorduk. Ntlm ile auth yapamıyor ve Basicle auth yapıp java uygulamasını çalıştırıyor.
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 30
auth_param basic realm Server Proxy
auth_param basic credentialsttl 2 hours
Bunun dışında squid benim local ip'mi web isteklerinde headerlara koyuyordu. Clientların ne kadar az bilgisi giderse o kadar güvende olurlar. Bir manada information leak olarak tabir edilen bilgi sızması durumuydu.
squid.conf'ta "forwarded_for off" yaparak bunu engelledim.
Wednesday, March 29, 2006
Alınan E-posta iletilerinin kaynağını araştırma:
Haberleşme teknolojilerinden e-posta hayatımızın vazgeçilmez bir parçası olmuştur. Herkesin bildiği üzere yakın zamanda ortaya çıkmış bir haberleşme teknolojisidir. İlk olarak kullanımına 1970’ler de başlanan e-posta bildiğimiz manada ilk çalışma prensiplerini yani protokolüne ; 1982’ de yayınlanan RFC821 ve RFC822 ile kavuşmuştur. RFC821 SMTP (simple mail transport protokol, basit mail iletim protokolü) hakkında olup bu kurallar dizisi yeni RFC’lerle yenilenmekte ve gelişmektedir. İlk olarak ortaya çıkış tarihinin 1980lerin başı olduğunu düşündüğümüzde o zamanın ihtiyaçlarını karşıladığını kolayca anlayabiliriz.
E-postanın kısa tarihçesinden sonra kullanımı konusuna odaklanacak olursak kullanıcılar için vazgeçilmez olan e-posta hizmeti ne kadar güvenlidir? Günlük hayatımızda aldığımız kararları ve davranışlarımızı etkileme gücü olan e-postalar konusunda ne biliyoruz? Herhangi bir kullanıcının istediği mail adresini kullanıp size mail atabileceğini veya sizin mail adresinizi kullanıp e-posta gönderebileceğinin farkında mısınız? Protokolün doğası gereği bu engellenememekte ama maillerin kaynakları tespit edilebilmektedir. Her kurumun ve şirketin mail sistemi basit olabildiği gibi karmaşık bir yapıda da olabilir. Dışarıdaki bir kullanıcının iç sistemi bilmesine imkan yoktur. Ama siyah bir kutu olarak düşünürsek mail sistemini, bazı etkilere belli tepkiler vermek zorundadır. Bu yazıda e-posta adresini sorgularken bir sonuç olarak mail sistemini de sorgulayacağız.
E-postalarda kullanıcıların okuduğu body (gövde) haricinde header (başlık) kısmı vardır. E-postayı gönderen kişi ve alan kişi arasında e-postanın takip ettiği yolu bu header kısmından anlayabiliriz. Başlık kısmı normalde gözükmez. Eğer aldığınız e-postayı posta dosyası olarak kaydedip bir yazı editörü ile görüntülerseniz başlık kısmını görebilirsiniz veya işin daha kolayı Outlook Express kullanıyorsanız, maili açıp dosya menusundan özellikler menusuna seçip ayrıntılar sekmesine tıklarsanız mailin başlık kısmını görüntülersiniz. Mesela E-posta gönderen adres fusunx@basbakanlik.gov.tr olsun. Bu mesaj gerçekten başbakanlik.gov.tr’ den mi gelmiştir? İlk olarak hemen mail’in başlık kısmına bakmamız gerekir.
Return-Path:
Delivered-To: halilkeles"güzela"xxxxx.gov.tr
Received: (qmail 4440246 invoked from network); 24 Mar 2006 12:33:05 -0000
Received: from unknown (HELO virusgw.xxxx.gov.tr) ([10.200.200.xxx])
(envelope-sender
by webmail.xxxx.gov.tr (qmail-ldap-1.0233) with SMTP
for
Received: from (212.15.17.66) by virusgw.xxxx.gov.tr via smtp id 59f4_c3ed70b2_bb34_11da_8c64_0002b3c81b
Fri, 24 Mar 2006 14:50:26 +0200
From: "fusunx"
To:
Subject: Fw: Funny :)
Görüldüğü gibi maili xxxxx Bakanlığının mail sunucusuna gönderen ip numarası 212.15.17.66. Bu ip’nin adres çözümlemesi yapmamız için nslookup komutu kullanacağız. Windows XP kullanıcıları komut satırından bu komutu verebilirler.
debian:/var/log# nslookup
> 212.15.17.66
Server: 10.6.82.2
Address: 10.6.82.2#53
Non-authoritative answer:
66.17.15.212.in-addr.arpa name = host-212-15-17-66.boruxxxtelekom.com.tr
Bu ip’nin DNS kaydı gördüğünüz gibi başbakanlık.gov.tr ile alakası yok. Bundan emin olmak için basbakanlik.gov.tr’nin e-posta sunucusunun adres çözümlemesini yapalım.
debian:/var/log# nslookup
> basbakanlik.gov.tr (ip çözümlemesini yapıyoruz ama bizim ulaşmamız gereken mail sunucu adresleri)
Server: 10.6.82.2
Address: 10.6.82.2#53
Non-authoritative answer:
Name: basbakanlik.gov.tr
Address: 172.16.1.5
Name: basbakanlik.gov.tr
Address: 172.16.1.10
> set q=mx (Mail sunucuların çözümlemesini yapmamız için MX sorgusu yapılmalı bu yüzden sorgu tipimizi değiştiriyoruz.)
> basbakanlik.gov.tr
Server: 10.6.82.2
Address: 10.6.82.2#53
Non-authoritative answer:
basbakanlik.gov.tr mail exchanger = 10 erdek.basbakanlik.gov.tr. (başbakanlık.gov.tr uzantılı maillerin çıkacağı mail sunucusu)
E-postanın başlığında hiçbir şekilde erdek.basbakalik.gov.tr geçmemektedir.
Peki doğrulama yapmamız için bu yeterli midir? Çoğu zaman yeterli olmasına rağmen yeterli olmayabilir. Belki kullanıcılar dışarı mail atarken başka bir sunucu kullanıyorlardır veya aynı sunucunun bir başka ismi var olabilir. Şimdi bunu anlamak için kullanımda olamayacak bir mail adresine mail atalım. Örnek olarak asasasdsds@basbakanlik.gov.tr adresine boş bir mail atalim. Gelen cevabın başlığına bakıp inceleyelim. Bu şekilde mail atmamızın sebebi e-posta sunucusundan mail almak ve o sistemden alınacak e-postalarda başlığa girecek sistem bileşenlerini bulmaktır.
Delivered-To: halilkeles"güzela"xxxx.gov.tr
Received: (qmail 6176988 invoked from network); 27 Mar 2006 09:48:02 -0000
Received: from unknown (HELO virusgw.xxxx.gov.tr) ([10.200.200.100])
(envelope-sender <>)
by webmail.xxxx.gov.tr (qmail-ldap-1.03) with SMTP
for
Received: from (195.140.196.2) by virusgw.xxxx.gov.tr (xxxx Bakalığına ait server) via smtp
id 5060_42781de2_bd79_11da_92bc_0002b3c81b42;
Mon, 27 Mar 2006 13:05:48 +0300
Received: from ([172.16.1.5]) by pamukkale; Mon, 27 Mar 2006 12:54:35 +0300 (EEST)
From: postmaster@basbakanlik.gov.tr
To: halilkeles"güzela"xxxx.gov.tr
Message-ID: 011tbPCwl00000aca@erdek.basbakanlik.gov.tr (fusunx@basbakanlik.gov.tr ‘de göremediğimiz erdek.basbakanlik.gov.tr sunucusu headere girmiş.)
Subject: Delivery Status Notification (Failure)
Kalın harfle yazılmış ip bizim çıkış noktamız olacaktır. Bu ip’i kime aittir? Başbakanlık’tan çıkarken mailin başlığına düşen son ip budur. Bu ip’den sonra xxxx Bakanlığı’nın sistemine girmiştir bu mail.
http://www.ripe.net/whois sitesinden bu ip’yi sorgulayabiliriz. basbakanlik.gov.tr den gelen maillerin çıkış ip’si bu ip olmalıdır. Sorgu sonucunda kısaca şu karşılıkları alıyoruz.
inetnum: 195.140.196.0 - 195.140.199.255
netname: TC-BBA-NET
descr: T.C.BASBAKANLIK NET - TURKISH PRIME MINISTRY IT NETWORK
descr: This network is serving as the communications media among
descr: the Prime Ministry,State Ministries and some state
descr: institutions and as a means for accessing to Internet.
descr: Ankara-Turkey.
country: TR
Görüldüğü üzere 195.140.196.2 ip’si e-postada geçmiyor. Artık kesin bir şekilde bu mailin basbakanlik.gov.tr’ den gelmediğini söyleyebiliriz.
Eğer elimizde başlığına bakabileceğimiz güvenilir, basbakanlik.gov.tr’den gönderilmiş olan e-posta varsa analizimiz çok kısalacaktır.
basbakanlik.gov.tr uzantılı e-posta adresi olan gerçek bir kullanıcının gönderdiği e-posta başlığını inceleyelim.
Return-Path:
Delivered-To: xxx@xxxx.gov.tr
Received: (qmail 5914680 invoked from network); 24 Mar 2006 13:13:18 -0000
Received: from unknown (HELO virusgw.xxxx.gov.tr) ([10.200.200.100])
(envelope-sender
by webmail.xxxx.gov.tr (qmail-ldap-1.xxx) with SMTP
for
Received: from (195.140.196.2) by virusgw.xxxx.gov.tr via smtp
id 1faf_2c1a06b4_bb3a_11da_8e85_0002b3c81b42;
Fri, 24 Mar 2006 15:29:08 +0200
Received: from ([172.16.1.5]) by pamukkale; Fri, 24 Mar 2006 15:18:58 +0200 (EET)
Received: from dtopcuoglu ([10.1.6x.xxx]) by erdek.basbakanlik.gov.tr with Microsoft SMTPSVC(5.0.2195.6713);
Fri, 24 Mar 2006 15:14:26 +0200
Message-ID: <004a01c64f45$972993e0$ca45010a@xxx>
From: =?iso-8859-1?Q?xxxxxx?=
Bu e-postanın yolunu takip edelim.
10.1.6x.xxx ipli bilgisayardan Erdek.basbakalık.gov.tr e-posta sunucusuna bağlanılmış, e-posta 172.16.1.5 ipli bir ağ bileşeninden pamukkale sunucusuna ulaştırılmıştır. Sonra çıkış ip’si olarak 195.140.196.2 kullanıp xxxx Bakanlığı’na ulaşmıştır. fusunx@basbakanlik.gov.tr e-postasının başlığında bu şekilde bir yol yoktu. Görüldüğü gibi elimizdeki e-posta başlıklarını kullanıp komutlar kullanmadan e-postanın sahte bir e-posta olduğunu anladık.
Bizim burada yaptığımız aslında iki türlü analizdir. Birinci yöntem elimizde Başbakanliktan gelmiş bir e-posta olmadan göndereni meçhul e-postanın nerden geldiğini anlamak, ikincisi ise elimizde başbakanlıktan gönderilmiş e-posta vardır ve biz bu e-postanın başlığı ile elimizdeki e-postayı karşılaştırıyoruz. Sonuçta toparlayacak olursak varacağımız sonuç araştırdığımız e-postanın başbakanlığın e-posta sunucusundan gelmediğidir. Peki bu e-posta niye gönderilmiştir? Günümüzde yaygın olarak görülen ve geniş bant teknolojisinin yaygınlaşmasıyla daha kolay ve hızlı yayılan solucanlardan bir tanesi yol açmıştır. Bu tip programlar yerleştikleri bilgisayardan elde ettikleri adreslere e-posta göndermekte ve bu sayede daha çok bilgisayara bulaşmaya çalışmaktadır. Ülkemizde kişisel bilgisayar güvenliği tam olarak anlaşılmadığı için bu tip virüsler çokça görülmektedir. Bir olasılık da fusunx@basbakanlik.gov.tr adresinden insanlara sanki gerçek fusunx kullanıcısı gibi ulaşıp onları kandırmaktır. Bu yüzden bilinçli kullanıcıların aldıkları e-postalara göre davranışlarını ve düşüncelerini şekillendireceklerse e-postaların kaynaklarını sorgulamalarında fayda vardır ve e-postaların illaki görünen adresten gönderilmiş olmayacağının bilincinde olunmalıdır.
Investigation of the source of the received e-mail:
This paper is about the insecure nature of the e-mails. With using some basic commands, trying to show the people how they can understand the senders of the e-mails and from which servers they were originated.
Halil KELEŞ
Thursday, March 16, 2006
This post is one of my post in dansguardian mail list.
Now i will tell how you will receive of the denied
site from linux to your predefined mail address.
I find a script for sending mail. Thanks these guys:)
We will use this script and assign a job to crontab
file and
you will receive denied site when you want. But i dont advice you receiving big mail from the server. But you wonder how it is done, so i am telling.
STEP1
Firstly copy the mime_mail script below and save it in
/bin .
#!/usr/bin/perl -w
#
# simple program to send a text message with an
attachment
#
# William Julien
###
#
# Create a new option to choose message type (text |
html)
# 08/27/04 Daniel Bauermann
###
use strict; # turn on the strict pragma
use Getopt::Std; # use standard getopt to parse
options
$/ = undef; # turn on slurp mode
#
# scope local variables
#
my ($date, # the current date
$sendmail, # the sendmail command
$document, # the document text
%options, # program options
$filename, # a file to send
$file, # the content of a file
@filelist, # list files to send
$tolist, # list of comma separated
email addresses
$today, # today's date
$usage, # program usage
$man, # program man page
$subject, # email subject
$extent, # file extension
%mime_type, # list of supported
application context mime types
$mime_type, # current mime application
content type
$typemessage, # define type message (new
option)
$headertypemessage, # content type message (new
option)
);
#
# variable initializations
#
$man = <
mime_mail
DISCRIPTION
This program is a command line mailer that sends a
text file
description and one or more files in mime
attachments. On success,
mime_mail will work silently.
SYNOPSIS
mime_mail -h | -d document.txt -s "mail subject"
-u "user1 [,user2 ...]" -f "file1
[,file2 ...]" -t [text|html]
OPTIONS
-h
Displays a man page.
-d document.txt
Sends "document.txt" in the mail message body.
The file must
be a normal text file. If a "-" is provided as
an argument,
the input will be taken from stdin. If no "-d"
argument is
supplied, the attachment will be sent with the
message
"Please see the attached.".
-s "mail subject"
Sets the mail subject. The mail subject must
be quoted if the
subject contains any spaces.
-u user1,user2 ...
A comma separated list of email addresses or
aliases. Quotes
are required if the list contains any spaces.
-f file1,file2 ...
A comma separaed list of files to attach.
Quotes are required
if the list contains any spaces. The files can
be of any type.
The recognised application content types are
".doc", ".html",
,"htm",".xls", ".csv", ".pdf", ".rtf", and
".mdb".
-t [text|html]
Message type
William Julien
425-865-5511
MAN
$usage = <
Usage:
mime_mail -h | -d document.txt -s "mail subject"
-u "user1 [,user2 ...]" -f "file1 [,file2
...]" -t [text|html]
USAGE
$sendmail = "/usr/lib/sendmail";
if ( ! -f $sendmail ) {
die "Sorry -- cannot locate sendmail at
$sendmail.\nYou must edit $0\n";
}
$today = scalar(localtime());
%mime_type = ("doc" => "application/msword",
"txt" => "text/plain",
"htm" => "text/html",
"html" => "text/html",
"xls" => "application/vnd.ms-excel",
"csv" => "application/octet-stream",
"pdf" => "application/acrobat",
"rtf" => "application/rtf",
"mdb" => "application/vnd.ms-access",
);
#
# process program options
#
getopts('d:s:u:f:h:t', \%options) or die "$usage\n";
if ( defined $options{"h"} ) {
print "$man\n";
exit;
}
if ( defined $options{"f"} ) {
@filelist = split /\,/,$options{"f"};
foreach $file (@filelist) {
if (! -f $file) {
die "$0: cannot open $file\n";
}
}
} else {
die "$usage\n";
}
if ( defined $options{"d"} ) {
$document = $options{"d"};
if ( $document eq "-" ) {
$document =
} else {
if ( -f $document ) {
open F, "$document";
$document =
close F;
} else {
die "$0 error: cannot open $document\n";
}
}
} else {
$document = "Please see the attached.\n";
}
if ( defined $options{"s"} ) {
$subject = $options{"s"};
} else {
die "$usage\nError: No Subject\n";
}
if ( defined $options{"u"} ) {
$tolist = $options{"u"};
} else {
die "$usage\n$0 error: no subject specified\n";
}
#
# New option
#
if ( defined $options{"t"} ) {
$typemessage = $options{"t"};
} else {
$typemessage = "text";
}
if ( $typemessage eq "text" ) {
$headertypemessage = "Content-Type: text/plain;
charset=us-ascii\nContent-Transfer-Encoding: 7bit";
} else {
$headertypemessage = "Content-Type: text/html;\n
charset=\"iso-8859-1\"\nContent-Transfer-Encoding:
quoted-printable";
}
#
# End new option
#
open MAIL, "|$sendmail -t";
print MAIL <
Subject: $subject
Date: $today
Mime-Version: 1.0
Content-Type: multipart/mixed;
boundary="ThisRandomString"
This mail was formatted with mime_mail (wmj)
--ThisRandomString
$headertypemessage
$document
HEADER
foreach $filename (@filelist) {
$extent = $filename =~ /\.(\w+)$/ ? "\L$1" :
undef;
$mime_type = "application/octet-stream";
if ( defined $extent ) {
if ( defined $mime_type{"$extent"} ) {
$mime_type = $mime_type{"$extent"};
} else {
$mime_type = "application/octet-stream";
}
}
open F,"$filename";
$file =
close F;
$file = encode_base64($file);
print MAIL <
Content-Type: $mime_type; name="$filename"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$filename"
$file
FILE
}
print MAIL "--ThisRandomString--\n";
#
# send the mail
#
close MAIL;
#
# fin
###
sub encode_base64
{
use integer;
my $res = "";
my $eol = $_[1];
$eol = "\n" unless defined $eol;
pos($_[0]) = 0; # ensure
start at the beginning
while ($_[0] =~ /(.{1,45})/gs) {
$res .= substr(pack('u', $1), 1);
chop($res);
}
$res =~ tr|` -_|AA-Za-z0-9+/|; # `#
help emacs
# fix padding at the end
my $padding = (3 - length($_[0]) % 3) % 3;
$res =~ s/.{$padding}$/'=' x $padding/e if
$padding;
# break encoded string into lines of no more than
76 characters each
if (length $eol) {
$res =~ s/(.{1,76})/$1$eol/g;
}
return $res;
}
and save it to /bin
dont forget to use chmod
"chmod 777 mime_mail"
Now it is time for writing the script for the schecule
job.
STEP2
vi mailme
filename=$(date '+%H_%d_%m_%g') # you get the name for
the accesslog after you grep the denied site you
should move your #accesslog to a new filename in order
not to grep the same denied sites .
echo $filename #your new log name format is
hour_day_mouth_year
grep -nr 'DENIED'
/where/is/your/dansguardian/access.log
>/var/log/denied #you grep the denied site and put
them in this #file /var/log/denied
cp /where/is/your/dansguardian/access.log
/where/is/your/dansguardian/$filename #grepped logs move to new file $filename
0>/where/is/your/dansguardian/access.log #you clean the content of your access.log #and by doing that you will not grep again and again the same denied sites
mime_mail -s "deniedsite" -u yourmail@yourdomain -f
/var/log/denied
##now save this script to /bin
chmod 777 mailme
STEP 3
you will edit the crontab file by using "crontab -e"
For example you want receive this mail from your
system at 21:00 clock everyday
"minute" "hour day of month" "month" "day of week"
0 21 * * * mailme
save and exit
now you will start receiving mail from your linux at
21:00 o clock everyday. I hope it will help you
:)Before doing this dont forget the backup your logs.