pfSense 5651 Kanuna Uygun Log İmzalama

Giriş

Bu blog yazısında tüm kullanıcıların anlayacağı bir şekilde sonuç odaklı sizlere pfsense üzerinde 5651 kanuna uygun nasıl log imzalayabilirsiniz bunu anlatıyor olacağım. Bu blog yazısını adım adım takip ederek 5651 kanuna göre nasıl log imzalarsınız bunu öğreniyor ve uygulamalı olarak yapıyor olacaksınız.

 

5651 Sayılı Kanun

Çok uzun bir konu olduğu için buraya fazla yazmak istemedim, lütfen buradaki link adresine tıklayın ardından buradaki size ait olan başlığı, ilgili dökümanda aratıp, sizin ile alakalı alanları göz atmanızı şiddetle tavsiye ederim!

MADDE 4 – (1) İnternet toplu kullanım sağlayıcılarının yükümlülükleri şunlardır;

  1. Konusu suç oluşturan içeriklere erişimi önleyici tedbirleri almak.
  2. İç IP Dağıtım Loglarını elektronik ortamda kendi sistemlerine kaydetmek.
  3. Birden çok kişinin internete bağlandığı tüm ortamlar. (Firmalar, oteller, okullar, yurtlar vs)

MADDE 15 – (1) Erişim sağlayıcı yükümlülükleri;

  1. 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;

  1. 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.
  2. 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:

  1. İntihara yönlendirme,
  2. Çocukların cinsel istismarı,
  3. Uyuşturucu veya uyarıcı madde kullanılmasını kolaylaştırma,
  4. Sağlık için tehlikeli madde temini,
  5. Müstehcenlik,
  6. Fuhuş,
  7. Kumar oynanması için yer ve imkân sağlama,

 

OpenSSL Log İmzalayıcı

Script dosyalarını bizzat benim hazırlamadığım (https ve ftp scriptleri hariç) fakat tüm yapılandırmaları, bunların bir araya getirilmesi ve anlatımı bana aittir. Hali hazırda ayarlamış olduğum openssl sertifikaları vb. ayarları ile birlikte 5651 kanuna göre imzalama yapmak istemezseniz, bu yazının en alt satırında yardım almış olduğum kişinin blog sayfasındaki adımları takip ederek 5651 sizde yapabilirsiniz.

Hazırlamış olduğum 5651 dosyasını benim google driver hesabım üzerinden güvenli bir şekilde indirebilirsiniz. Lütfen aşağıdaki adresten başka bir yerden indirmemeye dikkat ediniz!!

Dosya : 5651.tar.gz

 

pfSense Yapılacak İşlemler

Direkt olarak 5651 konusuna geçmeden önce, pfsense üzerinde yapmamız gereken bazı yapılandırma ayarları var. Hazırlamış olduğum 5651 dosyası içindeki script dosyaları ile birlikte openssl ile Squid ve Dhcp adlı iki farklı servisin log dosyalarını imzalıyoruz. 5651 için bu iki servisin log dosyalarını imzalamamız yeterli oluyor. Tabi siz isterseniz aynı script dosyasını oluşturup farklı bir servisin log dosyasınıda imzalayabilirsiniz.

Dediğim gibi bu iki servisin log dosyasını imzalayıp sakladığımız için, bu iki servisi pfsense üzerinde kurmamız ve çalıştırıyor olmamız gerekiyor.

Önceden yazmış olduğum Squid ve SquidGuard paketlerinin kurulumu ile ilgili blog yazısına aşağıdaki link üzerinden ulaşabilirsiniz. Özellikle squid bölümündeki tüm ayarları adım adım doğru yaptığınızdan emin olunuz lütfen. ( Squid resmindeki “Enable Access Logging” seçeneğini aktif ediniz!!)

Link adresi için tıklayınız.

 

Yine önceden yazmış olduğum DHCP sunucu yapılandırması ile ilgili blog yazısına aşağıdaki link üzerinden ulaşabilirsiniz. DHCP sunucusu çalışıyor, kullanıcılar pfSense cihazının dhcp sunucusunu kullanarak TCP/IP bilgilerini alması gerekiyor ‘ki imzalama yapalım.

Link adresi için tıklayınız.

 

