HTTP ve HTTPS Siteleri Alan Adıyla PfSense Altında Yasaklama

Bir okulun sistem yöneticisi olarak, internetten içeriği ne kadar filtrelemeniz gerektiği konusunda sürekli olarak karşı karşıyasınız. Bu soru, çocuklar ve gençlerin internete, okullarda, kulüplerde, kütüphanelerde, evde ya da herhangi bir başka kamu kurumunda erişime sahip oldukları her yerde cevaplandırılmalıdır. Bu konudaki görüşler çok çeşitlidir. % 100 koruma yoktur. Çocukları ve gençleri İnternet’i sorumlu bir şekilde nasıl kullanacaklarını öğretmek çok daha önemlidir. Bu çok büyük bir meydan okuma ve zaman alır. Ebeveynler ve eğitimciler bu görevle karşı karşıyadır ve çoğu zaman buna en iyi nasıl yaklaşacağını bilmezler. Özellikle ekranlarda her zaman göz önünde bulunamayacağınız okullarda, bir web filtresi harika bir yardımcıdır. Bazı ülkelerde, okullar için bir web filtresi bile yasalarca gerekli durumdadır. Ancak bazen sadece “Facebook”, “Netflix & Co.” gibi belirli web sitelerini engellemek gerekebilir. Bu nedenle, bu belgede size bir “pfSense” web filtresi nasıl kurulacağı anlatılacaktır.

Not: Bu yazıda pfsense kullanılarak farlı bir yolla http ve https siteleri yasaklanacaktır. Daha önce sitemizde farklı bir yöntem anlatılmıştır. İkisininde bir birine göre artı ve eksileri bulunmaktadır.

Ön açıklamalar

“PfSense”, birçok yerde kullanılan “yaygın bir açık kaynaklı güvenlik duvarıdır. “Squid” (bir vekil “Proxy” sunucusu) ve SquidGuard (gerçek bir web filtresi) yardımıyla, HTTP ve HTTPS bağlantılarını filtrelemek istiyoruz. Bu eğitim için öncelikle aktif bir “pfSense” kurulumunuzun olduğu varsayılmaktadır.

Nasıl çalışır

HTTP bağlantılarını filtrelemenin kurulumu çok kolay ve hızlıdır. HTTP bağlantılar şifrelenmediği için, bunları iyi incelemek ve dolayısıyla tamamen veya kısmen engellemek mümkündür. Günümüzde daha fazla web sitesi (hatta engellemek istediğiniz) “HTTPS” kullanıyor. Kullanıcının tarayıcısı ve web sunucusu arasında şifreli bir bağlantı “Let’s Encrypt” sayesinde artık herkes kendi web sitesi için ücretsiz bir sertifika oluşturabilir. Bu durum siteler içinde iyi bir şeydir. Çünkü güvenliği arttırır ve birçok saldırıyı imkânsız veya daha zor hale getirir. Bununla birlikte, istenmeyen içeriği daha da zorlaştırır.

Bu “sorun” iki şekilde çözülebilir:

  1. man-in-the-middle saldırısı

Bir yol bilinçli bir “man-in-the-middle” saldırısıdır. Proxy sunucusu HTTPS bağlantısını şifreler ve yeniden oluşturur. Bu, bağlantıyı görmelerine ve buna göre filtrelemelerine olanak tanır. Bu kavram çoğu web filtresi çözüm sağlayıcıları tarafından kullanılmaktadır. Buradaki problem, HTTPS bağlantısına olan bu derin müdahalenin, HTTPS tarafından sağlanan gerçek güvencenin artık garanti edilmediği anlamına gelmesidir. Bir kullanıcı, Proxy sunucusunun sertifikası güvenilir olduğunda farkı hemen hemen tanıyabilir. Ancak bu güvenlik aldatıcıdır. Gerçek içerik filtrelemeden bahsetmenin tek yolu olsa bile, bu çözüm tehlikeli, çok risklidir (uygulama üçüncül değildir) ve ülkeye bağlı olarak geçerli yasalarla (anahtar kelime verilerinin korunması ve gizliliği) uyumsuzdur. Bu nedenle, bu rota güvenlik ve ahlaki sebeplerden dolayı önerilmez.

  1. SNI üzerinden URL filtresi

Başka bir olasılık da SNI (Sunucu Adı Belirtimi) ile filtrelemektir. Tarayıcı ve web sunucusu arasında sorgulanmadan ve böylece şifreli bir bağlantı kurulmadan önce tarayıcı sorgulamak istediği alan adını (FQDN) gönderir. Bu kısım henüz şifrelenmemiştir ve bu nedenle (şeffaf) bir Proxy tarafından okunabilir ve filtreleme için kullanılabilir.

SNI’nın anahtar değişimi ve gerçek güvenli bağlantıdan önce gönderildiğini kolayca görebilirsiniz. Bu prensipten yararlanıyoruz ve HTTP bağlantıları için web filtresine ek olarak, HTTPS bağlantılarını “HTTPS” kuralını ortadan kaldırmadan ortadaki bir “man-in-the-middle” saldırısı ile bir URL filtresi de oluşturabiliriz.

Bu kılavuzda kullanılan sürüm ve paketler

  • pfSense 2.4.3-RELASE (amd64)
  • Squid paketi
  • SquidGuard paketi
  • Nano paketi kurulu
  • LAN: 10.10.10.1/24
  • Hostname: pfSense (Pfsense > General Setup)
  • Domain: localdomain (Pfsense > General Setup)

Genel Hazırlıklar

