PfSense - Firewall Shell Komutları
-
Merhabalar,
Uzun süredir pfSense tarafinda makale yazmıyordum.Aslında hazirladiğim ve sağ’da solda beklettiğim makeleler var ama düzenlenmesi gerekiyor ve vakit bulupta paylaşmak mesele ! : )
Bu yazımda belki en çok merak edilen veya bilinmeyen bir kaç pratik pfSense shell komutlarının kullanımdan bahsedeceğim. Bazı durumlarda arayüze girmeden bazı işlemleri yapmamız gerekiyor.Örnek vermek gerekirse pfSense Vmware üzerinde kurulum yaptınız ve arayüze girmek için Lan bacağına bakan bir istemci’den arayüze girip WAN tarafında bir pass kurali yazmanız gerekiyor.Ama bu iş sizin oldukça zamanınızı alıyor ve cogu zaman bir sanal istemci hazirlamak bizlere ölüm gibi gelebiliyor.Bu konu da yazacağım komutlar sizin istemcilere ihtiyaciniz olmadan Shell üzerinden kural ekleyebilmeyi göstereceğim.pfSense kurulumu tamamlandıktan sonra pfSense WAN ınterface’inde Private Network adresleri block kuraliyla beraber gelir.Yani wan bacağından arayüze erişmek isterseniz öncelikle Lan networkündeki istemcilerden arayüze girip bir pass kurali yazmanız gerekir.
Ama cihaz’a direk erişiminiz varsa 8 rakamıyla Shell arayüzüne düşüp EasyRule komutlarını koşturarak ta port açma işlemlerinizi yapabilirsiniz. Bu durumda lan tarafındaki hiçbir istemciye ihtiyaciniz olmaz.
Eğer güvenlik duvarını geçici olarak durdurmak isterseniz aşağıdaki komutu koşturmanız yeterlidir.pfctl -d
Komutu koşturduktan sonra “pf disabled” çıktısını alırsınız ve wan arayüzünden pfSense web paneline giriş yapabilirsiniz. Bu komutla geçici olarak pfSense Firewall ‘i devre dışı bırakmış oldunuz Pass kuralinizi yazıp yeniden aktif etmek için’de aşağıdaki kurali koşturabilirsiniz.
pfctl -e
pfSense Firewall’i devre dışı bırakmak istemiyorum ama erişmek için WAN tarafında herkese erişim izni vermek istiyorum diyorsanız aşağıdaki pfSSH.php dosyasıyla bu işlemi yapabilirsiniz.
pfSsh.php playback enableallowallwan
Komutu koşturduktan sonra aşağıdaki şekilde bir çıktı alırsınız.
Starting the pfSense shel system.................. Adding allow all rule Turning of block private network (if on)... Reloading the filter configuration
Firewall arayüzümüze girip Firewall -> Rules segmentine baktığımız’da aşağıdaki şekilde bir tablo ile karşılaşıyoruz.
Gördüğünüz gibi WAN segmenti altında 2 tane ipv4 ve ipv6 full allow kuralı oluşturdu ve default olarak gelen Block private networks kuralini sildi. (Kural silinmeseydi erişemezdik.!) Kuralı sildi derken, pfSense Web Management -> Interfaces -> WAN segmenti altında Block Private network bölümündeki checkbox’u kaldırdı ve otomatikmen kural silinmiş oldu.
Şimdi olayı biraz daha fantazileştirelim ve Shell üzerinden Firewall kurallarının nasıl oluşturulacağını gösterelim.
Örnek bir kural ;easyrule block <interface> <source ip=""></interface>
WAN bacağına bir ip adresi üzerinden ddos veya benzeri nedenlerden dolayı yasaklamanız gerekiyor ve bunu shell üzerinden yapmanız gerekirse aşağıdaki kuralı koşturabiliriz.Komutu koşturduktan sonra “Host added successfully
” çıktısını almanız gerekiyor.easyrule block wan 192.168.1.100
Resim’de gördüğünüz gibi 192.168.1.100’lü ip adresi için bir host aliasi oluşturdu ve block kuralı oluşturdu.Aslında bu olayı şöyle’de düşünebilirsiniz.Bir sniffer veya benzeri bir şey yaparak WAN bacağına gelen istekleri dinlersiniz ve belirlediğiniz değer’den daha yüksek bir değer geldiğinde istek yapan ip adreslerini otomatik block yaptırabilirsiniz.: ))
ve veya Facebook veya twitter tarzı yerlerin ip adresleri sürekli değişiyor ve yazdığımız block kuralı işe yaramıyor.Belirli aralıklarda bir programcıkla facebook ve twitter’in ip adreslerini tespit edecek ufak bir nslookup veya benzeri birşeyler kullanarak tespit edilip Alias’a ekletilebilir : ))
Neyse beyin firtinamizi bir kenara bırakalım ve EasyRule kurallarımızı oluşturmaya devam edelim.
Detaylı Pass kuralı oluşturma örneği ;easyrule pass <interface> <protocol> <source ip=""> <destination ip=""> [destination port]</destination></protocol></interface>
Örneğin WAN arayüzüne 192.168.1.6 ip adresinden 192.168.3.100 ip adresinin 80 portuna gelen istekleri kabul eden bir pass kuralı yazmak isterseniz aşağıdaki şekilde bir komut koşturmanız gerekir.
easyrule pass wan tcp 192.168.1.6 192.168.3.100 80
Bakalım pfSense wan tarafında nasıl bir kural girdisi oluştu.
Bütün portlara izin vermemiz gerekirse port bölümünü any yapabiliriz.
Örneğin ;easyrule pass wan tcp 192.168.1.6 192.168.3.100 any
Yukarıdaki resimde gördüğünüz gibi port kismi “*” yani her port için izin vermiş olduk.Aynı mantığı kullanarak WAN tarafında full any kuralıda oluşturabiliriz.
easyrule pass wan any any any any
Resim’de gördüğünüz gibi full allow kuralımızıda eklemiş olduk.Elimden geldiğince basit ve anlayabileceğiniz bir dil’de anlatmaya çalıştım.Umarım başarılı bir makale olmuştur.Keyifli çalışmalar, başka bir makale’de görüşmek üzere : )
-
Eğer bütün state tablosunu resetlemek isterseniz aşağıdaki şekilde ;
pfctl -F state
Eğer sadece bir ip adresinin baglantısını resetlemek için.
pfctl -k x.x.x.x pfctl -k 0.0.0.0/0 -k x.x.x.x
Son olarak Php,Http sunucularının prosesini öldürüp web arayüzünü yeniden başlatmanız gerekebilir.
killall -9 php; killall -9 lighttpd; /etc/rc.restart_webgui
-
Değerli zamanını ayırıp, böyle bir bilgiyi paylaştığın için teşekkür ederim.
Anladığım kadarıyla bu komutlar tamamen pfSense özgü komutlar, unix veya freebsd de örneğin iptables komutları tamamen farklı diye hatırlıyorum iptables -A xxx.xxx.xxx -tcp veya layer7 patch vs gibi ..
Teşekkür ederim,
-
Rica ederim,Umarım faydalı olmuştur.Dağıtımların kendine özgü kullandıkları güvenlik duvarı yazılımları var, Centos ile beraber Iptables geliyor,pfSense Packet Filter (ıp filter) alt yapısını kullanıyor.
Tabi bu yazdığımız komutlar pfSense'e özgü kolaylaştırılmış komutlardır.
-
Samet eline diline sağlık kardeşim
-
easyrule block wan 192.168.1.100 hocam bunun tam tersi yani bolocklanan ipyi kuraldan silme komutu nedir?
-
Merhabalar
Sizlerle yazmış olduğum blog yazılarını paylaşmak istedim. Eğer pfSense ile uğraşıyorsanız bilmeniz gereken iki önemli ve yararlı blog yazılarını aşağıda paylaştım. Daha fazlası blog adresim üzerinden bulabilirsiniz.
*BSD Sistemlerde PF (Packet Filter) Güvenlik Duvarının Yönetimi
https://lifeoverlinux.com/freebsd-openbsd-netbsd-sistemlerde-ayrintili-pfctl-kullanimi/FreeBSD 10 Paket Yönetim Sistemi
https://lifeoverlinux.com/freebsd-paket-yonetim-sistemi/ -
Teşekkürler paylaşım için hocam.