Bir sonraki adım ise pfSense üzerinde SSH servisini aktif etmek. Ana menüde System > Advanced sekmesine giriyoruz, orta bölümde bulunan SSH özelliğini “Enable Secure Shell” seçeneğini seçip ardından en alt satırdan Save butonuna tıklayarak ayarları kaydediyoruz.

 

Son olarak pfsense cihazınızın tarih ve saat ayarlarının doğru olması gerekiyor. Ana menüde System > General Setup sekmesine giriyoruz, orta bölümde bulunan Timezone bölümünde “Europe/İstanbul” seçeneğini seçip en alt satırdan Save butonuna tıklayarak ayarları kaydediyoruz.

 

pfSense üzerindeki yapılacak adımlar şimdilik bu kadar, gelin birlikte 5651 yapılandırmasını nasıl yaparız buna bakalım.

 

pfSense 5651 Yapılandırması

Bu başlık altında pfSense üzerinde 5651 yapılandırması için aşağıdaki adımları birlikte uyguluyor olacağız. Bu blog yazısında anlatmış olduğum 5651 çözümü ile neler yapabiliyoruz aşağıda belirttim.

  • DHCP Leases adlı log dosyasını imzalayıp, arşivleyip, sıkıştırıp, disk içerisine saklayıp daha sonra ftp sunucusuna gönderiyoruz.

  • DHCP Log adlı log dosyasını imzalayıp, arşivleyip, sıkıştırıp, disk içerisine saklayıp daha sonra ftp sunucusuna gönderiyoruz.

  • Squid servisinin üzerinden geçen HTTP trafiğini içeren access.log dosyasını imzalayıp, arşivleyip, sıkıştırıp, disk içerisine saklayıp daha sonra ftp sunucusuna gönderiyoruz.

  • HTTPS, birden fazla ağ arabirimin HTTPS trafiğini dinleyip bunları dosya üzerine yazıp ardından log dosyasını imzalayıp, arşivleyip, sıkıştırıp, disk içerisine saklayıp daha sonra ftp sunucusuna gönderiyoruz.

  • FTP, hazırlamış olduğum pratik çözüm ile istediğimiz log dosyalarını otomatik ftp sunucusuna yollayabiliyoruz.

Aynı zamanda hangi log dosyalarının imzalandığını bilmek istersiniz diye aşağıda belirttim.

  • DHCP Leases : /var/dhcpd/var/db/dhcpd.leases
  • DHCP Log : /var/log/dhcpd.log
  • Squid (Http) : /var/squid/logs/access.log
  • HTTPS : /var/log/https_log/

 

Bilgisayarımıza indirmiş olduğumuz 5651.tar.gz dosyasını scp aracını kullanarak pfsense ‘in kök “/” dizinine gönderiyoruz. Dosyayı göndermek için filezilla, winscp vb. araçlar kullanılabilir.

ucribrahim# scp /Desktop/5651.tar.gz [email protected]_ip_adresi:/
 
Password for [email protected]:
5651.tar.gz                      100%   15KB   8.3MB/s   00:00

Daha sonra ssh ile pfsense cihazına bağlanıyoruz.

ucribrahim# ssh [email protected]_ip_adresi

Bağlantı kurduktan sonra, kök dizin içerisindeki 5651.tar.gz dosyasını aşağıdaki komutu kullanarak açıyoruz.

pfsense# tar xvfz /5651.tar.gz -C /
 
x CA/
x CA/private/
x CA/newcerts/
x CA/cacert.pem.old
x CA/cacert.pem
x CA/serial.old
x CA/serial
x CA/index.txt.old
x CA/index.txt
x CA/index.txt.attr
x CA/tsacert.pem
x CA/tsaserial
x CA/newcerts/011E.pem
x CA/private/cakey.pem.old
x CA/private/cakey.pem
x CA/private/tsakey.pem
x sertifikalar/
x sertifikalar/privkey.pem
x sertifikalar/cacert.pem
x sertifikalar/tsakey.pem
x sertifikalar/tsareq.csr
x sertifikalar/tsacert.pem
x usr/
x usr/local/
x usr/local/ssl/
x usr/local/ssl/imzalama/
x usr/local/ssl/imzalama/dhcp-kiralar-imzalama.sh
x usr/local/ssl/imzalama/dhcp-log-imzalama.sh
x usr/local/ssl/imzalama/ftp.sh
x usr/local/ssl/imzalama/https-servis-takip.sh
x usr/local/ssl/imzalama/https-servis.sh
x usr/local/ssl/imzalama/https-trafik-dinleme.sh
x usr/local/ssl/imzalama/https-trafik-duzenleme.sh
x usr/local/ssl/imzalama/https-trafik-imzalama.sh
x usr/local/ssl/imzalama/openssl.cnf
x usr/local/ssl/imzalama/squid-access-imzalama.sh
x usr/local/ssl/imzalama/dosya.sh

