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

Apache unable to open logs hatası

Apache web servisini resetlerken “unable to open logs” hatası alıyorsanız bu apache sistem kullanıcısının en fazla açabileceği dosya sayısını aşmışsınız manasına gelir ki sizi tebrik ederiz.Hosting işini büyütmüşsünüz.Artık öntanımlı değerlerler size yetmiyor.

Debian/Ubuntu türevi bir hosting sunucunuz varsa;

/etc/apache2/envvars dosyanızda aşağıdaki parametreyi değiştiriniz.

APACHE_ULIMIT_MAX_FILES=’ulimit -n 131072′

Centos/Redhat tabanlı bir sistem kullanıyorsanız

/usr/sbin/apachectl dosyanızı en sevdiğiniz editorle açınız.

ULIMIT_MAX_FILES= satırını # ile kapatın ve alttaki satır ile yeni tanımlamayı yapın.

ulimit -n 131072

Değerleri deneysel olarak değiştirebilirsiniz.131072 kesmedi 1,5 katına çıkarın mesela.

Benzeri olarak alternatif çözüm nispeten eski sistemlerde init.d altındaki startup scriptleri de olabilir.Örneğin /etc/init.d/http dosyasında ulimit satırını başlangıçta olacak şekilde yerleştirebilirsiniz.

Premature end of script headers,Connection reset by peer: mod_fcgid: error reading data from FastCGI server

fb0b45015aPremature end of script headers,Connection reset by peer: mod_fcgid: error reading data from FastCGI server

Bu hatayı alıyorsanız,sorunun sebebi birden fazla olabilir.Hemen bayramlık sözleri dile getirmeden,sinirlenmeden aşağıdaki olası çözümleri deneyebilirsiniz.

1.Plesk 12 Linux sunucularda şunu deneyebilirsiniz.

SSH’dan komut satırına girin.

/usr/local/psa/admin/bin/httpdmng –reconfigure-domain alanadiniz.com

Plesk 11.5 hariç öncesi için /;usr/local/psa/admin/bin/httpdmng –reconfigure-vhost –vhost-name=alanadiniz.com

2.Websitenizin index.php dosyası zarar görmüş,içine malware kod yazılmış( yani bir nevi hacklenmiş ) olabilir.Kontrol edin.Varsa temizleyip tekrar deneyin.

3.Sistem CloudLinux ise;fastcgi server ile bağlantı kuramıyor olabilir.Konfigurasyonu yenilemek için,kullanıcıyı cagefsten çıkarıp tekrar alın.Zaten cagefsden çıkardığınızda website düzgün çalışıyorsa sorun bundan kaynaklanıyor demektir.

cagefsctl –disable ftpkullanıcısı

cagefsctl –enable ftpkullanıcısı

ilaveten klasörünü tekrar bağlamak için

cagefsctl -m ftpkullanıcısı

komutunu deneyebilirsiniz.

 

Apache fastcgi can’t apply process slot for error hatası

fb0b45015a

mod_fcgid Apache 2 webserverlarda yaygın olarak kullanılan bir modüldür.Php scriptlerini belli bir kullanıcının çalıştırmasına olanak tanır.

öntanımlı olarak belli bir limiti olan bu modülün limitleri sınıra dayandığında websiteler oldukça yavaş çalışmaya başlar,zaman zaman “500 Internal Server error” hatası alırsınız.

yapılması gereken;

Redhat ve türevlerinde;

/etc/httpd/conf.d/fcgid.conf

Debian,Ubuntu türevlerinde

/etc/apache2/mods-enabled/fcgid.conf

dosyasını açıp

FcgidMaxProcesses değerini arttırmaktır.

Daha sonra Apache web servisini yeniden başlatmalısınız.

debian ve ubuntu için : service apache2 restart

redhat ve centos 6.x için /etc/init.d/httpd restart veya service httpd restart

7.x versiyonları için systemctl httpd restart (geriye dönük uyumluluk için  service httpd restart komutu da 7.x versiyonlarda çalışmaktadır.)

Linux “Ghost” Uzaktan Kod Çalıştırma Güvenlik Açığı

