Yaklasik bir aydir destek verdigim birkac sunucu uzerinde SPAM mesajlarla ilgili calismalar yapiyorum. Spam yakalama yazılımım(Spamassassin) çok iyi çalışıyor fakat bazen o kadar çok spam geliyor ki bunları yakalamak için sistem kaynaklarını fazlası ile tüketiyor. Ben de bu işi network seviyesinde halletmek için kolları sıvadım ve cesitli yöntemler denemeye başladım.
Calismalarimin bir ayaginda Spamlerin hangi ulkelerden geldigini belirlemek var. Bunun için spam yakalama yazılımlarının loglarından kaynak ip adreslerini alarak basit bir script(ıp-Ülke bulma islemi icin Gokhan Alkan sagolsun GeoIP ile birseyler yazdı) ile hangi ulkelere ait oldugunu bulduruyor ve her ülkenin ne kadar spam gönderdiğini hesaplıyorum.
Sonrasında spam gönderen ülkelerin ne kadar gerçek mail gönderdiğini hesaplayıp bu ülkelerin ip aralıklarına Grey listing uygulayacağım(Dogrudan grey listing çalıştırmıyorum ziragerçek maillerde yavaşlığa sebep oluyor). Böylece ilgili ülkeden gelen spam oranlarını düşürmeyi planlıyorum.
Aşağıdaki istatistikler günde ortalama 600.000 spam alan ve üzerinde sadece Türk firmalarına hizmet veren domainlerin olduğu spam yakalama yazılımlarından aldığım verileri içeriyor.
Görüleceği üzere Turkiye ikinci sırada. Bunun en temel sebebi zombi konumuna düşmüş ADSL aboneleri. TTNet’in bugünlerde duyurduğu çalışma sonrası bakalım bu oran değicek mi?
Vakit buldukça bu istatistikleri güncelleyeceğim ve spam üzerine yaptığım çalışmaların etkisini izleyeceğim.
Spam gönderme oranına göre ülkeler;
Brazil |
Turkey |
United States |
Korea, Republic of |
Russian Federation |
India |
China |
Poland |
Vietnam |
Romania |
Colombia |
Argentina |
Saudi Arabia |
Ukraine |
Spain |
Germany |
Thailand |
Italy |
United Kingdom |
Mexico |
Chile |
Pakistan |
Czech Republic |
Egypt |
Morocco |
Indonesia |
Bulgaria |
Portugal |
France |
Israel |
Peru |
Hungary |
Greece |
Kazakhstan |
Netherlands |
Philippines |
Slovakia |
Serbia |
Taiwan |
Japan |
Canada |
Dominican Republic |
Venezuela |
Algeria |
Iran, Islamic Republic of |
Macedonia |
Lithuania |
Australia |
Belarus |
Singapore |
Austria |
Uruguay |
Switzerland |
Guatemala |
South Africa |
Puerto Rico |
Satellite Provider |
Latvia |
Croatia |
Sweden |
Ireland |
Bolivia |
Hong Kong |
Palestinian Territory |
Denmark |
El Salvador |
Azerbaijan |
United Arab Emirates |
Costa Rica |
Bahrain |
Sri Lanka |
Slovenia |
Kuwait |
Malaysia |
Trinidad and Tobago |
Norway |
Bosnia and Herzegovina |
None |
Qatar |
Moldova, Republic of |
Libyan Arab Jamahiriya |
Panama |
Oman |
Cote D’Ivoire |
Senegal |
Montenegro |
Ecuador |
Uzbekistan |
Belgium |
Jamaica |
New Zealand |
Jordan |
Sudan |
Bangladesh |
Nigeria |
Mauritius |
Estonia |
Lebanon |
Ghana |
Maldives |
Cameroon |
Georgia |
Botswana |
Cambodia |
Angola |
Albania |
Cyprus |
Mongolia |
Macau |
Yemen |
Ethiopia |
Finland |
Luxembourg |
Haiti |
Antigua and Barbuda |
Honduras |
Kenya |
Cape Verde |
Kyrgyzstan |
Iceland |
Nepal |
Paraguay |
Nicaragua |
Lao People’s Democratic Republic |
Iraq |
Namibia |
Brunei Darussalam |
Armenia |
Burkina Faso |
New Caledonia |
Grenada |
Fiji |
Afghanistan |
Tanzania, United Republic of |
Bahamas |
Aruba |
Mozambique |
Barbados |
Suriname |
Netherlands Antilles |
Syrian Arab Republic |
Gabon |
Europe |
Malta |
Benin |
Saint Kitts and Nevis |
Uganda |
Madagascar |
Tajikistan |
Andorra |
Gibraltar |
Gambia |
Rwanda |
Asia/Pacific Region |
Congo, The Democratic Republic of the |
Belize |
Zimbabwe |
Faroe Islands |
Virgin Islands, U.S. |
Zambia |
Togo |
Saint Vincent and the Grenadines |
Northern Mariana Islands |
Djibouti |
Dominica |
Papua New Guinea |
Bermuda |
Mali |
Bhutan |
Malawi |
Equatorial Guinea |
Saint Lucia |
San Marino |
Lesotho |
Liechtenstein |
Cayman Islands |
Mauritania |
Turkmenistan |
Virgin Islands, British |
Niger |
Cuba |
Guinea |
Turks and Caicos Islands |
Guyana |
Sierra Leone |
Martinique |
Liberia |
Seychelles |
Burundi |
Sao Tome and Principe |
Swaziland |
Monaco |
Guam |
Tonga |
Anguilla |
Guadeloupe |
Somalia |
Central African Republic |
Reunion |
Solomon Islands |
American Samoa |
Palau |
Marshall Islands |
French Polynesia |
Guinea-Bissau |
Kiribati |
Tunisia |
Mayotte |
British Indian Ocean Territory |
Comoros |
Antarctica |
Selamlar,
Scripti paylaşmanız mümkün mü ?
Gokhan’in yazdigi script qsheff.log icindi ben sadece ip adreslerini bir dosyadan alip isleyecek sekilde duzenledim.
#!/usr/bin/python
import sys,re,GeoIP,sets
if not len(sys.argv) == 2:
print “usage zpam.py log_file”
sys.exit(37)
log_file=sys.argv[1]
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
IP_ADDR=[]
COUNTRY=[]
for line in open(log_file,”r”):
IP_ADDR.append(line)
sa = set(IP_ADDR)
for ip_address in sa:
country=gi.country_name_by_name(“%s”% ip_address)
COUNTRY.append(country)
sa1= set(COUNTRY)
for country in sa1:
print country,”:”,COUNTRY.count(country)
scriptin Orjinali:
#!/usr/bin/python
import sys,re,GeoIP,sets
if not len(sys.argv) == 2:
print “usage zpam.py log_file”
sys.exit(37)
log_file=sys.argv[1]
regexp=re.compile(“[0-9]{,2}\/[0-9]{,2}\/[0-9]{,4} [0-9]{,2}\:[0-9]{,2}\:[0-9]{,2}\: \[qSheff\] SPAM\,.*recvfrom\=([0-9\.]+)\,”)
gi = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE)
IP_ADDR=[]
COUNTRY=[]
for line in open(log_file,”r”):
if re.match(regexp,line):
IP_ADDR.append(re.match(regexp,line).group(1))
sa = set(IP_ADDR)
for ip_address in sa:
country=gi.country_name_by_name(“%s”% ip_address)
COUNTRY.append(country)
sa1= set(COUNTRY)
for country in sa1:
print country,”:”,COUNTRY.count(country)
[[email protected] ~]#
Merhaba,
Ben de zaten qsheff için düzenlemeyi düşünüyordum 🙂
Çok teşekkür ederim.
Türk Telekom 25’i blokladıktan sonraki halini de analiz edebilirsiniz. Bu verileri saklamanız güzel olmuş.
en kötülerde hep üst sıraları zorluyoruz
Pingback: Complexity is the enemy of Security | Nisan Ayı Spam Analizi