DNS ayarlarınızı yapın

  • System > General Setup
    • DNS Server Settings
      • DNS Servers: 1.1.1.1
      • DNS Servers: 1.0.0.1
      • Disable DNS Forwarder: Seçili Değil

“Disable DNS Forwarder -DNS İleticiyi Devre Dışı Bırak” seçeneğinin işaretini kaldırın. Bu seçeneğin işaretinin kaldırılmasının nedeni: “WPAD” özelliklerini DNS üzerinden herhangi bir tarayıcıya ulaştırmak için bu hizmeti kullanacağız.

SSH aktifleştirin

PfSense sisteminize bağlanmak için “SSH” seçeneğini aktifleştirin.

  • System > Advanced > Admin Access
    • Secure Shell
      • Secure Shell Server: Seçili

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Sertifika oluşturun

Squid’in “Man-In-The-Middle” alanında kullanımı için yeni bir sertifika (CA) ekleyin. Bunun için “System > Cert. Manger” adımlarını takip ederek açılan “CAs” sekmesindeyken “Add” düğmesine tıklayın. Açılan sayfada ayarlarınızı kendinize göre aşağıdaki gibi yapın.

  • System > Cert. Manager > CAs
    • Create / Edit CA
      • Descriptive name: AyhemCA (Sertifikanız (CA) için bir ad belirleyin. Bu isim istemciler tarafından görünecektir.)
      • Method: Create an internal Certificate Authority
    • Internal Certificate Authority
      • Key length (bits): 2048 (Maksimum uyumluluk için 2048 önerilir)
      • Digest Algorithm: 256 (SHA256 veya üstü bir değer kullanın)
      • Lifetime (days): 3650 (10 yıl olarak ayarlayın)
      • Country Code: TR
      • State or Province: yenimahalle
      • City: ankara
      • Organization: lena
      • Email Address: ersan73@gmail.com
      • Common Name: ayhem-ca

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Arama Motorları İçin Güvenli Arama

DNS için güvenlik duvarı kuralları oluşturun

Öncelikle bir HTTPS bağlantısına bakamadığımız için, örneğin bir Google aramasında istenmeyen resimler ve videolar görünebilir. Bu nedenle Google ve diğer arama motorları, güvenli bir mod (Güvenli Arama) sunuyor bizde bunu kullanmak istiyoruz.

DNS Çözümleyicisini aktifleştirin

Öncelikle “DNS Resolver” çözümleyicisini aktifleştirin. Bunun için “Services > DNS Resolver > General Settings” adımlarını takip ederek “DNS Resolver” sayfasının açılmasını sağlayın. Açılan bu sayfada aşağıdaki ayarları yapın:

  • General Settings
    • Enable: Seçili

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın.

Bağlantı yönlendireme kuralınızı ekleyin

Ağdaki bilgisayarların güvenlik duvarının DNS sunucusunu kullanabilmesi için tüm diğer DNS isteklerini güvenlik duvarına yönlendiren bir kural gerekir. Bunu yapmak için “Firewall > Nat” adımlarını takip edin. Açılan sayfadaki “Port Forward” sekmesindeki iki “Add” düğmesinden birine tıklatarak yeni bir kural oluşturun. Oluşturacağınız kural için aşağıdaki ayarları girin:

  • Edit Redirect Entry
    • Interface: LAN
    • Protocol: TCP/UDP
    • Destination: Any
    • Destination Port Range: DNS (53)
    • Redirect Traget IP: 127.0.0.1
    • Redirect Target Port: DNS (53)
    • Description: DNS yönlendirmesi

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın. Oluşturduğunuz kural sayfası aşağıdaki gibi görünmelidir.

Güvenlik kuralınızı doğru yere taşıyın

Şimdi yeni oluşturulmuş güvenlik duvarı kuralının doğru yerde olduğundan emin olmalısınız. Bunu yapmak için “Firewalls > Rules > LAN” altındaki güvenlik duvarı kurallarını açın. Oluşturduğunuz kuralın standart diğer kuralların üstünde olması gerekir. Bunun için oluşturduğunuz kuralı seçin ve sürükleyerek üste taşıyın.

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın. Oluşturduğunuz kural sayfası aşağıdaki gibi görünmelidir.

Bing ve Youtube için Ev Sahipliği

Şimdi güvenli aramaların hem Google hem de Bing için kullanıldığından emin olmak için bazı DNS girişleri oluşturacağız. Bunu yapmak için “DNS Resolver” çözümleyicisini tekrar kullanacağız. “Services > DNS Resolver” adımlarını takip ederek “General Settings” sekmesinin açılmasını sağlayın. Açılan bu sayfada “Host Overrides” grubu altındaki “Add” düğmesine tıklayarak gerekli geçersiz kılma eylemlerini ekleyin.

  • Host Override Options
    • Bing için
      • Host: www
      • Domain: bing.com
      • IP Address: 204.79.197.220
      • Description: Bing

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yeni kural eklemek için tekrar “Host Overrides” grubu altındaki “Add” düğmesine tıklayarak gerekli eylemleri ekleyin:

  • Host Override Options
    • Google için
      • Host: www
      • Domain: google.com
      • IP Address: 216.239.38.120
      • Description: Google

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın.

Google için ev sahipliğini geçersiz kılma

Google çok sayıda farklı alan adı kullanıyor ve bunları manuel olarak girmek çok uzun zaman alacaktır. İşte bu yüzden Google için farklı bir yol izliyoruz.

