Linux Sunucularda PHP.ini Düzenleme Ve Güvenlik | CodeWK
PHP

Linux Sunucularda PHP.ini Düzenleme Ve Güvenlik

PHP Nedir ?

Bir Sunucuda PHP uzantılı dosyaların çalıştırılabilmesi için gerekli olan yazılımlar/paketler yüklendikten sonra projenize bağlı olarak bazı değişiklikler yapmanız gerekebilir. Örneğin web sitenizde bir dosya yükleme alanı varsa buradan yüklenecek dosya boyutunu izinler dosyasından değiştirmeniz gerekebilir.

İşte bu ve bunun gibi önemli PHP ayarların barındırıldığı özel ayar dosyası php.ini dosyasıdır.

PHP.ini Dosyası nasıl düzenlenir ?

Bu makalede yer alan php.ini düzenlemesini tüm Linux VPS sunucularda gerçekleştirebilirsiniz.

cPanel, Directadmin, Plesk sunucular için php.ini yolu şu şekildedir ;

 /usr/local/lib/php.ini 

Eğer php.ini yolunuzu öğrenmek isterseniz şu komutu ssh üzerinden çaılştırmanız gerekiyor ;

$ php -i | grep php.ini

Yukarıda Gördüğünüz gibi yol ekrana gelecektir.

php.ini dosyamızı nano editör ile açalım ;

nano -w /usr/local/lib/php.ini

PHP.ini içerisinde istediğiniz değerleri bularak sunucu kaynaklarımıza veya scriptinizin ihtiyacı oranında yükseltelim ve kaydedelim.

Ardından apache veya nginx kullanıyorsanız nginx servisini ayarlarımızın yapılandırılması için son olarak baştan başlatıyoruz ;

service httpd restart & service httpd restart

Tebrikler Artık Linux Sunucularda PHP.ini düzenleyebiliyorsunuz. 🙂

Linux Sunucularda Güvenlik

1. Kernel

İlk olarak Kernel Sürümünüzü Güncel Tutmanız sizi bir çok sistem açığından koruyacaktır.

Peki Kernel Nasıl Güncellenir ?

Bu site üzerinden en güncel kernel sürümünü indirin.

Arşivden çıkarma işlemi

$ unzx -v linux-4.19.tar.xz
ya da
$ xz -d -v linux-4.19.tar.xz

Yapılandırma ayarlarları

$ cd linux-4.19
 $ cp -v /boot/config-$(uname -r) .config

Örnek çıktı:

'/boot/config-4.15.0-30-generic' -> '.config'

Gerekli geliştirici araçları yükleme

$ sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev

Kernel’i Yapılandırma

Kaynak kodların olduğu yerde aşağıdaki komuntlardan gerekli olanı yazıyoruz:

  • $ make menuconfig — Grafiksel arayüz ile yapılandırma
  • $ make xconfig — KDE Masaüstü ortamları için ideal yapılandırma
  • $ make gconfig — Gnome Masaüstü ortamları için ideal yapılandırma

Örnek komut kullanım şekli:
$ make menuconfig

Eğer make komutu bulunamadı hatası gelirse “sudo apt-get install make” ile indirmeniz gerekmekte !

Kernel’i Derleme

Sıkıştırılmış kernel imajını derlemek için alttaki komutu yazın:
$ make

Derleme hızını arttırmak için -j ile birden fazla çekirdek kullanabiliriz:
## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)

Kernel Modüllerini Yükleme

Alttaki komutla kernel modüllerini yüklüyoruz:

$ sudo make modules_install

Kernel’i Yükleme

Kernel derleme işlemi de bittiğine göre artık kernel yüklene bilir:
$ sudo make install

Bu yükleme işlemi alttakileri /boot dizinine yükleyecektir:

  • initramfs-4.19.img
  • System.map-4.19
  • vmlinuz-4.19

Grub Yapılandırmasını Güncelleme

Grub2 yükleyicisinin yapılandırma ayarlarını yapmamız gerekmekte.