tux18727 Ocakta haberi duyurulan ve ciddi risk taşıyan GNU C Library (glibc) zaafiyetinden faydalanarak sunucunun kontrolü kötü niyetli kişiler tarafından ele geçirilebiliyor.

Söz konusu açık, glibc 2.18 öncesi versiyonları etkiliyor.2.18 ve sonrasında şu anda böyle bir risk bulunmadığı ifade ediliyor.

Pek çok linux dağıtımı var ancak genel olarak hepsi ya Redhat ya da Debian türevi.Ubuntu’ya da sayacak olursak hemen hemen her linux sunucu bu tehdit altında.

Aşağıdaki adreslerde ,konuyla ilgili açıklama ve güncelleme için gerekli bilgiler yer alıyor.

Ubuntu

http://www.ubuntu.com/usn/usn-2485-1/

Debian

https://www.debian.org/security/2015/dsa-3142

Redhat

https://access.redhat.com/security/cve/CVE-2015-0235

 

Debian’da courier imap – vpopmail problemi ve çözümü

Yaklaşık 2.5 yıldır hizmette olan web hosting sunucumu tekrar kurmak zorunda kalınca bu sözünü ettiğim sorunla karşılaştım.Öncelikle konuyla ilgili kurulan yazılımlar hakkında kısa bir özet geçeyim.

Debian 4 stable üzerinde;

Kaynaktan derlenen yazılımlar

Qmail 1.03 (qmailrocks)

Vpopmail 5.4.13 (qmailrocks)

DEB paketlerinden kurulanlar
courier-authdaemon 0.58-4 Courier authentication daemon
courier-authlib 0.58-4 Courier authentication library
courier-authlib-userdb 0.58-4 userdb support for the Courier authenticatio
courier-base 0.53.3-5 Courier Mail Server – Base system
courier-imap 4.1.1.20060828-5 Courier Mail Server – IMAP server
courier-imap-ssl 4.1.1.20060828-5 Courier Mail Server – IMAP over SSL
courier-ssl 0.53.3-5 Courier Mail Server – SSL/TLS Support

Ne yazıkki herşeyi kurduktan sonra test aşamasında farkettim.Anlaşılan courier ,kimlik doğrulama esnasında kullanılabilen modullerden biri olan ,vpopmail tabanlı authvchkpw modulunu çöpe atmış…Yazılımın websitesinden ve Inter7 den de durum böyle anlaşılıyor.

İllaki authvchkpw destekli bir kuruluma ihtiyaç duyuyorsanız şansınızı kaynak paketlerinden deneyin derim.Debian paketleri yerine kaynaktan derlemek isteseniz bile ./configure parametrelerinde kurduğunuz vpopmail kullanıcısını vs belirtmeden bu sorunu aşamıyorsunuz.

Hemen karar vermeden önce courier’in buna yönelik alternatif bir çözümü olduğunu belirtmek istiyorum.Zaten yazmama sebep olan çözüm de bu..

Yukarıdaki courier paketini kurduktan sonra sisteminizde "vchkpw2userdb" isimli scripti göreceksiniz.İsminden de anlaşılabileceği gibi bu script,varolan vpopmail veritabanını userdb ye çevirmek için kullanıyorsunuz.Bununla ilgili örnek kullanımı aşağıda yazdım.
Not : Sunucumda çalışan vpopmail cdb kullandığı için,örneğim de buna yönelik oldu.Başka bir veritabanından userdb ye çevirme fırsatım olmadı.Eğer bu konuda bir sıkıntı yaşarsanız,kullandığınız veritabanını vconvert ile önce cdb ye çevirmeyi deneyin.(vconvert vpopmail beraberinde geliyor.~/vpopmail/bin altında bulabilirsiniz.

VpopMail Hesaplarının userdb ye aktarılması

mkdir /etc/courier/userdb
chmod 700 /etc/courier/userdb

vchkpw2userdb –todir=/etc/courier/userdb/vpopmail
makeuserdb

Kaynak

http://www.inter7.com/courierimap/INSTALL.html#userdb

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.