cPanel & Plesk ve Linux Sunucu güvenliği notlarım.

Merhabalar arkadaşlar, bu kısa notumuzda cPanel ve Linux Web sunucuları üzerinde nasıl bir güvenlik önlemleri alabileceğimizi elimden geldiğince sizlerle paylaşacağım.

Öncelikle, Güvenlik demişken tabi genel bir güvenlik söz konusu değil.Sadece sunucu üzerinde yapabileceğimiz ayarlarla botnet ddos vb ataklarını engelleme şansımız maalesef bulunmuyor. Belli oranda ki Ddos ataklarını çeşitli yazılımlarla engellesekte, bazı durumlarda bu eklentilerde yetersiz kaldığı durumlar olabiliyor.Onun için biz daha çok servislerin güvenliğinden bahsediyor olacağız.Bu makale’de anlatacağım, konuların kategorilerini şöyle bir kaleme alalım.
 Shell,Fso vb zararlı tool kitlerin sunucu üzerinde çalışmasını engellemek.
 Brute Force ataklarının engellenmesi
 Bir nebzede olsa ddos ataklarına karşı önlemler alma.
 SSH Güvenliği
 Iptables konfigürasyonu
 Apache güvenliği
 Mail Server güvenliği
Öncelikle bildiğiniz üzere, Linux sunucularımızda bir işlem yapmak için SSH Server yardımıyla sunucumuza bağlanırız. SSH Sunucuları, RDP Sunucuları gibi brute force atakları ile karşı karşıya kalmaktadır.
Bu ataklardan korunabilmek adına, SSH portunu değiştirmek zaman zaman yeterli olsa da sizin tarafınıza yapılacak bir port scanner ile ssh portu rahatlıkla bulunabilecektir. Ama Port değiştirmeniz, ip bloğunu taramaya alıp 22 nolu portu açık olan servisleri listelemek istiyen scriptci gençlere karşı büyük bir önlem diyebiliriz.
SSH Portu nasıl değiştirilir ?

sshd_config dosyası nano editörü ile açılır ve #Port 22 yazan bölümdeki portu kendinize göre değiştirip # işaretini kaldırıp ayarlarınızı kaydetmeniz yeterlidir.

nano  /etc/ssh/sshd_config

SSH Portunun değişmesi için SSH servisini yeniden başlatmanız gerekiyor

service sshd restart

SSH Server’in sadece belirli ip adresleri üzerinden erişilmesini sağlamak bana göre daha güvenlidir.Çünkü port bir şekilde bulunabilir ama sadece belirli ip’lerin ssh servisini kullanmasına izin verirseniz ssh’a erişmelerini daha güvenli bir şekilde engellemiş oluruz.

Peki, belirli iplerin SSH’ı kullanmalarına nasıl izin veririz. ?
Bu soru’nun aslında bir çok cevabı olsa da ben size en pratik yoldan ve en basit bir şekilde anlatmaya çalışacağım. Eğer ortamınızda bir Donanımsal,Yazılımsal firewall kullanıyorsanız Güvenlik Duvarından ilgili porta sadece belirlenen destination adreslerinin bağlanması için bir kural oluşturabilirsiniz.

Centos üzerinde SSH erişimine belirli ip adreslerinin bağlanmasını sağlamak için aşağıdaki bölümleri takip ediniz.
Nano editör ile host.allow dosyasını açıyoruz.

nano /etc/host.allow

Dosyayı düzenlediğinizde aşağıdaki şekilde bir ekranla karşılaşacaksınız.

#
# hosts.allow   This file describes the names of the hosts which are
#               allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#

Bu bölüme aşağıdaki şekilde ip adreslerinizi eklerseniz, sadece orada belirlemiş olduğunuz ip adresleri ssh servisine erişecektir. Ama burada dikkat etmeniz gereken konu, kurallar yukarıdan aşağıya geçerlidir. Yani siz aşağıdaki komutların en sonunda deny kuralını en üste alırsanız ve belirlediğiniz ipler o komutun altında olursa o iplerin ssh servisine erişmesini engellemiş olursunuz.
Aşağıda kurallar ile SSH Servisine sadece 192.168.1.100 ip adresinin bağlanmasını sağlamış oldum.Diğer bütün ip adreslerini Deny kuralı ile yasaklamış olduk.

sshd sshd1 sshd2 : 192.168.1.100 : ALLOW
sshd sshd1 sshd2 : 127.0.0.1 : ALLOW
sshd sshd1 sshd2 : ALL : DENY

Ayrıca Brute Force ataklarından korunmak için, SSH için özel geliştirilmiş yazılımlar kullanabilirsiniz ama bence yukarıdaki ayarların yapılması güvenlik açısından yeterli olacağı konusundayım.VPN bağlantısı ile yapılırsada fena olmaz hani : =)