Yukarıdaki çıktıda gördüğünüz gibi 11 adet farklı işleri yapmak için script dosyaları bulunmakta. Bu dosyaların içerisini görebilir ve isterseniz düzenleyebilirsiniz, tabi ne yaptığınızı biliyorsanız.

pfsense# cd /usr/local/ssl/imzalama
 
pfsense#/usr/local/ssl/imzalama: ls -lh
-rwxr-xr-x 1 root wheel 3.1K Mar 14 15:20 dhcp-kiralar-imzalama.sh
-rwxr-xr-x 1 root wheel 3.1K Mar 14 15:20 dhcp-log-imzalama.sh
-rwxr-xr-x 1 root wheel 434B Apr 11 15:14 dosya.sh
-rwxr-xr-x 1 root wheel 341B Apr 11 14:56 ftp.sh
-rwxr-xr-x 1 root wheel 290B Apr 11 14:33 https-servis-takip.sh
-rwxr-xr-x 1 root wheel 775B Apr 10 11:40 https-servis.sh
-rwxr-xr-x 1 root wheel 364B Apr 11 15:15 https-trafik-dinleme.sh
-rwxr-xr-x 1 root wheel 339B Apr 10 11:45 https-trafik-duzenleme.sh
-rwxr-xr-x 1 root wheel 3.3K Apr 10 11:48 https-trafik-imzalama.sh
-rw-r--r-- 1 root wheel 11K Mar 14 15:20 openssl.cnf
-rwxr-xr-x 1 root wheel 3.1K Mar 14 15:20 squid-access-imzalama.sh

İlk önce elle imzalama yapalım, bakalım bu script dosyaları çalışıyormu ve imzalama doğru yapıyormu test edelim.

pfsense# sh /usr/local/ssl/imzalama/dhcp-kiralar-imzalama.sh
 
Using configuration from /usr/local/ssl/imzalama/openssl.cnf
Response has been generated.
Dogrulama tamam.
a dhcpd.leases
a dhcpd.leases.der
a dhcpd.leases.tsq
 
pfsense# sh /usr/local/ssl/imzalama/dhcp-log-imzalama.sh
 
Using configuration from /usr/local/ssl/imzalama/openssl.cnf
Response has been generated.
Dogrulama tamam.
a dhcpd.log
a dhcpd.log.der
a dhcpd.log.tsq
 
pfsense# sh /usr/local/ssl/imzalama/squid-access-imzalama.sh
 
Using configuration from /usr/local/ssl/imzalama/openssl.cnf
Response has been generated.
Dogrulama tamam.
a access.log
a access.log.der
a access.log.tsq

Yukarıdaki çıktıda görüldüğü gibi başarılı bir şekilde openssl ile imzalama yapıyor ve doğruluyor. Şuan Dhcp ve Squid adlı iki farklı servisin loglarını imzaladık ve doğruladık. Şimdi ise HTTPS trafiğini dinlemek ve imzalamak için yapılandırmalar yapıyor olacağız.

Aşağıdaki dosyası favori editörünüz ile editleyiniz ve hangi ağ arabirimin https(443) trafiğini dinlemek ve imzalamak istiyorsanız o ilgili ağ arabiriminin bağlı olduğu ağ kartının numarasını yazıyorsunuz. 

NOT: HTTPS trafiğini dinleme ve imzalama yapmak istiyorsanız bu ayarı yapmanız gerekiyor!

NOT: Birden fazla ağ arabirimi dinlemek istiyorsanız, ilgili ağ arabirimleri aralarında bir boşluk bırakarak yazınız. Aralarına bir BOŞLUK bırakmayı unutmayınız!!