İlk olarak, SSH üzerinden “pfSense” sistemine giriş yapın. “Windows” altında “Putty” Linux altında bir terminal açarak “pfSense” sisteminize bağlanabilirsiniz. Örneğin “Linux” altında bağlanmak için aşağıdaki komutu verin:

ssh admin@10.10.10.1

Not: IP adresi sizde farklı olabilir.

Sisteme bağlandıktan sonra “8” seçeneğini seçip “Enter” tuşuna basın.

Şimdi “Google” için DNS girişlerimizi gireceğimiz bir dosya oluşturuyoruz. Bunu aşağıdaki adımları takip edebilirsiniz:

nano /var/unbound/google.conf

Açılan sayfada bir değişiklik yapmadan “CTRL+O” komutunu verip kaydetmek için “Enter” tuşuna basarak kaydedin. “CTRL+X” ile çıkış yapın.

Şimdi yeni oluşturulmuş dosyayı “Diagnostics > Edit File” alanını kullanarak düzenleyebilirsiniz. Bunu yapmak için “Browse” düğmesine tıklayın. Açılan alanda “/var/unbound/google.conf” yolunu takip ederek oluşturduğunuz “google.conf” dosyasının açılmasını sağlayın. Açılan alana aşağıdaki kodları kopyala yapıştır ile aktarın.

local-data: "www.google.ad A 216.239.38.120"

local-data: "www.google.ae A 216.239.38.120"

local-data: "www.google.com A 216.239.38.120"

local-data: "www.google.com.af A 216.239.38.120"

local-data: "www.google.com.ag A 216.239.38.120"

local-data: "www.google.com.ai A 216.239.38.120"

local-data: "www.google.al A 216.239.38.120"

local-data: "www.google.am A 216.239.38.120"

local-data: "www.google.co.ao A 216.239.38.120"

local-data: "www.google.com.ar A 216.239.38.120"

local-data: "www.google.as A 216.239.38.120"

local-data: "www.google.at A 216.239.38.120"

local-data: "www.google.com.au A 216.239.38.120"

local-data: "www.google.az A 216.239.38.120"

local-data: "www.google.ba A 216.239.38.120"

local-data: "www.google.com.bd A 216.239.38.120"

local-data: "www.google.be A 216.239.38.120"

local-data: "www.google.bf A 216.239.38.120"

local-data: "www.google.bg A 216.239.38.120"

local-data: "www.google.com.bh A 216.239.38.120"

local-data: "www.google.bi A 216.239.38.120"

local-data: "www.google.bj A 216.239.38.120"

local-data: "www.google.com.bn A 216.239.38.120"

local-data: "www.google.com.bo A 216.239.38.120"

local-data: "www.google.com.br A 216.239.38.120"

local-data: "www.google.bs A 216.239.38.120"

local-data: "www.google.bt A 216.239.38.120"

local-data: "www.google.co.bw A 216.239.38.120"

local-data: "www.google.by A 216.239.38.120"

local-data: "www.google.com.bz A 216.239.38.120"

local-data: "www.google.ca A 216.239.38.120"

local-data: "www.google.cd A 216.239.38.120"

local-data: "www.google.cf A 216.239.38.120"

local-data: "www.google.cg A 216.239.38.120"

local-data: "www.google.ch A 216.239.38.120"

local-data: "www.google.ci A 216.239.38.120"

local-data: "www.google.co.ck A 216.239.38.120"

local-data: "www.google.cl A 216.239.38.120"

local-data: "www.google.cm A 216.239.38.120"

local-data: "www.google.cn A 216.239.38.120"

local-data: "www.google.com.co A 216.239.38.120"

local-data: "www.google.co.cr A 216.239.38.120"

local-data: "www.google.com.cu A 216.239.38.120"

local-data: "www.google.cv A 216.239.38.120"

local-data: "www.google.com.cy A 216.239.38.120"

local-data: "www.google.cz A 216.239.38.120"

local-data: "www.google.de A 216.239.38.120"

local-data: "www.google.dj A 216.239.38.120"

local-data: "www.google.dk A 216.239.38.120"

local-data: "www.google.dm A 216.239.38.120"

local-data: "www.google.com.do A 216.239.38.120"

local-data: "www.google.dz A 216.239.38.120"

local-data: "www.google.com.ec A 216.239.38.120"

local-data: "www.google.ee A 216.239.38.120"

local-data: "www.google.com.eg A 216.239.38.120"

local-data: "www.google.com.et A 216.239.38.120"

local-data: "www.google.fi A 216.239.38.120"

local-data: "www.google.com.fj A 216.239.38.120"

local-data: "www.google.fm A 216.239.38.120"

local-data: "www.google.fr A 216.239.38.120"

local-data: "www.google.ga A 216.239.38.120"

local-data: "www.google.ge A 216.239.38.120"

local-data: "www.google.gg A 216.239.38.120"

local-data: "www.google.com.gh A 216.239.38.120"

local-data: "www.google.com.gi A 216.239.38.120"

local-data: "www.google.gl A 216.239.38.120"

local-data: "www.google.gm A 216.239.38.120"

local-data: "www.google.gp A 216.239.38.120"

local-data: "www.google.gr A 216.239.38.120"

local-data: "www.google.com.gt A 216.239.38.120"

local-data: "www.google.gy A 216.239.38.120"

local-data: "www.google.com.hk A 216.239.38.120"

local-data: "www.google.hn A 216.239.38.120"

local-data: "www.google.hr A 216.239.38.120"

local-data: "www.google.ht A 216.239.38.120"

local-data: "www.google.hu A 216.239.38.120"