Eğer cpanel tarafında SSH Güvenliği almak isterseniz Security Center -> SSH Password Authorization Tweak özelliğinin aktif olmasıda işe yarayan özelliklerden birtanesidir.Brute Force bir nebze olsun engelleyecektir.
cPanel üzerinden open_basedir fonksiyonunda açılması güvenlik açısından büyük bir önlem alacaktır.Kullanıcıyı kendi dizinine hapsedecektir bu fonksiyon sayesinden Shell,fso ve zararlı toollar ile sunucunuzdaki diğer hesapların dizinlerine girmeleri zorlaşacaktır.Açmanızı öneriririm, zaten günümüz teknolojisi ile site başına php.ini yapılandırılması set edilebiliyor.

cPanel kullanıyorsanız, Security Center bölümünde open_basedir tweak alanından aktif edebilirsiniz.

Eğer başka bir kontrol paneli kullanıyorsanız, php.ini dosyasını “locate” komutuyla bulup open_basedir = On olarak değiştirmeniz gerekmektedir.
Security Center bölümünde cPHulk Brute Force Protection özelliğini aktif etmeniz cPanel’e gelebilecek brute force ataklarını engelleyecektir.
Ayrıca Security Center bölümündeki cPanel Security Advisor yazılımı ile sunucunuzu tarayabilir, güvenlik önlemenizi almanız için size güzel uyarılarda bulunacaktır.
Yine Security Center bölümündeki, Shell Fork Bom Protection özelliğinin aktif edilmesi kullanıcı hesapları üzerinden yapılabilecek Shell ataklarını engellemeye yönelik bir ayardır.
Son olarak Security Center bölümünde Compiler Access disable etmeniz gerekiyor.Zaten cPanel’de bu konuda böyle bir açıklama getirmiş. Kullanıcıların FTP üzerine attıkları dosyalarının gcc yardımı ile derlenebilir duruma getirir.Hiç bir hosting kullanıcı’nın böyle bir yetkiye sahip olmayacağını düşündüğümüzden dolayı bu ayarın disable olması önemli etkenlerden birtanesidir.

Hazır fonksiyonlara dalmışken Php ve Apache güvenlik ayalarınıda anlatıp, arkasından ddos ve smtp server güvenliğine değindikten sonra makalemizi bitirelim.
PHP ile yazılan Shell vardır mesela bunlar c99,r57,cgi-shell,bypass,smy Shell gibi buna benzer birçok Shell bulunmaktadır. Bu sheller ile sunucu üzerinde bulunan diğer hesapların dizinlerine belirli sistem fonksiyonlarını kullanarak erişebiliyorlar.Özellikle son zamanlarda smy Shell ile birçok sitenin canının yandığını söyleyebilirim.Biz bu shellerin kullandığı fonksiyonları kapatarak bir çok Shell komutunun çalışmasını engelleyeceğiz. Tabi bu fonksiyonlarının bazılarını kapatmamız müşterilerimiz tarafında sıkıntı oluşturacaktır.Eğer Apache serveri suexec modunda derlediyseniz bu sizin tarafınızda çokta sıkıntı yaratmayacaktır. Domain bazında php.ini dosyaları üreterek kullanıcılara özel php.ini yapılandırması sunabilirsiniz.

cPanel kullanıyorsanız; Php Configuration Editor sayesinde Disable_Functions bölümüne kapatmak istediğimiz fonksiyonları , belirterek yazarsanız php.ini dosyasını ssh üzerinden düzenlemeden buradan halledebilirsiniz.
Benim kullandığım fonksiyon listesi aşağıdaki gibidir.Sizde kendinize göre özelleştirebilirsiniz.

restore_ini,mail,openbasedir,system,dl,symlink,pcntl_exec,cat,passthru,fpassthru,exec,shell_exec,popen,proc_close,ini_alter,virtual,eval,proc_terminate,proc_open,pfpro_process,escapeshellarg,proc_nice,escapeshellcmd,proc_get_status,posix_mkfifo,posix_setpgid,pcntl_waitpid,foreach,pcntl_wexitstatus,posix_kill,leak,pcntl_wifexited,socket_listen,apache_note,socket_strerror,mysql_list_dbs,apache_child_terminate,socket_create_listen,pcntl_wifsignaled,pcntl_wifstopped,apache_getenv,apache_get_version,socket_create,socket_create_pair,pcntl_fork,get_current_user,pcntl_wstopsig,pcntl_wtermsig,openlog,apache_get_modules,getmyuid,pconnect,link,posix_setsid,posix_setuid,stream_select,socket_accept,passthru,proc_nice,show_source,ini_alter,syslog,socket_select,socket_bind,pcntl_signal,apache_setenv,cat

Fonksiyonun haricinde hosting hizmetini sağladığınız sitelerde perl,cgi gibi diller çalışmayacaksa apache üzerinde bunları engellemekte fayda var.

Linux sunucularda perl cgi nasıl engellenir. ?

httpd.conf dosyasını düzenliyoruz.

nano /etc/httpd/conf/httpd.conf

Addhandler diye aratıp ilgili satırdaki uzantıların basına # işaret koyarak çalışmasını engelliyoruz.
Örneğin ;

#AddHandler cgi-script .cgi .pl .perl .ppl .plx

Son olarak Perl kütüphanesine erişimi engellemek için chmod iznini değiştiriyoruz.

