Iptables Geoip Eklentisinin Kurulumu ve Kullanımı

Belli bir ülkeden gelen ip trafiğini kısıtlamak veya engellemek için kullanabileceğiniz bir iptables eklentisidir.Eklenti standart Linux distrolarında eklenmiş,hazır halde değildir.Ayrıca bu eklentiyi kullanabilmeniz için güncel bir geoip veritabanına ihtiyaç duyarsınız.Bu veritabanını da maxmind.com’a üyelik yaparak ücretsiz kullanabileceksiniz.

Debian veya Ubuntu türevleri için öncelikle gerekli paketleri sisteminize kurun.

apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

Redhat ve Centos için ise;

yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

Daha sonrasında addons paketini proje sitesinden indirelim.(Not: Dkms modulu olarak veya src paketi olarak da debian/ubuntu depolarından indirebilirsiniz.)

Örneğin (sizin için uygun versiyon işletim sisteminizin kerneline göre farklılık gösterebilir.)

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.3.tar.xz

Sıkıştırılmaz paketi açıp  paketi derliyoruz.

# tar xf xtables-addons-2.3.tar.xz
# cd xtables-addons-2.3
# ./configure
# make
# make install

Kullanacağımız eklenti maxmind’ın eski yapıdaki (Geoip Legacy Databases) veritabanını destekliyor.Öyle görünüyor ki maxmind eski yapıdaki veritabanın da indirme linkini kaldırmış.Yine de Geoip2 veritabanını bir script yazarak eski yapıya dönüştürmek mümkün görünüyor.Nette biraz araştırınca şöyle bir websitesiyle karşılaşıyoruz.

https://mailfud.org/geoip-legacy/

Websitesin sahibi, güncel v2 db yi alıp eski tip db ye sadece çevirmekle kalmamış aynı zamanda bunu sık sık güncelliyor da.

Iptables için uygun olan geoip db linki aşağıdadır.

https://mailfud.org/geoip-legacy/GeoIP-legacy.csv.gz

Linkten dosyayı download ettikten sonra sunucunzda bir yere gz dosyayı açın.

Açılan dosyayı önceden derlenmiş kodda hazır halde olan xt_geoip_build aracı ile iptables’a uygun hale getiriyoruz.

./xt_geoip_build GeoIP-legacy.csv

Ardından gerekli klasörü oluşturup bu db yi içine kopyalıyoruz.

mkdir -p /usr/share/xt_geoip/

cp -r {BE,LE} /usr/share/xt_geoip/

Artık dilediğimiz geoip tabanlı iptables kurallarını yazabiliriz.Son olarak dilerseniz ülke kodlarına https://en.wikipedia.org/wiki/ISO_3166-1 sayfasından bakabilirsiniz.

Örnek olarak Hindistan ve USA ‘dan gelen tüm istekleri engelleyebiliriz.

iptables -I INPUT -m geoip –src-cc IN,US -j DROP

Veya sadece TR dışındaki tüm talepleri engelleyebiliriz.

iptables -I INPUT -m geoip ! –src-cc TR -j DROP

Bir başka örnek ise sadece tcp port 587 e gelen istekleri Türkiye içi ağlarla sınırlandırabiliriz.

iptables -A INPUT -p tcp -m geoip ! –src-cc TR –dport 587 -j DROP

Uygulama Alananları ve Karşılaşabileceğiniz Problemler…

Bu eklentilerin kurulumunu Ubuntu 16.04 ve Ubuntu 14.04 de gerçekleştirdim.Esasen 14.04 de gerekliydi ve hem kaynaktan derleme hem de dkms şeklinde linux çekirdeğine ilavede sorun yaşadım.Sorun yaşamamın sebebini xtables-addons paketindeki başka eklentilerin kullanmakta olduğum kernel ile uyumsuz olduğunu (daha açık olarak belirtmek gerekirse Linux 3.16 da bu bazı eklentilerin desteğinin yeni başladığını) okudum.O yüzden bazı eklentileri mconfig dosyasından iptal ettip.Çünkü bana özellikle geoip modulu gerekiyordu.

Örnek mconfig dosyam aşağıdadır.Karşılıkları boş olanlar sistemde derlenemedi malesef.