local-data: "www.google.co.id A 216.239.38.120"

local-data: "www.google.ie A 216.239.38.120"

local-data: "www.google.co.il A 216.239.38.120"

local-data: "www.google.im A 216.239.38.120"

local-data: "www.google.co.in A 216.239.38.120"

local-data: "www.google.iq A 216.239.38.120"

local-data: "www.google.is A 216.239.38.120"

local-data: "www.google.it A 216.239.38.120"

local-data: "www.google.je A 216.239.38.120"

local-data: "www.google.com.jm A 216.239.38.120"

local-data: "www.google.jo A 216.239.38.120"

local-data: "www.google.co.jp A 216.239.38.120"

local-data: "www.google.co.ke A 216.239.38.120"

local-data: "www.google.com.kh A 216.239.38.120"

local-data: "www.google.ki A 216.239.38.120"

local-data: "www.google.kg A 216.239.38.120"

local-data: "www.google.co.kr A 216.239.38.120"

local-data: "www.google.com.kw A 216.239.38.120"

local-data: "www.google.kz A 216.239.38.120"

local-data: "www.google.la A 216.239.38.120"

local-data: "www.google.com.lb A 216.239.38.120"

local-data: "www.google.li A 216.239.38.120"

local-data: "www.google.lk A 216.239.38.120"

local-data: "www.google.co.ls A 216.239.38.120"

local-data: "www.google.lt A 216.239.38.120"

local-data: "www.google.lu A 216.239.38.120"

local-data: "www.google.lv A 216.239.38.120"

local-data: "www.google.com.ly A 216.239.38.120"

local-data: "www.google.co.ma A 216.239.38.120"

local-data: "www.google.md A 216.239.38.120"

local-data: "www.google.me A 216.239.38.120"

local-data: "www.google.mg A 216.239.38.120"

local-data: "www.google.mk A 216.239.38.120"

local-data: "www.google.ml A 216.239.38.120"

local-data: "www.google.com.mm A 216.239.38.120"

local-data: "www.google.mn A 216.239.38.120"

local-data: "www.google.ms A 216.239.38.120"

local-data: "www.google.com.mt A 216.239.38.120"

local-data: "www.google.mu A 216.239.38.120"

local-data: "www.google.mv A 216.239.38.120"

local-data: "www.google.mw A 216.239.38.120"

local-data: "www.google.com.mx A 216.239.38.120"

local-data: "www.google.com.my A 216.239.38.120"

local-data: "www.google.co.mz A 216.239.38.120"

local-data: "www.google.com.na A 216.239.38.120"

local-data: "www.google.com.nf A 216.239.38.120"

local-data: "www.google.com.ng A 216.239.38.120"

local-data: "www.google.com.ni A 216.239.38.120"

local-data: "www.google.ne A 216.239.38.120"

local-data: "www.google.nl A 216.239.38.120"

local-data: "www.google.no A 216.239.38.120"

local-data: "www.google.com.np A 216.239.38.120"

local-data: "www.google.nr A 216.239.38.120"

local-data: "www.google.nu A 216.239.38.120"

local-data: "www.google.co.nz A 216.239.38.120"

local-data: "www.google.com.om A 216.239.38.120"

local-data: "www.google.com.pa A 216.239.38.120"

local-data: "www.google.com.pe A 216.239.38.120"

local-data: "www.google.com.pg A 216.239.38.120"

local-data: "www.google.com.ph A 216.239.38.120"

local-data: "www.google.com.pk A 216.239.38.120"

local-data: "www.google.pl A 216.239.38.120"

local-data: "www.google.pn A 216.239.38.120"

local-data: "www.google.com.pr A 216.239.38.120"

local-data: "www.google.ps A 216.239.38.120"

local-data: "www.google.pt A 216.239.38.120"

local-data: "www.google.com.py A 216.239.38.120"

local-data: "www.google.com.qa A 216.239.38.120"

local-data: "www.google.ro A 216.239.38.120"

local-data: "www.google.ru A 216.239.38.120"

local-data: "www.google.rw A 216.239.38.120"

local-data: "www.google.com.sa A 216.239.38.120"

local-data: "www.google.com.sb A 216.239.38.120"

local-data: "www.google.sc A 216.239.38.120"

local-data: "www.google.se A 216.239.38.120"

local-data: "www.google.com.sg A 216.239.38.120"

local-data: "www.google.sh A 216.239.38.120"

local-data: "www.google.si A 216.239.38.120"

local-data: "www.google.sk A 216.239.38.120"

local-data: "www.google.com.sl A 216.239.38.120"

local-data: "www.google.sn A 216.239.38.120"

local-data: "www.google.so A 216.239.38.120"

local-data: "www.google.sm A 216.239.38.120"

local-data: "www.google.sr A 216.239.38.120"

local-data: "www.google.st A 216.239.38.120"

local-data: "www.google.com.sv A 216.239.38.120"

local-data: "www.google.td A 216.239.38.120"

local-data: "www.google.tg A 216.239.38.120"

local-data: "www.google.co.th A 216.239.38.120"

local-data: "www.google.com.tj A 216.239.38.120"

local-data: "www.google.tk A 216.239.38.120"

local-data: "www.google.tl A 216.239.38.120"

local-data: "www.google.tm A 216.239.38.120"

local-data: "www.google.tn A 216.239.38.120"

local-data: "www.google.to A 216.239.38.120"

local-data: "www.google.com.tr A 216.239.38.120"

local-data: "www.google.tt A 216.239.38.120"