chmod 710 /usr/bin/perl

Son olarak ayarlamızın geçerli olması için apache yeniden başlatmamız gerekiyor.

service httpd restart

Sunucu üzerinde koşturabileceğiniz firewall ve güvenlik yazılımları;
APF,CSF,INETBASE vb yazılımsal firewallları kullanabilirsiniz.Çeşitli ddos saldırılarını bu yazılımlar sayesinde engelleyebilirsiniz. APF iptables kullanarak bir çok saldırıyı kesebilir hatta iptables kullanması bu konuda seçim özelliklerinden birtanesi olarak söyleyebiliriz.

Ayrıca Exploitleri engellemek için Config Server’in ürünü olan Exploit Scanner tercih ederseniz daha güvenli bir sunucuya Merhaba dünya demiş olursunuz. Kurulum, uzmanlık gerektiren bir konudur ücreti dahilindede olsa yazılımı üreten firma üstlenmemektedir.50 USD gibi biri ücreti var, bence hosted hizmeti verenler için çok büyük paralarda istemiyorlar ne dersiniz. ?

Ayrıca şunlara gözatmanızda fayda var,

http://www.configserver.com/
http://forum.whmdestek.com/whm-eklentileri-addons/5953-csx-config-server-exploit-scanner-tum-guvenlik-sorunlarinizi-gidermenin-yolu.html

Ayrıca konuyu daha kısa bitirebilmek adına Iptables ile ilgili çok kısa bir bilgilendirmede bulunacağım ve daha önce yazdığım bir bash scriptin işinizi fazlasıyla göreceği kanısındayım.
Iptables, Linux işletim sistemlerinde bulunan gelişmiş bir güvenlik duvarıdır. Bugün belki bir çok Linux alt yapısı kullanan donanımsal ve yazılımsal firewalların yükünü kaldıran iptables’dir desek yanlış bir şey söylemiş olmayız heralde.
Benim önerim, MySQL,SSH vb gibi servislerinin dışarıya açılmasını güvenli bulmuyorum.Bu ilgili servislerin dışarıya kapatılmasıda sizin açınızdan güzel bir güvenlik önlemi olacaktır.

Iptables ile ilgili kural oluşturma,sıfırlama vb yazıma buradan ulaşabilirsiniz.

http://sametyilmaz.com.tr/iptables-kurallarini-sifirlama-ve-bash-script-ile-otomatik-kural-olusturma.html
Ayrıca hem güvenlik hemde performans açısından Apache yerine Litespeed veya nginx tercih etmenizi öneririm.

Linix sunucular üzerinde spam mail gönderimi konusunda bir çok sorunla karşı karşıya kalabilirsiniz.Bu sorunlar genelde Relay ayarlarının yapılandırılamamasından,sendmail’in sunucuda açık bırakılması,SPF,PTR gibi kayıtların doğru girilmemesi vb bir çok nedenlerden dolayı sorunlar yaşabiliriz.
Öncelikle Php.ini fonksiyonlar listesine “ mail “ fonksiyonunu şiddetle eklemenizi öneriyorum.

 

Eğer cPanel kullanıyorsanız aşağıdaki Tweak Settings bölümündeki ayarları değiştirmenizi öneriyorum.
Initial default/catch-all forwarder destination : Fail
Mail authentication via domain owner password : On
Track email origin via X-Source email headers : On
Max hourly emails per domain : 100 (Domain başına saatlik 100 eposta limiti belirledik.)
Restrict outgoing SMTP to root, exim, and mailman (FKA SMTP Tweak) : On
Prevent “nobody” from sending mail : On
Add X-PopBeforeSMTP header for mail sent via POP-before-SMTP : On
Enable BoxTrapper spam trap : On

 

Yukarıdaki ayarlarda domain başına eposta gönderim limitleri ve sunucumuzda yetkili olmayan hesapların
sunucumuz üzerinden mail basmalarını ve giden epostalar header bilgileri eklemesi için mail server ayarlarımızı yapılandırdık.Tabi bu ayarlar sunucuya ve müşteri isteğine göre özelleştirilebilir.

Ayrıca Plugins bölümünden ClamAV Scanner Configuration yüklemenizde fayda var.

Standart SPF kaydı örneği :

 "v=spf1 a mx ipv4:212.172.34.34/32 ~ all"

Ayrıca bu ayarları Plesk Panel üzerinde de yapabilirsiniz.(Tabiki SSH üzerinden : )) Tool-> Settings bölümünden Relayı’da kapatmanızı şiddetle öneriyorum.
Dns Kontrolleriniz için intodns.com ve mxtoolbox.com sitelerini kullanabilirsiniz. Bugünlük bu kadar yeterli elimden geldiğince basit ve herkesin bu ayarları nasıl yapılandıracağı konusunda yardımcı olmaya çalıştım ilerleyen zamanlarda daha spefisik ve daha özelleştirilmiş bir güvenlik makalesinde görüşmek üzere….

Benzer Yazılar

Yorumlar

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


bir + = dört

Arama
RSS
Beni yukari isinla