1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.

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

'Web Güvenliği - Web Security' forumunda INFAZ tarafından 22 Eylül 2019 tarihinde açılan konu

  1. INFAZ

    INFAZ Ziyaretçi

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

    [​IMG]
    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
    [​IMG]
    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.

    [​IMG]
    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/pr...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?
    [​IMG]
    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?
    [​IMG]
    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.
     
    Scrumple bunu beğendi.
  2. MrX

    MrX ~ʀ00ᴛ@ᴍʀx: ꜰ*ᴄᴋ ᴅʀᴇᴀᴍꜱ.. Legendary

    Katılım:
    22 Eylül 2019
    Mesaj:
    828
    Alınan Beğeniler:
    295
    Cinsiyet:
    Erkek
    Şehir:
    Ağın İçindeki Ağ!
    eline sağlık
     
  3. INFAZ

    INFAZ Ziyaretçi

    saolasın bromm
     
  4. Scrumple

    Scrumple New Member New Member

    Katılım:
    24 Eylül 2019
    Mesaj:
    135
    Alınan Beğeniler:
    49
    Cinsiyet:
    Erkek
    Şehir:
    İstanbul
    eline sağlık knk