
PfSense ile 5651 Yasasına Uygun Log İmzalama
PfSense ile 5651 Yasasına Uygun Log İmzalama
Bu yazıda Pfsense Firewall ile 5651 yasasına uygun şekilde logların imzalanmasından bahsedeceğim.
Kurulumu yapacağımız yapıda Pfsense Firewall 2.6.0 ve Debian 10 Syslog server bulunmakta. Pfsense üzerinde bulunan logları syslog sunucumuza aktarıp imzalama işlemini gerçekleştireceğiz.
Kurulum için aşağıdaki scriptleri, programları ve servisleri kullanacağız.
- Pfsense e2guardian
- Pfsense Squid
- Log imzalama Scriptleri
- Rsyslog
- OpenSSL
- Cron
Script dosyaları için lütfen iletişim kısmından form doldurarak veya mail adresime mail atarak iletişime geçin. Mail : kulmert@gmail.com
5651 Sayılı Kanun
Kanunun tam metnine buradaki adres üzerinden ulaşabililirsiniz.
MADDE 4 – (1) İnternet toplu kullanım sağlayıcılarının yükümlülükleri şunlardır;
(Firmalar, oteller, okullar, yurtlar, kafeler, üniversite vs)
- Konusu suç oluşturan içeriklere erişimi önleyici tedbirleri almak.
- Erişim kayıtlarını elektronik ortamda kendi sistemlerine kaydetmek ve iki yıl süre ile saklamak.
- İç IP Dağıtım Loglarını elektronik ortamda kendi sistemlerine kaydetmek.
- Kamuya açık alanlarda internet erişimi sağlayan toplu kullanım sağlayıcılar, kısa mesaj servisi (sms) ve benzeri yöntemlerle kullanıcıları tanımlayacak sistemleri kurmak.
MADDE 15 – (1) Erişim sağlayıcı yükümlülükleri;
- Sağladığı hizmetlere ilişkin olarak, Başkanlığın Kanunla verilen görevlerini yerine getirebilmesi için; erişim sağlayıcı trafik bilgisini iki yıl saklamakla, bu bilgilerin doğruluğunu, bütünlüğünü oluşan verilerin dosya bütünlük değerlerini (hash) zaman damgası ile birlikte muhafaza etmek ve gizliliğini temin etmekle. (Türk telekom, Vodafone, Turkcell, Avea vb.)
MADDE 16 – (1)Yer sağlayıcının yükümlülükleri;
- Yer sağlayıcı trafik bilgisini iki yıl saklamakla, bu bilgilerin doğruluğunu, bütünlüğünü oluşan verilerin dosya bütünlük değerlerini (hash) zaman damgası ile birlikte saklamak ve gizliliğini temin etmekle.
- Web sitelerinin internet üzerinden yayınlanmasını sağlayanlar (Temel olarak hosting hizmeti verenler)
MADDE 17 – (1)Erişimin engellenmesi kararı ve yerine getirilmesi;
İnternet ortamında yapılan ve içeriği aşağıdaki suçları oluşturduğu hususunda yeterli şüphe sebebi bulunan yayınlarla ilgili olarak erişimin engellenmesine karar verilir: Aşağıdaki konuları firewall üzerinde veya başka bir cihaz, yöntem kullanarak yasaklamanız (fitreleme) gerekir.
- İntihara yönlendirme,
- Çocukların cinsel istismarı,
- Uyuşturucu veya uyarıcı madde kullanılmasını kolaylaştırma,
- Sağlık için tehlikeli madde temini,
- Müstehcenlik,
- Fuhuş,
- Kumar oynanması için yer ve imkân sağlama,
Pfsense Ayarları
Öncelikle pfsense makinemizde Squid, DHCP ve e2guardian servislerinin aktif olması ve gerekli konfigürasyonların yapılması gerekiyor. DHCP, http ve https logları imzalamamız bizim için yeterli olacaktır.
Logların Aktarımı
Pfsense üzerinde e2guardian paketinin kurulumu hakkında bilgilere buradan ulaşabilirsiniz.
Pfsense üzerinde alınan DHCP ve squid loglarını syslog sunucumuza göndermek için “Status/System Logs/Settings” kısmında en alt satırda bulunan “Remote Logging Options” kısmına gelerek “Remote log servers” kısmına syslog ip adresini yazın. IP_ADRESS:514

Daha sonrasında Package /Proxy Server: General Settings / General menüsünde en alt satırda bulunan “Show Advanced Options” butonuna tıklayarak aşağıdaki satırı “Custom Options (Before Auth)” ve “Custom Options (After Auth)” alanlarına ekleyin.
access_log syslog:LOG_LOCAL2