Örneğin benim sahip olduğum arabirimler ve bağlı oldukları ethernet kartlarının numaraları. Ben em1, em2, em3 adlı 3 tane ağ arabirimin https trafiğini dinlemek ve imzalamak istiyorum.

WAN (wan) -> em0 -> v4/: 1.1.1.1.1/24
LAN (lan) -> em1 -> v4: 2.2.2.2/24
MUHASEBE (opt1) -> em2 -> v4: 3.3.3.3/24
ARGE (opt2) -> em3 -> v4: 4.4.4.4/24

Değiştireceğiniz ilgili yer koyu siyah renk ile işaretlenmiştir, ayarları yaptıktan sonra dosyayı kaydedip çıkmayı unutmayınız.

pfsense# nano /usr/local/ssl/imzalama/https-trafik-dinleme.sh
 
#!/bin/sh
for i in em1 em2 em3
do
tcpdump -nn -tttt -e -i $i port 443 -q >> /var/log/https_log/https-$i-trafik.log &
done

(Opsiyonel) Bir sonraki adım ise imzalanan log dosyalarını otomatik olarak FileZilla FTP Server kurulu bir windows makineye göndermek için ayarlar yapıyor olacağız. Aşağıdaki dosyayı favori editörünüz ile düzenleyin ve içerisindeki HOST, USER, PASSWD alanları size uygun olarak değiştirin. Ayarları kaydetmeyi unutmayınız.

Aşağıdaki adımları yapmadan önce yazdığım blog yazısındaki adımları gerçekleştiriniz!

HOST=Windows ip adresi.

USER=FTP kullanıcısı.

PASSWD=FTP kullanıcının parolası.

pfsense# cd /usr/local/ssl/imzalama/
 
pfsense# nano ftp.sh
 
HOST="1.1.1.1"
USER="test"
PASSWD="test123"
 
#DATE
DATE=`date "+%Y%m%d"`
 
cd /calisma_dizini
for file in $(ls $calisma_dizini | cut -d"." -f1-)
do
 
ftp -inv $HOST << EOT
 
user $USER $PASSWD
binary
mput $file*
bye
EOT
done;

İmzalanan başarılı ve başarısız kayıtları aşağıdaki dizin içerisinde bulabilirsiniz. Aşağıda görüldüğü üzere başarılı imzalama yapılmış dosyalar bulunuyor.

Üçüncü komutu kullanarak ilgili arşivlenmiş dosyanın içeriğini okuyabilirsiniz. Aynı zamanda dördüncü komutu kullanarak arşivlenmiş dosyayı açabilirsiniz.

pfsense# cd /var/imzali_kayitlar/
 
pfsense# ls
access.log.20180104-135102.tar.gz
dhcpd.leases.20180104-135007.tar.gz
dhcpd.log.20180104-135018.tar.gz
 
pfsense# tar tf access.log.20180104-135102.tar.gz
access.log
access.log.der
access.log.tsq
 
pfsense# tar xvfz access.log.20180104-135102.tar.gz
access.log
access.log.der
access.log.tsq

Şimdi aklınıza şöyle bir soru gelebilir, kardeş biz her gün gelip ellemi imzalama yapıcaz. Tabiki hayır, bu işin otomatik olarak yapılması için crontab kullanıyor olacağız. Ana menüde System > Package Manager > Available Packages sekmesine girdikten sonra cron paketini kurunuz.

Daha sonra Services > Cron menüsüne giriniz ve yeni bir cron görevi oluşturunuz. Benim eklemiş olduğum cron görevlerinin aynısını sizde ekleyin.

NOT : Eğer FTP ile yedekleme özelliğini kullanmıyorsanız, dosya.sh adlı satırı cron içerisine eklemenize gerek yok.

Cron görevlerini ekledikten sonra aşağıdaki komutu kullanarak cron servisini yeniden başlatınız.

pfsense# service cron onerestart 

 

OpenSSL ile İmzalama Kontrolü