# -*- Makefile -*-
#
build_ACCOUNT=m
build_CHAOS=
build_DELUDE=m
build_DHCPMAC=m
build_DNETMAP=m
build_ECHO=m
build_IPMARK=m
build_LOGMARK=m
build_RAWNAT=m
build_STEAL=m
build_SYSRQ=m
build_TARPIT=
build_condition=m
build_fuzzy=m
build_geoip=m
build_gradm=m
build_iface=m
build_ipp2p=m
build_ipv4options=m
build_length2=m
build_lscan=m
build_pknock=
build_psd=m
build_quota2=m

Ancak Ubuntu 16.04 de bunlara hiç gerek duymadan dkms ile tümünü kernele eklemeyi başardım.

Geoip & Iptables kullanmaktaki amacım,mail sunucunun (postfix) email kullanıcı şifre doğrulaması yapılan portlarını kısıtlamak idi.

Tcp Port 25 i sadece email sunucularından gelen isteklere yanıt verir hale getirirken port 587 (submission) ve port 465’i (smtps) sadece TR içinde izin vermek amaç..

Her ne kadar “en mantıklı/iyi çözüm” olmasa da sunucuları brute force ataklarından ve şifresini çaldıran eposta kullanıcılarının başıma açtığı dertlerden kurtardı.

Apache SSL açıklarını kapatın

Son dönemde ortaya çıkan openssl ve zayıf şifreleme methodlarını kapatın.Özellikle bankalardan sanal pos talep etmeden önce sunucunuzda uygulamanızı tavsiye ederim.

Centos sunucular için

/etc/httpd/conf.d/ssl.conf dosyasının en altına aşağıdaki satırları yerleştirin.Httpd servisini yeniden başlatın.Nispeten güncellenmemiş sunucular için yum update yapmanızı öneriririm.

<IfModule mod_ssl.c>
SSLProtocol +TLSv1 +TLSv1.1 +TLSv1.2 -SSLv2 -SSLv3
</IfModule>
<IfModule mod_ssl.c>
#SSLCipherSuite HIGH:!aNULL:!MD5:!RC4-SHA:!RC4
#SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RS
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5::!RC4
</IfModule>

Fstab ile uzak nfs paylaşımı sisteme bağlamak

/etc/fstab dosyanızda şu şekilde bir kayıt girip mount -a yazarak uzaktaki nfs sunucudaki paylaştırılmış klasörünüzü sisteminize kalıcı olarak bağlayabilirsiniz.

192.168.10.11:/mnt/backup/sunucu1 /var/yedek nfs auto 0 0

Linux iptables ile ultrasurf 13.03 engelleme

Önceki ultrasurf versiyonu ile ilgili yazımın güncellenmiş versiyonudur.Anlamadığınız eksik kalan noktalar varsa önce o yazıyı okumanız gerekebilir.

Ultrasurf 13.03 engelleme için güncel iptables kuralları aşağıdadır.

iptables -I FORWARD -m tcp -p tcp –dport 443 -m string –to 256 –hex-string ‘|16030000610100005d0300|’ –algo bm -j DROP

iptables -I FORWARD -m tcp -p tcp –dport 443 -m string –to 256 –hex-string ‘|160301013c010001380303|’ –algo bm -j DROP

iptables -I FORWARD -i eth0 -p tcp –dport 1024:65535 -j DROP

Son yazdığım kuraldan tam emin değilim.İlk iki kuralı sabit tutarak 3.kuralı deneyerek sonucu görebilirsiniz.

Yine 3.kuraldaki -i eth0 benim gw sunucusunun iç bacağı.Yani istemcilerin bulunduğu network.Bunu da kendinize göre uyarlayın.

Sonuç:

3-4 kez ultrasurf’un açmayı denedim.Uzunca bir süre sonra hiç bir sunucuya bağlanamayınca pes ediyor.Umarım bu testler yeterli olmuştur.

Hiç yoktan (yeni versiyon çıktığını bilmiyordum doğrusu ) bu mesele ile tekrar uğraşmama vesile olan okay arkadaşıma ayrıca teşekkürler.

rsync de farklı ssh portu kullanımı

rsync -avz -e “ssh -p hedef ssh server port numarası” kullanıcıadı@uzaksunucuip:/uzaktaki/klasör/ /lokal/sunucunuzdaki klasör/

Linux iptables ile ultrasurf engelleme