local-data: "www.google.com.tw A 216.239.38.120"

local-data: "www.google.co.tz A 216.239.38.120"

local-data: "www.google.com.ua A 216.239.38.120"

local-data: "www.google.co.ug A 216.239.38.120"

local-data: "www.google.co.uk A 216.239.38.120"

local-data: "www.google.com.uy A 216.239.38.120"

local-data: "www.google.co.uz A 216.239.38.120"

local-data: "www.google.com.vc A 216.239.38.120"

local-data: "www.google.co.ve A 216.239.38.120"

local-data: "www.google.vg A 216.239.38.120"

local-data: "www.google.co.vi A 216.239.38.120"

local-data: "www.google.com.vn A 216.239.38.120"

local-data: "www.google.vu A 216.239.38.120"

local-data: "www.google.ws A 216.239.38.120"

local-data: "www.google.rs A 216.239.38.120"

local-data: "www.google.co.za A 216.239.38.120"

local-data: "www.google.co.zm A 216.239.38.120"

local-data: "www.google.co.zw A 216.239.38.120"

local-data: "www.google.cat A 216.239.38.120"

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

DNS kayıtlarınızın yerini gösterin

Son adım olarak DNS sunucumuza bu DNS kayıtlarını nerede bulması gerektiğini söyleyeceğiz. Bunu yapmak için ise DNS sunucusu ayarlarını “Services > DNS Resolver” adımlarını takip ederek açın. “General Settings” sekmesindeki “Display Custom Options” düğmesine tıklayın. Açılan “Custom options” alanına aşağıdaki satırları ekleyin.

server:
include: /var/unbound/google.conf

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın.

Artık arama motorlarımız yapılandırılmıştır. Bir sonraki adım, HTTP ve HTTPS için URL filtresi için içerik filtresini kurmaktır.

Squid Proxy ve SquidGuard Kurulumu

Kurulum

“PfSense” sisteminde “URL” adreslerinin filtrelemesini sağlamak için ağımızdan gelen tüm isteklerin yönlendirildiği bir Proxy sunucusuna ihtiyacımız vardır. Bunun için “Squid” kullanıyoruz. Adından da anlaşılacağı gibi filtreler için ise “SquidGuard” kullanılacaktır.

“Siytem > Package Manager” adımlarını takip ederek açılan sayfada “Available Packages” sekmesine geçiş yapın. Bu alanı kullanarak “Squid” ve “SquidGuard” paketlerini yükleyin.

HTTP için Transparent Proxy Ayarları

Http için şeffaf Proxy kurulumu çok kolaydır, sadece Squid’i HTTP Proxy içinde aktifleştirmek yeterlidir (ve kara listeyi squidguard’a yükleyin). Artık bu durumda tüm trafik, 3128 numaralı bağlantı noktasında proxy sunucunuza gitmelidir.

Şimdi gerekli son hazırlıkları yapıp istediğiniz kısıtlama veya serbest bırakmaları yapabilirsiniz.

“Services > Squid Proxy Server” adımlarını takip ederek Squid ayarlarını aktifleştirmek için ilk önce “Local Cache” sekmesini yapılandırmanız gerektiğini unutmayın. Açılan “Local Cache” sekmesinde aşağıdaki ayarları yapın.

Local Cache Sekmesi

  • Squid Hard Disk Cache Settings
    • Hard Disk Cache Size: Sabit diskinizin ne kadar alanının ayrılacağını belirleyin
  • Squid Memery Cache Settings
    • Memory Cache Size: Kullanılacak ram miktarını belirleyin

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

“Services > Squid Proxy Server” adımlarını takip ederek “General” sekmesine geçiş yapın. Bu alanda HTTP için şeffaf proxy ayarlarını yapın. Şeffaf bir proxy, ağınızdaki bilgisayarları ayarı ayrı yapılandırmamızı engellemektedir. Şimdi “General” sekmesinde aşağıdaki değişiklikleri yapın:

General Sekmesi

  • Squid General Settings
    • Enable Squid Proxy: Seçili
    • Proxy Interface (s): LAN
    • Allow users on interface: Seçili
  • Transparent Proxy Settings
    • Transparent http Proxy: Seçili
    • Transparent Proxy Interface (s): LAN

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. HTTP bağlantıları için şeffaf Proxy şimdi ayarlandı.

SquidGuard Ayarları

“SquidGuard”, içeriğin filtrelenmesinden sorumlu bileşendir. Her istek “SquidGuard” tarafından incelenir ve ardından isteği veya web sitesini engelleyip engellemeyeceğine karar verilir. Bunun için daha sonra yapılandırdığımız bir kara liste kullanıyoruz. Bundan önce, bazı genel ayarları tanımlayacağız.

“Services > SquidGuard Proxy Filter” adımlarını takip ederek açılan “General settings “sekmesinde aşağıdaki ayarlarınızı yapın:

  • General settings
    • General Options
      • Enable: Seçili
    • Logging options
      • Enable Log: Seçili
      • Enable log rotation: Seçili
    • Blacklist options
      • Enable Blacklist: Seçili
      • Blacklist URL: http://www.shallalist.de/Downloads/shallalist.tar.gz

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Kara ve beyaz liste oluşturma

Artık temel ayarlarla tamamlandığımıza göre, kara ve beyaz listeler oluşturmanız gerekir. Birçok kara listenin “URL” adresi zaten verilmiş durumdadır. Şimdi bunları “Blacklist” sekmesinden indirmelisiniz.

Kara liste dosyasını indirin

