Kategoriler
Kodlama

Cloudflare ile DigitalOcean ASN engellemek

DigitalOcean ASN engeleyip sunucu yükünüzü minimuma düşürebilirsiniz.

Özellikle WordPress gibi CMS’lerin düzenli yapısına göre ayarlanıp, programatik olarak taramak veya açıkları bulmak üzere saldırılar gerçekleştirmek gibi şekillerde sorgular göndermek için herhangi bir dil ile bot/crawler yazmak yada yazılmışını alıp kullanmak inanılmaz basit bir şey, evde hayatımda gördüğüm en tembel hayvan olan kedim bile bunu yapabilir.

Böyle olunca bu işi yapacak bir sunucu/hosting barındırma sahip olunması yeterli oluyor ve bunu en ucuz, en çok lokasyonda ve en çok limit/özelliklere sahip bir yer için baktığımızda hiç kuşkusuz karşımıza DigitalOcean çıkmaktadır, diğer rakiplerine bakıldığında aynı özelliklerde olan örneğin Google Cloud 4-5 katı pahalı, Amazon ve diğerleri minimum 3 katı daha pahalıdır. Ayda 5 dolar vermek yerine bu iş için kimse Amazon veya Google’ın cloud servisine gidip 30 dolar vermez.

Bu noktada web sitelerinin gerçek kullanıcılar için yapıldığını düşünürsek neden sunucumuzun yani parasını ödediğimiz web sitemizin barındırmasının kaynaklarını saçma sapan botlara, zararlı sorgulara harcatalım? Ben bir sebep göremiyorum, dolayısıyla Cloudflare’ın deyimiyle “bilinen botlar(cloudflare known bots list)” harici tüm insan olmayan kullanıcıları ya tamamen engellemek veya bunlara bir limit bir Firewall kuralı ile sınırlamak çok mantıklı bir çalışma olacaktır.

Cloudflare ile WordPress güvenliği: Cloudflare Firewall ile WordPress sitenizi korumaya alın.

Neden?

İlk neden maliyettir, sunucu kullanımı düşeceği için web sitenizin büyüklüğüne ve trafik miktarına göre elbet muhtemelen %50-60’a kadar daha az ödeyeceksinizdir, örneğin günlük gerçek kullanıcı olarak 10.000 ziyaret elan bir web siteniz var ise sunucu için aylık 150 dolar veriyorsanız bu kabaca 100 dolara çok rahat düşer, 50 dolarınızın çalınmasını engellemiş olursunuz onu başka yere kullanabilirsiniz.

Diğer neden güvenlik, WordPress gibi açık kaynak CMS’ler bildiğiniz gibi birçok açıkları bulunan sistemlerdir, düzenli olarak güncellenmesi gerekir ve web siteniz 5-6 versiyon önceki eski bir WordPress versiyonunu kullanıyorsa ve bu zararlı botlar bunu fark ederse bu büyük bir risk, aynı şey kullanılan eklenti ve temalarda da geçerlidir hatta temalar tümünden daha riskli diyebilirim.

Diğer birkaç başka neden de var ancak ilgilenebileceğiniz bir nedeni de SEO olabilir, web sitenizin bu kötü niyetli borlar tarafından sorgulara maruz kalması hem çok daha yavaş çalışmasına hem de var olsun veya olmasın istenmeyen bazı sayfaların arama motoru tarafından indekslenmesi veya çöp sayfaların oluşmasına neden olabilir bu da sizin sitenizin indeks kalitesini düşürecektir.

Nasıl?

Öncelikle Cloudflare zaten kullanıyorsunuz varsayıyorum, kullanmıyorsanız https://www.cloudflare.com/ adresine gidip gerekli işlemleri yapıp kullanmaya başlayabilirsiniz.

İlk olarak yapmanız gereken “Cloudflare Firewall Rules” nasıl çaşlıştığını ve mantığını biraz vakit ayırıp okumak ve anlamak esasen tüm bilgiler orada yer almaktadır. Ardından benim başlıkta bahsettiğim gibi DigitalOcean ve belki birkaç başka da ASN engelleyerek ilgili firmaların topluca “tüm ip adreslerini” engellemiş olursunuz, bu herhangi bir ülkeyi engellemekten daha etkilidir zira bu ASN’ler ülkelere bağlı değil, herhangi bir ülkede olabilirler örneğin DigitalOcean ASN engellediğinizde dünyanın her yerindeki ip DigitalOcean ip adreslerini engellemiş olursunuz bu Singapur da olabilir Rusya’da olur Fransa’da olur Çin’de olur.