Pfsense kurup networkünü yönetmekte olduğum müşterimin bir gün bana çılgıncasına “ultrasurf diye bişey bulmuşlar her yere giriyorlarrrrrrr!” şeklinde asabi haykırışı akabinde pfsense’de nasıl ultrasurf engellenir diye araştırmaya koyuldum.Gece saat 3.Sonuç yok.Zaten forum.pfsense’deki kullanıcılarda uyumakta.Ben çaresiz!

Bu google’ın büyük işler yaptığını kabul ediyorum ama yine de pek sevemiyorum.Ancak google veya “arama motoru” olmasaydı bu işler nasıl hallolurdu bilemiyorum.

Ararken tararken kısa bir ipucu buldum.http://pere.bocairent.net/?p=57

Yazının tarihini görünce ultrasurf’çülerin bu işi değiştirmiş olduğunu düşündüm.Müşterimin networkunda bir pc ye wireshark kurdum.Aynı pc de ultrasurf’ü çalıştırdım.Tahmin ettiğim gibi hex kodu değişmişti.

Ağ geçidi olarak çalışan pfsense ‘e snort kurdum.Hex kodunu kullanarak uygun bir kural yazdım.Evet.Kural match!Fekat?

Çok da uğraştığımı söyleyemem ama snort kuralı tanıdığı halde drop etmiyor.Hay bin kunduz!Döndük Baba Ocağına!

Sonuç olarak ağ geçidine bir de linux ekleyerek bu iş çözüldü.Hem de tek bir iptables satırıyla…

iptables -I FORWARD -m tcp -p tcp –dport 443 -m string –to 256 –hex-string ‘|16030000610100005d0300|’ –algo bm -j DROP

 

Not: Bu çözüm indirdiğiniz ultrasurf paketine göre değişebilir.Benim güncel olarak denediğim u1301.exe.Sanyorum 13.01 versiyonu.Yukarıdaki linke bakarsanız wiresharkta dikkat çekilmiş SSL Handshake esnasındaki paketindekin içeriğine göre iptablestaki hex satırını değiştirebilirsiniz.

Not2: Bu metallica ve more beer da neyin nesi diyenlere..yazıyı yazarken bira içiyordum.aklıma öylesine geliverdi.

Not3: Kopyala yapıştır olmasaydı sysadmin nasıl olunurdu?

Debian Linux ile L2tpd Ipsec Vpn server kurulumu

Kuruluma geçmeden önce belirtmek isterim ki bu sistemi kurabilmek  için tam 1 hafta çalıştım.Pek çok kez başarısızlıkla sonuçlandı.Ipsec vpn kurulumunda hatalar veya problemler sunucudan kaynaklanmayabiliyor.Bu da boşuna debelenmenize sebep oluyor.

Örneğin ben bu kurulumu Debian Linux 6 ‘da yapabildim.Bundan önce Ubuntu Server 11 (i386,x64) ve Ubuntu 10.04.1 (i386,x64) LTS’de denedim.Yani kurulumu tamamlamak için toplam 5 kez linux kurmak zorunda kaldım.Bunun sebebi tahminimce l2tpd servisi ile OS kernel uyumsuzluğu veya openswan ‘ın kullandığı kernel modullerinin yine OS kernel ile tam uyumlu çalışmaması.

Eğer böyle bir sistem kullanmak istiyorsanız muhtemelen windows istemcilerle vpn yapmak isteyeceksiniz.Bu durumda ipsec/l2tpd vpn bağlantısı bakımından Windows Xp,Vista veya Windows 7 ‘nin de farklılıklar gösterdiğini görebilirsiniz.

Tecrübe ettiğim diğer bir husus da ADSL modem.Ben evimde zxyel 660 prestige modem kullanıyorum.Piyasadaki modemlere göre eski fakat iyi cihazlardan biri.Fakat l2tp/ipsec vpn bağlantımı sunucuya ulaştıramıyor.Yani istek modemden dışarı çıkmıyor.Belki bir firmware ile çözülebilir.

Son olarak söyleyeceğim şey,kurulumu aynen benim gibi yapsanız bile sistemin çalışmama olasılığının her zaman mevcut olması.

Bu kadar gereksiz sözden sonra kurulum ortamına geçeyim.

 

Sunucu ve istemci altyapısı

Sunucu ve istemci Vmware üzerinde çalışmaktadır.

Debian Linux 6 Kernel 2.6.32-5-686 üzerinde Openswan (2.6.28+dfsg-5) + Xl2tpd (1.2.7+dfsg-1)