Bu komutlar isteğe bağlıdır. make install işlemi bu işlemleri zaten yapmış olacaktır. Yine de vermekte fayda var:
$ sudo update-initramfs -c -k 4.19
$ sudo update-grub

İşlemi Sonlandırma

Sistemi yeniden başlatma komutunu giriyoruz:
# reboot
Yeniden başlatıldıktan sonra, Linux Kernel Versiyon’unu kontrol ediyoruz:
$ uname -mrs

Örnek çıktımız:

Linux 4.19 x86_64

2. PHP “Disable Functions”

PHP.ini Düzenlemeyi göstermiştik en başta hatırlarsınız. Şimdi ise PHP.ini içerisindeki Disable Function yani “Kapalı Fonksiyonlar” için bazı değerler gireceğiz. Bunun sebebi ise Sistemdeki User’lerin erişimini kısıtlayarak saldırıları minimum’a indirmek.

Örnek Kod ;

disable_functions=exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

3. SSH Port’unu Değiştirmek

SSH portunu değiştirmek sunucu güvenliği için gerekli bir işlemdir.Kurulum sonrası varsayılan olarak gelen 22 portu veya sık kullanılan SSH portları sürekli bot’lar tarafından taranmaktadır.Sunucunuzun hacklenmemesi için bilindik ya da varsayılan portları kullanmamanızı tavsiye ederim.

nano /etc/ssh/sshd_config

komutu ile SSH ayarlarının bulunduğu dosyayı açıyoruz. Bu dosya içerisinde aşağıdaki şekilde portu belirten bir bilgi olacaktır.

sshport

Buradaki #Port 22 olan bölümü unutmayacağınız bir port ile değiştirebilirsiniz.Yeni gireceğiniz portun sürekli kullanılan ya da bilindik bir port olmamasına dikkat ediniz. Değişikliği yaptıktan sonra CTRL+X ve sonrasında Y tuş kombinasyonu ile dosyayı kaydedip çıkış yapabilirsiniz.Yapmış olduğunuz port ayarının aktif olabilmesi için son olarak sshd servisine restart atmanız gerekiyor.

/etc/init.d/sshd restart

4.Python ve Perl Güvenliği

Son zamanlarda cgi-telnet scriptleri ile sunuculara sızmaya çalışan ve ln ile hedef sitenin içerisine müdahale eden mudavimlerle dolu sanal ortam maalesefki . bu konuda aşağıdaki işlemleri uygulayarak kalıcı çözüm oluşturabilirsiniz.

nano /etc/httpd/conf/httpd.conf

Komutu ile apache konfigurasyon dosyasına erisim sağlayarak akabinde aşağıdaki satırı bulun ( kismi olarak bulunabilir addhandler diye aratabilirsiniz )

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

Daha sonra bu komutun başına bir sharp işareti ekleyerek etkisiz hale getiriniz.

Örn : # AddHandler cgi-script .cgi .pl .plx .ppl .perl

Daha sonra Perl Kütüphanesine erişimi engellemek için ;

chmod 710 /usr/bin/perl 

komutunu ssh üzerinde çalıştırınız . en son olarak apache ‘yi restart ediyoruz.

 /etc/init.d/httpd restart

Aynı işlemi Plesk için aşağıdaki komutlar ile gerçekleştirebilirsiniz.

chmod 700 /usr/bin/perl
 /etc/init.d/httpd restart & service apache restart

Artık Cgi-Telnet erişimi kapanmıştır. Bazı Cgi-Telnet bağlantıları python ile çalışmaktadır aynı işlemleri python kütüphanesi için yapabilirsiniz.

5. Veri Akışını kesmek

Kötü amaçlı kullanımlar için, örneğin basit icmp saldırılar için en güvenli yol sunucuyu dışarıdan ping’e kapatmaktır. Pingi kapatmak ddos saldırılarından bizi korumaz, yalnızca isteklere kapatır. Bunun sunucumuza veya site erişimlerine bir zararı yoktur hatta faydası vardır.

Ping i kapatmak için ssh ile login olduktan sonra nano komutu ile aşağıdaki kısıma erişiyoruz;

nano /etc/sysctl.conf