Elbette sadece DigitalOcean değil, bakıldığında bu kötü niyetli botlar başka sunuculardan da gelmektedir, ancak bu denli ASN olarka engellemeye değer bir yoğunluğu bulunmamaktadır, dolayısıyla fayda merkezli bakıldığında pek gerekli değil. Bir diğer konu; Amazon örneğin DigitalOcean kadar fazla kötü bot barındırmaktadır ancak Amazon’un ASN’ını engellediğinizde(Amazon pahalıdır) kötü olmayan iyi botları ve uygulamaları da web sitenize girişe kapatmış olacağınızdan bunu yapmak pek mantıklı değil, genelde kaliteli iyi uygulamalar Amazon veya benzeri daha kaliteli servislerle çalışırlar, yazımın başında da dediğim gibi DigitalOcean ASN engelleme sebebimiz çok ucuz olması ve tabiri caizse dünyadaki bütün boş beleş şahısların ve firmaların onu kullanıyor olması.

Kodlar

Ben örnek bir çalışmamı sizlerle paylaşıyorum, dilerseniz Cloudflare Firewall Rules dokümanlarını okuduktan sonra kendinize göre özelleştirme imkanınız var. Ayrıca birkaç kaynak, araç linki vereceğim buralardan da faydalanabilirsiniz. https://archive.md/noxEL

(ip.geoip.asnum in{14061 60068 207709 41564 211252 45090 16247 198375 12722 42708 208046 41436 200019 204548 24940 45544 136907 37907 212238 16276 38197 46664 16628 4837 4811 207566 9009 16509 51167 212552 35913 58065 62240 199524 63949 37963 14618 210079 16814 212953 51852 203377}and not cf.client.bot and not http.request.uri contains ".jpg" and not http.request.uri contains ".JPG" and not http.request.uri contains ".png" and not http.request.uri contains ".gif" and not http.request.uri contains ".jpeg" and not http.request.uri contains ".bmp" and not http.request.uri contains ".webp" and not http.request.uri contains ".webm" and not http.request.uri contains ".mp4" and not http.request.uri contains ".js" and not http.request.uri contains ".css" and not http.request.uri contains ".svg" and not http.request.uri contains ".html" and not http.request.uri contains ".htm" and not http.request.uri contains ".pdf" and not http.request.uri contains ".ico" and not http.request.uri contains ".txt" and not http.request.uri contains ".xml" and not http.request.uri contains ".woff" and not http.request.uri contains ".woff2" and not http.request.uri contains ".mp3" and not http.request.uri contains ".webmanifest" and not http.request.uri contains "/api/oembed/" and not http.request.uri contains "cert.pem.msg" and http.request.uri contains ".") or (ip.geoip.asnum in{14061 60068 207709 41564 211252 45090 16247 198375 12722 42708 208046 41436 200019 204548 24940 45544 136907 37907 212238 16276 38197 46664 16628 4837 4811 207566 9009 16509 51167 212552 35913 58065 62240 199524 63949 37963 14618 210079 16814 51852 203377}and http.request.uri contains "wlwmanifest.xml") or (ip.geoip.asnum in{14061 60068 207709 41564 211252 45090 16247 198375 12722 42708 208046 41436 200019 204548 24940 45544 136907 37907 212238 16276 38197 46664 16628 4837 4811 207566 9009 16509 51167 212552 35913 58065 62240 199524 63949 37963 14618 210079 16814 212953 51852 203377}and http.request.uri eq "//") or (ip.geoip.asnum in{14061 60068 207709 41564 211252 45090 16247 198375 12722 42708 208046 41436 200019 204548 24940 45544 136907 37907 212238 16276 38197 46664 16628 4837 4811 207566 9009 16509 51167 212552 35913 58065 62240 199524 63949 37963 14618 210079 16814 212953 51852 203377}and http.request.uri.path in{"/wp-admin/" "/wp-includes/" "/plugins/" "/wp-json/" "/admin/" "/administrator/" "/phpunit/" "/phpinfo/" "/_profiler/" "/tmp/" "/cpanel/" "/components/" "/config/" "/dashboard/" "/wp-content/plugins/" "/login/" "/wp/" "/site/"}) or (ip.geoip.asnum in{14061 60068 207709 41564 211252 45090 16247 198375 12722 42708 208046 41436 200019 204548 24940 45544 136907 37907 212238 16276 38197 46664 16628 4837 4811 207566 9009 16509 51167 212552 35913 58065 62240 199524 63949 37963 14618 210079 16814 212953 51852 203377}and not http.request.uri.query contains "precache" and not http.request.uri.query contains "amp" and not http.request.uri.query contains "utm_" and not http.request.uri.query contains "s" and not http.request.uri.query contains "url" and http.request.full_uri contains "?")