Sunucunun iki etherneti var.Biri real ip diğer lokal ip ye sahip.

İstemci Windows 2008 R2 x64

 

Kurulum

İşletim sisteminin kurulumunu en basit haliyle tamamladıktan sonra ethernetlerinize ip adreslerinizi atadıktan sonra paketleri kuralım.

(Burda önemli bir nokta,eğer sunucunuz direk real ip ile internete bağlanmıyorsa,bir modem veya firewall arkasında bulunuyorsa ipsec ayarlarını değiştirmek zorunda kalabilirsiniz.)

 

Paketleri apt ile kuruyoruz.

Konsolda;

apt-get install openswan xl2tpd

Bu komutu verdikten sonra ipsec x.509 ile ilgili bir soru ile karşılaşacaksınız.Buna hayır cevabını verin.

Apt paketleri kuracak fakat bunlar standart konfigurasyonlarıyla çalışmaya başlayacaktır.

Openswan sistemde hali hazırda netkey modulunu tanıyacağı için bu modul ile çalışmaya başlayacaktır.

Xl2tpd için de durum farklı değil.Henüz ayarlar yapılmadığı için sadece çalışıyor vaziyette olacaktır.

Konsolda;

ipsec verify

ps aux | grep ipsec

ps aux | grep xl2tpd

komutlarıyla servislerin başlayıp başlamadığını görebilirsiniz.

ipsec verify çıktısı aşağıdaki gibi görülecektir

 

> ipsec verify
> Checking your system to see if IPsec got installed and started
> correctly:
> Version check and ipsec on-path [OK] > Linux Openswan kernel_version (netkey)
> Checking for IPsec support in kernel [OK] > NETKEY detected, testing for disabled ICMP send_redirects
> [FAILED] >
> Please disable /proc/sys/net/ipv4/conf/*/send_redirects
> or NETKEY will cause the sending of bogus ICMP redirects!
>
> NETKEY detected, testing for disabled ICMP accept_redirects
> [FAILED] >
> Please disable /proc/sys/net/ipv4/conf/*/accept_redirects
> or NETKEY will accept bogus ICMP redirects!
>
> Checking for RSA private key (/etc/ipsec.secrets) [OK] > Checking that pluto is running [OK] > Checking for ‘ip’ command [OK] > Checking for ‘iptables’ command [OK] > Opportunistic Encryption Support
> [DISABLED]

FAILED olan kısımlardaki problemleri gidermek için /etc/sysctl.conf dosyasının bir yedeğini alıp,bir editor ile açın ve aşağıdaki satırları uygun biçimde yerleştirin

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 2048
net.ipv4.neigh.default.gc_thresh3 = 4096

sysctl.conf dosyanızı kaydettikten sonra

Konsolda;

sysctl -p komutunu verin veya sunucunuzu baştan başlatın.

Önemli bir nokta,sunucunuzu baştan başlattığınızda ipsec pid askıda kalmış olduğu için açılışta start edilemiyor.Debian ve Ubuntuya özgü bir durumdan da kaynaklanıyor olabilir.Henüz gerçek ortama geçirmediğim için üzerinde durmadım.

 

Hylafax Faks sunucusu kurulumu gelen ve giden faksların e-mail adresine yönlendirilmesi

I.BÖLÜM: Paketlerin Kurulumu & Basit Konfigurasyonlar
Debian GNU/Linux 4 (veya 3.1) üzerine kuruluma başlamadan önce source.list güncellemesi yapalım.Dosyanız ftp
http sunucularına göre ayarlanmışsa veya elinizde yeteri kadar debian cd
veya dvd varsa buna gerek duymayabilirsiniz.

Aşağıdaki satırlara göre /etc/apt altındaki source.list dosyanızı
güncelleyin.

deb http://http.us.debian.org/debian stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free

deb http://security.debian.org/ stable/updates main contrib

Daha sonra hylafax ı kuralım.Pek çok önerilen paket var.Sadece bağımlı
paketlerle beraber kurmayı yeterli olduğunu sanıyorum.

apt-get install hylafax-server wvdial