Daha sonra aşağıdaki komutu en alt satıra ekliyoruz, kaydedip çıkıyoruz;

net.ipv4.icmp_echo_ignore_all=1

Değişiklikleri uygulamak için aşağıdaki komutu çalıştırıyoruz;

sysctl -p

Farklı bir bilgisayardan alan adımızı veya ip adresimizi pinglediğimizde zaman aşımına uğrayacaktır.

Yeniden ping erişimine açmak istersek aşağıdaki komutu çalıştırıyoruz;

nano /etc/sysctl.conf

En aşağıda eklediğimiz satırı siliyoruz ve kaydedip çıkıyoruz.

Değişikliği uygulamak için aşağıdaki komutu çalıştırıyoruz.

sysctl -p

İşlemimiz bu kadar.

6. Fail2Ban

Fail2ban belirli servislere ait log dosyalarını takip ederek başarısız login girişimlerini tespit eder ve bu denemeler belirli bir sayıya ulaştığı zaman ilgili aktivitenin kaynak IP’si için Iptables’a bir drop kuralı ekler. Sisteminizde iptables yoksa ya da iptables kullanmak istemiyorsanız aynı şeyi tcpwrapper ile de yapabilir ve ilgili IP adresini hosts.deny dosyasına ekler. Ancak bu durum sadece tcpwrapper kullanan (örn: sshd) servisler için geçerlidir. Mesela apache tcpwrapper kullanmaz bu nedenle apache için iptables kullanmanız gerekir.

Fail2ban ile reject edilen IP adresleri için öntanımlı olarak 5 dakikalık bir ban süresi bulunmaktadır. Ban süresi dolan IP adresleri için girilen drop kuralları (ya da hosts.deny girdileri) sistemden kaldırılır. Sonuç olarak ban durumu kalıcı değildir ve süre sonunda ilgili IP adresleri tekrardan erişim sağlayabilirler.

Bunun yanı sıra, Fail2ban, banlanan ipleri mail yolu ile raporlayabilir; böylece sunucudaki aktivite ile ilgili bilgi edinebilirsiniz.

Bu kısa bilgilendirmeden sonra kurulum ve yapılandırma kısmına geçebiliriz.

Kurulumu kaynak koddan yapıyorum. Bu nedenle şimdi “/usr/local/src/” dizinine geçerek son “http://sourceforge.net/projects/fail2ban/files/” adresinden fail2ban’ın son sürümünü download edelim.

(Şu an son sürüm 0.8.4’tür. Siz download etmeden önce kontrol edin.)

# cd /usr/local/src # http://downloads.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2?use_mirror=ignum 

Şimdi tar.bz2 dosyasını açıp kurulumu yapmak için fail2ban dizinine geçiyoruz.

# tar xjvf fail2ban-0.8.4.tar.bz2 # cd fail2ban-0.8.4 

Kurulum aşağıdaki gibi setup.py scripti üzerinden yapılmaktadır.

# python setup.py install 

Yükleme işlemi bittikten sonra fail2ban binary dosyaları /usr/bin dizinine, yapılandırma dosyaları ise /etc/fail2ban dizinine konulur.
Ancak yapılandırmaya başlamadan önce fail2ban’ı sisteme servis olarak ekleyelim.

# cp /usr/local/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban # chmod 755 /etc/init.d/fail2ban # chkconfig --add fail2ban # chkconfig fail2ban on 

Şimdi fail2ban’ı start edelim. (Ön tanımlı ayarlarda herhangi bir servis için ban özelliği aktif değildir.)

service fail2ban start 

Böylelikle Fail2Ban Kurulumumuzu tamamlamış oluyoruz.

7. Bash Güvenlik Açığı

Linux sistemleri etkileyen , heartbleed ten daha tehlikeli gözüken yeni bir açık bulundu , en kısa sürede bash’i güncellemelisiniz ,açıktan etkilenip etkilenmediğinizi anlamak için terminal de aşağıdaki komutu çalıştırınız.

# env x='() { :;}; echo vulnerable’ bash -c “echo this is a test”