Bunun için “Blacklist” sekmesine geçiş yapıp “Download” düğmesine tıklayın. İndirme işlemi başlayacaktır. Ayrıca indirme işlemi bitmeden başka bir işlem yapmayın.

Kategorilerinizi oluşturun

Filtremizin çalıştığından emin olmak için, şimdi birkaç hedef kategoriyi tanımlamamız gerekmektedir. Bunu yapmak için “Target Categories” sekmesini açın ve “Add” düğmesine tıklayın.

Bu alanda açıkça izin verdiğimiz tüm alan adlarının beyaz listesini oluşturacağız. Burada tüm “Google” alan adları kullanılacak. Çünkü kullanıcının yukarıda belirtilen Güvenli Arama özelliğini atlamasını engellemek için diğer tüm arama motorlarını engelleyeceğiz. Bunun için aşağıdaki ayarları yapın:

  • Target categories
    • General Options
      • Name: Beyazliste
      • Domain List: Aşağıdaki adresleri bu alana kopyala yapıştır ile aktarın:
google.ac google.ad google.ae google.al google.am google.as google.at google.az google.ba google.be google.bf google.bg google.bi google.bj google.bs google.bt google.by google.ca google.cat google.cd google.cf google.cg google.ch google.ci google.cl google.cm google.cn google.co.ao google.co.bw google.co.ck google.co.cr google.co.hu google.co.id google.co.il google.co.in google.co.je google.co.jp google.co.ke google.co.kr google.co.ls google.com google.co.ma google.com.af google.com.ag google.com.ai google.com.ar google.com.au google.com.bd google.com.bh google.com.bn google.com.bo google.com.br google.com.bz google.com.co google.com.cu google.com.cy google.com.do google.com.ec google.com.eg google.com.et google.com.fj google.com.gh google.com.gi google.com.gr google.com.gt google.com.hk google.com.jm google.com.kh google.com.kw google.com.lb google.com.ly google.com.mm google.com.mt google.com.mx google.com.my google.com.na google.com.nf google.com.ng google.com.ni google.com.np google.com.om google.com.pa google.com.pe google.com.pg google.com.ph google.com.pk google.com.pr google.com.py google.com.qa google.com.sa google.com.sb google.com.sg google.com.sl google.com.sv google.com.tj google.com.tr google.com.tw google.com.ua google.com.uy google.com.vc google.com.vn google.co.mz google.co.nz google.co.th google.co.tz google.co.ug google.co.uk google.co.uz google.co.ve google.co.vi google.co.za google.co.zm google.co.zw google.cv google.cz google.de google-directory.co.uk google.dj google.dk google.dm google.dz google.ee google.es google.fi google.fm google.fr google.ga google.ge google.gg google.gl google.gm google.gp google.gr google.gy google.hn google.hr google.ht google.hu google.ie google.im google.iq google.is google.it google.je google.jo google.kg google.ki google.kz google.la google.li google.lk google.lt google.lu google.lv google.md google.me google.mg google.mk google.ml google.mn google.ms google.mu google.mv google.mw google.ne google.nl google.no google.nr google.nu google.off.ai googlepirate.com google.pl google.pn google.ps google.pt google.ro google.rs google.ru google.rw google.sc google.se google.sh google.si google.sk google.sm google.sn google.so google.sr google.st google.td google.tg google.tk google.tl google.tm google.tn google.to google.tt google.uz google.vg google.vu google.ws bing.com

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Yeni bir kategori daha oluşturun

  • Target categories
    • General Options
      • Name: Engel_Listesi
      • Domain List: facebook.com ersanyildirim.com

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Şu anki en son adım, bazı kurallar oluşturmaktır. Bunu “Common ACL” sekmesinden yapacaksınız. Daha sonra farklı kural kümelerinin bir listesini açmak için “Target Rules List” ndeki “+” işaretine tıklayın. Artık farklı kategoriler var ve beyaz listemiz burada görünüyor. Şimdi aşağıdaki ayarları yapıyoruz:

  • Common ACL
    • General Options
      • BeyazListe: whitelist
      • Engel_Listesi: deny
      • Default access [all]: allow

Diğer kategorileri istediğiniz gibi ayarlayabilirsiniz. Bunun için bazı örnekler:

  • Reklamları engellemek için (android ve ios dahil)
    • Block advertising:[blk_BL_adv]: deny
  • Proxy sitelerini engellemek için
    • [blk_BL_anonvpn]: deny
  • Pornografik siteleri engellemek için
    • Block pornography:[blk_BL_porn]: deny

Önemli Not: Bir kullanıcının bir sayfanın IP adresini girerek URL filtremizi atlamasını önlemek için, “Do not allow IP addresses in URL.” (URL’de IP adreslerine izin verme). Seçeneğini seçebilirsiniz. Eğer bu ayar sorun çıkarırsa tekrar devre dışı bırakmanız gerekir. Örneğin hata mesajları “Squid” hata mesajı değilde tarayıcı hata mesajı alıyorsanız bu seçeneği iptal edebilirsiniz.

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için “SquidGuard” programının baştan başlatılması gerekir. Bunun için “General settings” sekmesindeki “Apply” düğmesine tıklamayı unutmayın.

Test edin
HTTP bağlantıları için her şey ayarlandı. Artık kurulumu test edebilirisiniz. “LAN” ağınızdaki bir bilgisayarda herhangi bir şey ayarlanmaya gerek yoktur. Filtre zaten çalışmalıdır. Kara listelerimizden birinde görünen bir sayfayı ziyaret edersek, bu sayfa aşağıdaki gibi görünecektir:

WPAD kurulum ve ayarlarını yapın

“Wpad” hakkında daha fazla bilgi için aşağıdaki adresi ziyaret edebilirsiniz:

https://doc.pfsense.org/index.php/WPAD_Autoconfigure_for_Squid

Şimdi Windows altında “Putty” Linux altında bir terminal açarak “pfSense” sisteminize bağlanın. Örneğin Linux altında bağlanmak için aşağıdaki komutu verin:

ssh admin@10.10.10.1

Not: IP adresi sizde farklı olabilir.

Sisteme bağlandıktan sonra “8” seçeneğini seçip “Enter” tuşuna basın.

Ana dizine geçmek için aşağıdaki komutu verin:

cd /

Bir dosya oluşturacağız. Bu dosyamızın adı “wpad.da”. Bunun için aşağıdaki komutu verin:

nano /usr/local/www/wpad.da

Dosyayı kaydetmek için “Ctrl+O” ve çıkmak için ise “Ctrl+X” komutunu verin.

Oluşturduğumuz bu dosyaya iki tane yeni sembolik bağlantı dosyası oluşturacağız. Bunun için aşağıdaki komutları verin:

ln -s /usr/local/www/wpad.da /usr/local/www/wpad.dat

ln -s /usr/local/www/wpad.da /usr/local/www/proxy.pac

“PfSense” ekranında “Diagnostics > Edit File” adımlarını takip ederek oluşturduğunuz dosyayı düzenleyeceğiniz sayfayı açın. Bu sayfadaki “Browse” düğmesine tıklayın.

Şimdi yeni oluşturulmuş dosyayı “Diagnostics > Edit File” alanını kullanarak düzenleyebilirsiniz. Bunu yapmak için “Browse” düğmesine tıklayın. Açılan alanda “/usr/local/www/wpad.da” yolunu takip ederek “wpad.da” dosyasının açılmasını sağlayın. Açılan alana aşağıdaki kodları kopyala yapıştır ile aktarın.

function FindProxyForURL(url, host)
{
    if (isPlainHostName(host) ||
        shExpMatch(host, "*.local") ||
        isInNet(dnsResolve(host), "192.168.1.0",  "255.255.255.0"))
        return "DIRECT";
    return "PROXY 10.10.10.1:3128";
}

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Not: “Proxy” alanında sizdeki Ip adresi farklı olacaktır. PfSense sisteminizin LAN IP adresi bu alana yazılmalıdır.

“Services > DNS Resolver” adımlarını takip ederek yeni ana makine geçersiz kılmalarını ekleyin. Açılan bu alanda “Host Overrides” grubundaki “Add” düğmesine tıklayın ve açılan alanda aşağıdaki gibi değişikliklerinizi yapın:

  • Host Overrides Options
    • Host: wpad
    • Domain: localdomain (Pfsense > General Setup)
    • IP Adresi: 10.10.10.1 (pfSense LAN adresi)
    • Description: WPAD

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Ardından “Apply Changes” düğmesine tıklayın.

Daha sonra “Services > DHCP Server” adımlarını takip ederek “LAN” sekmesine geçiş yapın. “Additional BOOTP/DHCP Options” grubuna aşağıdaki kodları ekleyin:

number: 252 type: string value: "http://10.10.10.1/wpad.dat"

number: 252 type: string value: "http://10.10.10.1/wpad.da"

number: 252 type: string value: "http://10.10.10.1/proxy.pac"

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

Bu işlemler yapıldıktan sonra “wpad” sisteminin çalışıp çalışmadığını kontrol edin. Bunun için “LAN” ağınızda bulunan bir tarayıcıyı açıp adres satırına aşağıdaki adresleri yazıp kontrol yapın:

  • http://10.10.10.1/wpad.dat
  • http://10.10.10.1/wpad.da
  • http://10.10.10.1/proxy.pac

Tarayıcınız dosyaları indirmek için size soruyorsa veya içeriği web sayfasında sunuyorsa her şey çalışıyor demektir. Artık bu ortamınız “squid” ve “squid ayarlarını” almaya hazır demektir.

Not: Yukarıdaki adresleri tarayıcıların adres satırına yazdığınızda “SquidGuard” filtresine takılıyorsanız “Services > SquidGuard Proxy Filter > Common Acl” altındaki “Do not allow IP addresses in URL” seçeneğinin çek işaretini kaldırıp kaydedin ve “General settings” sekmesindeki “Apply” düğmesine tıklayarak tekrar deneyin.

Kullanıcıların Proxy kurulumunuzu atlamaması için iki yeni güvenlik duvarı daha eklemeniz gerekir. Bu kurallar LAN 80 ve 443 numaralı bağlantı noktalarını engellemesi içindir. Bunun için “Firewall > Rules > LAN” adımlarını takip edin. Açılan sayfada “Add” (üzerinde yukarı ok olan düğme) tıklayın ve açılan alanda aşağıdaki gibi ayarlarınızı yapın:

  • Edit Firewall Rule
    • Action: Pass
    • Interface: LAN
    • Address Family: IPv4
    • Protocol: TCP
  • Source
    • Source: any
  • Destination
    • Destination: any
    • Destination Port Range:
      • From: http (80)
      • To: http (80)

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Eklediğiniz bu kuralın sağındaki “Copy düğmesine tıklayarak yeni bir kural oluşturun ve aşağıdaki değişiklikleri yapın:

  • Edit Firewall Rule
    • Action: Pass
    • Interface: LAN
    • Address Family: IPv4
    • Protocol: TCP
  • Source
    • Source: any
  • Destination
    • Destination: any
    • Destination Port Range:
      • From: https (443)
      • To: https (443)

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin. Yaptığınız değişikliklerin uygulanması için ise açılan “Apply Changes” düğmesine tıklayın.