Yukarıdaki kurallar dediğim gibi örnektir.

Bir IP adresi ile ilgili onun iyi/kötü olduğunu kontrol etmek için abuseipdb.com kullanınız. En güvenilir ve güncelidir benzerini hiç aramayın hatta projeniz büyük ve önemli ise bunun API’sini kullanmanız zaten kesin çözüm, elbet profesyonel bir güvenlik uzmanınız yoksa bu işlere hiç girmeyin canınız sıkılmasın derim(beni kiralayabilirsiniz 🙋🏻‍♂️).

AbuseIPDB Contributor Badge
abuseipdb

Bir IP adresi ile ilgili range/ASN gibi bilgileri öğrenmek için ipalyzer.com tavsiye ederim ancak birçok muadili başka yeri de kullanabilirsiniz.

Sonuç

Sonuç olarak DigitalOcean ASN tek başına sadece .php dosyalarına erişimini engellemiş olsanız bile(siteyi komple gezebilir sadece .php dosyalarına sorgu göndermez) önemli bir kazanım elde edeceğiniz garanti edebilirim, genç arkadaşlar neden bu kadar emin konuşuyorum diye merak etmiş olabilir elbette, cevabım da onlara bir ders olsun isterim; bilim ve teknolojide bazı şeyler teoride bilinebilir ise de kanıtlanması için mutlaka deney gerekir, hatta deney yapılmış olsa bile bazı durumlarda farklı sonuçlar elde edilebileceği için ilgili iş için zaman gerekir, bu zamanı harcayan ve benim gibi paylaşan(makale) kişiye de işte akademideyse(bizim gibi az gelişmiş veya gelişmemekte ısrarcı ülkeler harici) profesör denir, akademisyen değilse benim gibi biriyse işin orospusu denir 🙂 Bu yüzden zaman harcadığım ve bildiğim meselede emin konuşurum. Bknz: Einstein’s theory of General Relativity.

Bu arada…

Bu arada bir şeyi çok iyi yapıyor olmanız sizi “hoca” yapmaz veya bir şeyi çok iyi bildiğiniz için bunu insanlara öğretmek zorunda değilsiniz ve tersi bir şeyi insanlara öğretiyorsanız o şeyi pratikte çok iyi yapıyor veya biliyor olduğunuz kesin değildir, bu sadece “Udemy” benzeri sistemlerin ek iş olarak para kazanmak isteyen kişiler üzerine yaptığı pazarlama tekniği ile tıpkı şok marketin üst katının üniversite olması hesabı adını soyadını söyleyebilen herkesi hoca gibiymiş göstermesi algısı o kadar, günümüzün bir virüsü, Youtube’da öyle ama ücretsiz ve bazen eğlenceli olabiliyor.

Çok uzatmış olabilirim, buraya kadar okuduysanız teşekkür ederim ve kanalıma veya herhangi bir yerime abone olup like etmek zorunda değilsiniz, ben burada zaten kendime notlar bırakıyorum (genç arkadaşlar hariç)pek umurumda olduğunuzu söyleyemem. Çok meraklıysanız Twitter’dan şugar beybi, dayı, momy tekliflerine her daim açığım, bugün MacBook Pro çıktı 68bin TL vücudumu satmadan alabileceğim bir cihaz değil, beni yormayın.