Eğer çıktısı aşağıdaki gibi ise acilen yama yapmalısınız.

vulnerable
this is a test

Eğer komutu çalıştırdığınızda aşağıdaki sonucu görüyor iseniz Sizin korkacak bir şeyinizi yok demektir.

bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x’
this is a test

8. Cloudflare

Cloudflare web performansını arttıran ve web sitenizin güvenliğini arttırmaya yarayan bir hizmettir. Cloudflare free planı sayesinde CloudFlare CDN, SSL, DDoS koruması gibi birçok özelliği ücretsiz olarak kullanabiliyorsunuz. Cloudflare’in genel özelliklerinden bahsettikten sonra gelelim bu özelliklerin ne işe yaradığına:

1. CDN Nedir?

cloudflare-cdn-haritasi

CDN’nin açılımı Content Delivery Network olup Türkçe anlamı İçerik Dağıtım Ağı’dır. CDN’nin amacı kullanıcılara sitenin en hızlı şekilde ulaştırılmasıdır.
Peki CDN nasıl çalışıyor?
CDN dünyanın birçok yerine dağıtılmış sunucuların bir alt yapısıdır. Bu yapıda kullanıcı hangi ülkedeyse o ülkeye en yakın sunucuya ulaşıyor. Bu sayede kullanıcı uzaktaki sunucuya bağlanıp zaman kaybetmiyor. Bu yüzden hızlandırma açısından önemli bir özellik.
Ayrıca sitenizin hızlı açılması SEO açısından da çok faydalıdır.

2. DDoS Koruması Nedir?

ddos-saldirisi

DDoS saldırganlar sizin sunucunuza çok sayıda PC üzerinden istekler gönderir ve sunucuyu meşgul ederler. Bu şekilde sunucu yoğunluktan yanıt veremez olur ve sunucunuz çöker. İşte Cloudflare sitenize yapılan DDoS saldırılarını bir noktaya kadar önleyebiliyor.
Cloudflare DDoS’u nasıl engelliyor?
Sitenize gelen trafik önce Clodflare sunucusuna erişiyor ve sistem burada saldırgan davranışlarını tespit ederek sitenize ulaşmasını engelliyor.

3. SSL Sertifikası nedir?, Ne işe yarar?

SSL internet üzerinde bilgi aktarımı sırasında bilgininin gizlilik ve güvenliğini saplamak için yapılmış bir güvenlik protokolüdür. Bu SSL sertifikasını sitenin https ile başlaması ve yeşil kilit bulundurmasıyla anlayabiliriz. Siz de Cloudflare ile sitenize SSL sertifikası ekleyebilirsiniz.

4. Trafik analizi

Sitenizin analizi için genelde Google Analytics gibi araçlar kullanılıyor. Ancak Javascript ve pixel tracking yöntemleriyle elde edilemeyen kullanıcıları Cloudflare ile görebilirsiniz.

5. Önbellekleme

Sunucunuz tarafından dinamik şekilde oluşturulmayan sayfaları otomatik olarak tanır, bu sayfaları kendi sunucularında önbellekleyerek hem sunucunuzdaki trafiğinizi azaltır hem de sayfa yükleme sürelerinizi azaltır.

6. Spam Yorum Koruma

CloudFlare sitenize gelen spam yorum sayısını en aza indirgemek için üçüncü parti birçok uygulamadan yararlanır.

7. Dosya Optimizasyonu

Cloudflare Javascipt, CSS gibi dosyalarınızı sıkıştırarak sitenizi daha hızlı açılmasını sağlıyor.

8. Her Zaman Online

Eğer sunucunuz çökerse CloudFlare sitenizin önbelleğe alınmış halini servis ediyor. Bu sayede sitenize giren kullanıcılar hata sayfası almayacak sitenizi görüntüleyebilecek.

Evet arkadaşlar umarım hazırladıgım makaleyi beğenmişsinizdir.Başka makalelerde görüşmek üzere..

Etiketler
Daha Fazla Göster

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu

Reklam Engelleyici Algılandı

Lütfen reklam engelleyiciyi devre dışı bırakarak bizi desteklemeyi düşünün