Daha sonrasında 514 portu üzerinden Syslog sunucumuza göndereceğimiz DHCP ve Squid logları Syslog sunucumuzda karşılamız gerekiyor bunun için öncelikle Syslog sunucumuza Rsyslog paketini kurmamız gerekiyor. Aşağıdaki komutla paketin kurulumunu gerçekleştirin.
apt install rsyslog
Pfsense cihazına WinSCP ile bağlanıp /var/etc/syslog.conf dosyasını aşağıdaki gibi revize edin. ip adresi yazan kısma syslog sunucunuzun ip adresini yazıp kaydedin.
# Automatically generated, do not edit!
!*
auth.*;authpriv.* /var/log/auth.log
!radvd,routed,zebra,ospfd,ospf6d,bgpd,watchfrr,miniupnpd,igmpproxy
*.* /var/log/routing.log
!ntp,ntpd,ntpdate
*.* /var/log/ntpd.log
!ppp
*.* /var/log/ppp.log
!poes
*.* /var/log/poes.log
!l2tps
*.* /var/log/l2tps.log
!charon,ipsec_starter
*.* /var/log/ipsec.log
!openvpn
*.* /var/log/openvpn.log
!dpinger
*.* /var/log/gateways.log
!dnsmasq,named,filterdns,unbound
*.* /var/log/resolver.log
!dhcpd,dhcrelay,dhclient,dhcp6c,dhcpleases,dhcpleases6
*.* /var/log/dhcpd.log
*.* @192.168.2.14:514
!hostapd
*.* /var/log/wireless.log
!filterlog
*.* /var/log/filter.log
!logportalauth
*.* /var/log/portalauth.log
!-ntp,ntpd,ntpdate,charon,ipsec_starter,openvpn,poes,l2tps,hostapd,dnsmasq,named,filterdns,unbound,dhcpd,dhcrelay,dhclient,dhcp6c,dpinger,radvd,routed,zebra,ospfd,ospf6d,bgpd,watchfrr,miniupnpd,igmpproxy,filterlog
local3.* /var/log/vpn.log
local5.* /var/log/nginx.log
*.notice;kern.debug;lpr.info;mail.crit;daemon.none;news.err;local0.none;local3.none;local4.none;local7.none;security.*;auth.info;authpriv.info;daemon.info /var/log/system.log
auth.info;authpriv.info |exec /usr/local/sbin/sshguard -i /var/run/
Syslog sunucuda /etc/rsyslog.d klasörleri altında server.conf dosyası içeriğini aşağıdaki gibi revize edip kaydedin.
# Listen for TCP
$ModLoad imtcp
# Listen on port 514
$InputTCPServerRun 514
#logların aktarılacağı dizin
$template RemoteServer, "/var/log/pfsense/%SYSLOGFACILITY-TEXT%.log"
*.* ?RemoteServer
Eğer tüm ayarları doğru şekilde yaptıysanız local2.log ve local7.log dosyalarının yukarıda belirttiğiniz dizine gelmesi gerekmektedir.
Daha sonrasında aşağıdaki komutla servisi yeniden başlatın.
systemctl restart rsyslog

HTTPS access loglarını syslog sunucumuza aktarmak için scp komutununu kullanacağız. SCP ile parolasız dosya aktarımı için bir ssh-keygen oluşturup pfsense makinemize aktarmamız gerekiyor. Bunun için aşağıdaki komutları syslog sunucunuzda sırasıyla yürütün.
ssh-keygen -t rsa
scp id_rsa.pub root@192.168.2.1:/root/.ssh/authorized_keys
#!/bin/bash
# __ __ _ _ ___ _ _
#| \/ | | | | |/ / | | | |
#| \ / | ___ _ __| |_ | ' /| | | | |
#| |\/| |/ _ \ '__| __| | < | | | | |
#| | | | __/ | | |_ | . \| |__| | |____
#|_| |_|\___|_| \__| |_|\_\\____/|______|
#
#/// mertkul.com //// kulmert@gmail.com ///
#-------------------------------------------
# PfSense DHCP & HTTPS log imzalama #
scp root@pfsense_ip_adres:/var/log/e2guardian/access.log /var/log/pfsense/access.log
Yukarıdaki scriptte “pfsense_ip_adres” kısmına pfsense makinenizin ip adresini yazıp kaydedip crontab’a ekleyin.
crontab -e
* * * * * /root/scripts/access-log-aktarma.sh

Böylece DHCP, http ve https trafiğini syslog sunucumuza aktardık şimdi imzalama kısmına geçebiliriz.
Syslog Server Ayarları
Pfsense üzerinde DHCP Server, Squid ve e2guardian servisleri aktif edip konfigürasyonları yapıldıktan sonra sıradaki adım syslog sunucumuzda gelen logları alıp imzalama kısmına geçebiliriz.
OpenSSL ile Log İmzalama
Öncelikle sunucumuza OpenSSL, Rsyslog paketlerini kurmamız gerekiyor. Daha sonrasında ise logları imzalamamız için OpenSSL ile sertifika oluşturarak logları imzalayacağız.
openssl genrsa -out key.pem 4096
openssl rsa -in key.pem -pubout > key.pub
Daha sonrasında ise pfsense üzerinden gelen DHCP ve http ve https loglarını imzalamak için Log imzalama scriptlerini crontab’a ekleyerek her gün saat 23:59’da logları imzalayıp arşivleyecek.
Script dosyaları için lütfen iletişim kısmından form doldurarak veya mail adresime mail atarak iletişime geçin.
Mail : kulmert@gmail.com

Mert Bey Merhaba,
rica etsem Script dosyasını gönderebilir misiniz?