HTTPS bağlantılar için transparent proxy

Şimdiye kadar, şeffaf proxy sadece http ile çalışmaktaydı. Bu makalenin başında HTTPS bağlantılar için şifrelenmiş filtrelemedeki zorluklara işaret edilmiştir. Şimdi HTTPS için şeffaf bir proxy’yi etkinleştireceğiz. Bu, 443 numaralı bağlantı noktasındaki (HTTPS) tüm istekler için bir URL süzgecini etkinleştirmemize olanak tanıyor, Ancak içeriği analiz edemeyeceğimiz. Bu durum bu seçeneğin bir dezavantajıdır. Ayrıca güzel bir hata sayfası yapamıyoruz. Bunun yerine, tarayıcı bir sertifika hata mesajı görüntülüyor.

İlk olarak, HTTPS için şeffaf proxy’yi etkinleştiriyoruz. Bunu yapmak için “Services > Squid Proxy Server” altındaki “General” sekmesine geçiş yapın. Proxy ayarlarını açmak için “SSL Man in the Middle Filtering” grubunu aşağıdaki gibi ayarlayın:

  • SSL Man in the Middle Filtering
    • HTTPS / SSL Interception: Seçili
    • SSL/MITM Method: Splice All
    • SSL Intercept Interfaces: LAN
    • CA: AyhemCA (Oluşturduğunuz sertifika)

Yaptığınız değişiklikleri kaydetmek için “Save” komutunu verin.

LAN ağlardaki kullanılan sistemlerinizin ayarları otomatik olarak algılayacak şekilde kalmalıdır. Bunun için: Klavyeden “Windows” tuşuna basıp çekin açılan Windows listesindeyken “Proxy Sunucusunu Yapılandırın” yazıp çıkan başlığa tıklayın. Bu durumda “İnternet Özellikleri” penceresi açılacaktır. Açılan bu pencerede “Bağlantılar” grubu içerisinde en alt sağ köşede bulunan “Yerel Ağ Ayarları” düğmesine tıklayıp “Yerel Ağ (LAN) Ayarları” penceresinin açılmasını sağlayın. Ayarlarınızı aşağıdaki gibi yapın:

  • Otomatik Yapılandırma
    • Ayarları otomatik olarak algıla: Seçili
    • Otomatik yapılandırma komut dosyası kullan: Seçili Değil
  • Ana sunucu
    • Yerel ağınız için Proxy sunucu kullanın: Seçili DEĞİL

Yaptığınız değişiklikleri kabul etmek için 2 sefer “Tamam” düğmesi ile ilerleyin.

Not: Ayrıca, bağlanamayan her program için Proxy ayarını da ayarlamanız gerekir. Bağlanamayan ve Proxy ayarlarına sahip olmayan programlarınız varsa, güvenlik duvarı “Aliases” adlarını ayarlamanız gerekir. Bunun için “Firewall > Aliases > IP” adımlarını takip ederek hedef sunucu ipsini ekleyin. Engellenen IP’leri bulmanıza yardımcı olmak için güvenlik duvarını dinleyen “Wireshark” programını kullanın veya güvenlik duvarı blok kuralınızda bu kurala tabi tutulan Günlük paketlerini aktifleştirin. Ne olduğunu kontrol etmek için http://ip-lookup.net/index.php adresini kullanın. Alias’lara eklenen bir etki alanının parçasıysa, etki alanı ekleyin.

Şimdi her şey ayarlandı ve HTTPS bağlantılarını da test edebiliriz. Örneğin daha önceden “SquidGuard” altında (Services > SquidGuard Proxy Filter > Target categories > Engel_Listesi) engellediğiniz “facebook.com veya ersanyildirim.com” sitelerine girmeye çalışın.

Daha önce yazıldığı gibi, bu sefer HTTP bağlantılarındaki gibi bilgilendirici bir hata mesajı almıyoruz, ancak “https” bağlantılarında tarayıcıdan aşağıdaki gibi bir uyarı almalısınız:

Bu hata mesajı çok anlamlı olmasa da, istenmeyen sayfaları engellemeye yönelik gerçek hedefimize ulaştık.

Sonuç

Artık LAN ağımızdaki (veya WLAN) tüm ağ trafiğini filtreleyen bir sistem kurduk. Bu, kara listeler kullanılarak tanımlanmış tüm sayfaları engelleyecektir.

Bu kilitlerin artıları ve eksileri farklı pozisyonlara sahiptir. Her durumda, teknik olarak %100 çözülemeyecek ve çözülmemesi gereken bir sorundur, çünkü daha çok “internet” ortamıyla sorumlu bir şekilde başa çıkabilmek için (genç) insanların eğitilmesi meselesidir. Bu hedefe ulaşmak için tek başına böyle bir filtreleme yapmak kesinlikle doğru bir yol değildir. Çocukların ve gençlerin sansüre ve filtrelemeye “alışık” olmaları da bazıları tarafından eleştirel olarak görülmektedir.

Öte yandan, uygun olmayan içeriğin miktarını sınırlayabiliyorsanız, okullar, kütüphaneler veya ev için özellikle yararlıdır. Bazı ülkeler de böyle bir filtre yasalara göre yazmaktadır.

Kaynak:

Bir Cevap Yazın