OpenSSL ile imzaladığımız dosyaların eğer içeriği değiştirilirse, openssl ‘in ilgili dosya için imzalama sırasında oluşturduğu TimeStamp ve Hash bilgisi değişecektir ve artık o log dosyası hiçbir işe yaramaz, yani temelde işe yarar fakat polis, savcı, hakim vb. kişiler için dosyanın içeriği değiştirildiği için birşey ifade etmez.

Birlikte imzalanan log dosyalarının doğruluğunu nasıl kontrol edebilir buna bakalım. Aşağıdaki adımları sırasıyla takip ederek doğruluğunu kontrol edebilirsiniz.

pfsense# cd /var/imzali_kayitlar/
 
pfsense#/var/imzali_kayitlar: tar xvfz dhcpd.leases.20180104-143607.tar.gz
x dhcpd.leases
x dhcpd.leases.der
x dhcpd.leases.tsq
 
pfsense#/var/imzali_kayitlar: openssl ts -verify -data dhcpd.leases -in dhcpd.leases.der -token_in -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem
 
Verification: OK

Yukarıdaki çıktıda görüldüğü gibi doğrulama sağlandı. Şimdi dhcpd.laeses ve dhcpd.lases.der dosyalarından birisinin içerisine birşeyler yazalım ve değişiklikleri kaydedip çıkalım. Daha sonra yeniden aynı komutu kullanarak doğrulama işlemini yapalım, bakalım doğrulayacakmı.

pfsense#/var/imzali_kayitlar: echo "Özgür Yazılım Ulan" >> dhcpd.leases
 
pfsense#/var/imzali_kayitlar: openssl ts -verify -data dhcpd.leases -in dhcpd.leases.der -token_in -CAfile /CA/cacert.pem -untrusted /CA/tsacert.pem
 
Verification: FAILED

Yukarıdaki çıktıda gördüğünüz gibi doğrulama başarısız oldu, çünkü dosyaların içeriğini değiştirdik.

 

Blog Yazısı Özet

Bu blog yazısında 5651 kanununa uygun nasıl openssl ile log dosyalarını imzalarız bunu öğrendik ve uyguladık. Eğer bir polis, savcı vb. kişi sizden dhcp, squid servislerinin ve https erişim kayıtlarını isterse, openssl ile imzaladığımız .tar.gz uzantılı dosyaları onlara incelemeleri için verebilirsiniz.

Her günün sonunda saat 23:30 ‘da o günün logları otomatik olarak openssl ile imzalanacak ve imzali kayıtlar adlı dizin içerisinde tutulacaktır.

İmzalanan log dosyalarını (.tar.gz) 2 yıl saklamanız gerekiyor! Kanun bunu söylüyor.

İmzalanan log dosyalarını 3 veya 5 ay aralıklarla kontrol ediniz, hatali imzalama varmı, dosya boyutları büyükmü, disk kapasitesi doldumu vb. kontrolleri yaparsanız sizin için iyi olur.

Gün içinde imzalanan log dosyaları (tar.gz) otomatik olarak her günün sonunda 23:30 ‘da ftp sunucusuna gönderiliyor. (Tabi ayarlamasını yaptıysanız!)

Saat akşam 11:30 ‘da cihaz açık olmalıdır! Aksi takdirde kapalı olursa, imzalama yapamaz.

 

Github Adresi

Bu projemi github adresime taşıdım. Aşağıdaki adres üzerinden bu projenin detaylarına github adresim üzerinden ulaşabilir ve isterseniz destek verebilirsiniz.

https://github.com/lifeoverlinux/pfSense-5651

 

5651 Destek

Eğer 5651 veya pfsense ile ilgili destek ihtiyacınız olursa benim ile aşağıdaki mail adresim üzerinden iletişim kurabilirsiniz. Bir sorunuz olursa yorum yazabilir veya mail adresim üzerinden benimle iletişime geçebilirsiniz.

Mail : [email protected]

 

Çağrı Ersen’e çok teşekkürler.

https://www.syslogs.org/openssl-ile-5651-sayili-kanun-geregi-log-imzalamak/

https://www.syslogs.org/openssl-ve-tsa-ile-otomatik-log-imzalayici-shell-script/

 

” Online pfSense Firewall & Router Eğitimi | www.udemy.com/pfsense-training 

Tagged with: , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Archives

Tweets

Follow @ucribrahim on twitter.