Paketler indikten sonra en son hylafaxın configurasyonu için interaktif
kurulum aşamasına geliyorsunuz.Sorulara ön tanımlı cevaplar verebilirsiniz.
Daha sonra wvdialconf (wvdial programının ayarlarını otomatik dosyaya
yazan program) programını çalıştırıp modemin hangi portta olduğunu
buluyoruz.
Bizim kurulumumuzda modem us robotics ext. 56k com1 portuna
bağlı,dolayısıyla wvdialconf,modemi ttyS0 da buluyor.
Daha sonra hylafax modem ve diğer ayarları için faxsetup scriptini
çalıştırıyoruz.Faxsetup bize ayrıntılı sorularla sıkıntılı anlar
yaşattığı için soruların pek çoğuna öntanımlı cevapları veriyoruz.
Kendi adıma konuşucak olursam,modemler hakkında pek fazla bişey
bilmiyorum.Faxsetup scriptinin sorduğu sorular arasında dikkat ettiğim,

CountryCode: 90
AreaCode: 232
FAXNumber: 4616848
RecvFileMode: 0644
LogFileMode: 0644
DeviceMode: 0644
RingsBeforeAnswer: 1
LocalIdentifier: “NothingSetup” (Gönderdiğiniz faxta görünmesini
istediğiniz firma ismi olabilir)

Hylafaxın ayarları bu interaktif kurulum programındakilerle kalmıyor
elbette.(Opsiyonel ayarları yazıcıya bastırınca 30-40 sayfa çıkıyor)
Ek olarak, sonradan bu ayarları /etc/hylafax altındaki dosyalardan da
değiştirebilirsiniz.

Modeminiz eğer doğru şekilde ayarlandıysa,/etc/hylafax klsörü altında
config.ttyS0 (modemin bu porta takılı olduğunu varsayarak) dosyasının
oluştuğunu görebilirsiniz.

Kurulum burada bitiyor.Sistem processlerine bakarak hylafaxın çalışıp
çalışmadığına bakabilir veya hata verdiyse /var/log/syslog dosyasından
hatanın ayrıntıların inceleyebilirsiniz.

İstemci kurulumlarına başlamadan önce fax hizmetini kullanacak
kullanıcıların hesaplarını yaratıyoruz.

$localhost:/etc/hylafax# faxadduser ozgur

İstediğiniz kadar kullanıcı açtıktan sonra,istemcilere hangi prgramı
kuracağınıza karar vermeniz gerekiyor.Benim önerebileceğim iki program
var.Birincisi whfc.Oldukça sade bir program.Bazı eksikliklerine gıcık
olursanız bunun yerine daha ayrıntılı bir hylafax istemcisi olan frogfax
ı kullanabilirsiniz.
Dökümanın sonunda bu programlarla ilgili ayrıntıları bulabilirsiniz.

II.BÖLÜM

Fax2Mail Gateway kurulumu

Gelen faxların belirtilen e-mail adresine pdf formatında gelmesini için
aşağıdaki işlemleri uygulayın

Sunucu aynı zamanda bir e-mail sunucusu değilse ,sisteme postfixi
standart ayarlarla kurun.

$localhost:/etc/hylafax# apt-get install postfix

/var/spool/hylafax/etc klasörüne girin
FaxDispatch isminde bir dosya yaratın ve şu şekilde editleyin.
SENDTO=FaxMaster; # ön tanımlı olarak
gelen faxı lokaldeki faxmaster kullanıcına mail olarak gönder
FILETYPE=pdf; # gelen faxta eklenti
olarak pdf formatını kullan

Bu dosyayı kaydederek çıkın.

Aynı klasör içinde,giden faksların da e-mail adresine yönlendirilmesi için FaxNotify dosyasını oluşturun.Dosyayı şu aşağıdaki satırlara göre düzenleyin.

RETURNFILETYPE=pdf;

Bu dosyayı da kaydederek çıkın.

Hylafax için gelen ve giden faksların e-mail adresinize yönlendirilmesi işlemi bu kadar basit.Ancak bu faksları gerçek bir mail hesabına yönlendirmemiz lazım.Bunun için aşağıdaki adımları izleyin ;
Bir editorle /etc/aliases dosyasını açın.

faxmaster : email adresiniz@alanadınız.com

yazarak kaydedin.

newaliases komutun çalıştırın,postfix servisini vee hylafax’ı reload edin.

Hepsi bu kadar.Testlerinizi yapın.Gelen ve giden faksların pdf ekli e-mail olarak belirttiğiniz hesapa
geldiğini göreceksiniz.