Yazılar

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ı.

Centos 7 de php ye mcrypt eklentisi kurmak

Centos’u hazırlayanların bu php mcrypt eklentisine bir gıcığı var ama neden bir türlü anlamış değilim.

Epel deposundan php 5.4 için mcrypt eklentisi kurmak için öncelikle paket deposunu işletim sisteminizde aktif etmelisiniz.

sudo yum install epel-release ( zaten root iseniz sudoya gerek yoktur.)

yazarak kurulacak paketi kabul edin.Epel sisteminize kurulacaktır.

Ardından php-mcrypt paketini sisteminize kurun..

yum install –enablerepo=”epel” php-mcrypt

Aşağıdaki ekrandaki gibi size gpg key’i onaylayıp onaylamadığınızı soracaktır.Bir tür güven ilişkisi oluyor bir süre sonra,hiç düşünmeden yesss diyorsunuz.Ama işin doğrusu bunları kontrol edip doğrulamak lazım.Ben doğrusunu söyleyeyim de siz nasıl bilirseniz öyle yapın.

Selection_031

Akabinde apache servisini “service httpd restart” diyerek resetlersiz işlem tamamlanmış olacaktır.İnanmıyorsanız  phpinfo ile bakın.

Centossuz günler dilerim.

Centos 7 iptables firewalld

Centos 7 yeni kurulumlarda  iptables servisi yerine firewalld adında bir başka firewall sistemiyle beraber geliyor.Eğer eski sisteme geri dönmek veya güvenlik duvarını tamamiyle kapatmak isterseniz aşağıdaki komutları uygulayınız.

firewalld servisini durdurmak için

systemctl stop firewalld

firewalld servisini pasif yapmak için (açılışta çalışmayacak)

systemctl disable firewalld

önceki versiyonlardaki sisteme dönmek için se  iptables servisini kurmalısınız.

yum -y install iptables-services

Centos / Redhat türevlerinde otomatik güncellemeyi etkinleştirmek

yum -y install yum-cron ile yum-cron paketini kurun.

daha sonra nano /etc/yum/yum-cron.conf komutu ile ayar dosyasını açın.

appy update = yes olarak değiştirin.

sunucunuz çıkan güncellemeleri otomatik yapacaktır.

Centos 7 de root şifresi değiştirme resetleme

Centos yeni versiyonda alışkanlık sahibi sistem adminlerini biraz sıkacak gibi görünüyor.Systemd servis yönetimi,ifconfig’in ortalarda olmayışı network kartlarına ip verirken kullanılan “setup” komutunun olmayışı ve bir de boot esnasında root parolası resetleme gibi.

Centos 7 sunucunuzu öncelikle reboot ederek kernel seçeneklerinde aşağıdaki adımları uygulayın.

1.Kernel listesinde.Öntanımlı olan kernel üzerinde veya istediğiniz başka bir kernel üzerindeyken ‘e’ butonuna tıklayın.

centos7-forgot-root-password

 

 

 

 

 

 

 

 

2. Gelen yeni ekranda (ki zaten bu kısmı hatırlarsanız “single” veya rw init=/bin/bash yazıyorduk.Aşağıdaki görüntüde şu değişikliği yapın.

ro ‘yu silerek

rw init=/sysroot/bin/sh

yazın.

centos7-forgot-root-password-1

 

 

 

 

 

 

 

 

centos7-forgot-root-password-2

 

 

 

 

 

 

 

 

3.Aynı ekranda CTRL ve X butonuna beraber basarak bu ayarlarla sistemin açılmasını sağlayın.

4.Açılan ekran biraz yabancı gelebilir.Bu ekranda

chroot /sysroot

yazarak /sysroot altına bağlanmış root filesysteme girmiş olacaksınız.

Bu aşamadan sonra passwd root komutuyla şifreniz değiştirebilir akabinde sunucuyu resetleyebilirsiniz.

Önemli Not

SELinux kullananlar ise şifreyi değiştirdikten sonra şu komutu uygulayarak dosya sistemini tekrar etiketlemeli.

touch /.autorelabel

Şifreniz resetlenmiştir.

Ek bilgi

SELinux Nedir Harici link Türkçe : http://www.cozumpark.com/blogs/linux_unix/archive/2013/02/10/security-enhanced-linux-selinux.aspx

SElinuxDosya sistemini tekrar etiketlemek Harici link İngilizce : https://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-fsrelabel.html

Kaynak: