pam arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me cypm! Sun, 23 Jul 2017 18:41:44 +0000 tr hourly 1 https://wordpress.org/?v=6.0 https://canyoupwn.me/wp-content/uploads/2016/02/cropped-Başlıksız-1-32x32.png pam arşivleri • CanYouPwnMe! - For Cyber Security Researchers https://canyoupwn.me 32 32 TR | Linux PAM Modülü https://canyoupwn.me/tr-linux-pam-modulu/ https://canyoupwn.me/tr-linux-pam-modulu/#respond Thu, 29 Sep 2016 06:30:25 +0000 https://canyoupwn.me/?p=4221 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PAM (Pluggable Authentication Modules), servislere göre farklı kimlik denetleme yöntemleri belirleyebilmeyi sağlayan bir sistemdir. Linux dağıtımlarında kullanıcı bilgisi /etc/passwd dosyasında saklanır. Bu metin dosyasında kullanıcının kullanıcı adı, şifrelenmiş parolası, benzersiz sayısal kullanıcı kimliği (uid), sayısal grup kimliği (gid), seçimlik yorum alanı (kullanıcının gerçek adı, telefon numarası vb. bilgiler), ev dizini ve tercih ettiği kabuk bilgileri bulunur. Bir […]

TR | Linux PAM Modülü CanYouPwnMe

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PAM (Pluggable Authentication Modules), servislere göre farklı kimlik denetleme yöntemleri belirleyebilmeyi sağlayan bir sistemdir.

Linux dağıtımlarında kullanıcı bilgisi /etc/passwd dosyasında saklanır. Bu metin dosyasında kullanıcının kullanıcı adı, şifrelenmiş parolası, benzersiz sayısal kullanıcı kimliği (uid), sayısal grup kimliği (gid), seçimlik yorum alanı (kullanıcının gerçek adı, telefon numarası vb. bilgiler), ev dizini ve tercih ettiği kabuk bilgileri bulunur.

Bir sistemde gölgelenmiş parolalar aktif edildiğinde  /etc/passwd  dosyasındaki parola alanına x yazılır.

passwd

 

Kullanıcının gerçek şifrelenmiş parolası  /etc/shadow  dosyasında saklanır.

shadow

Login veya su gibi programlar parolaları nasıl doğrulayacaklarını nereden bildiğini veya sistemdeki parolaların saklanma biçimini değiştirirseniz neler olacağını öğrenmek için PAM e bakalım.

PAM belirli programların kullanıcı kimlik kanıtlaması yapamayacağı, sadece belirli kullanıcıların kimlik kanıtlaması yapabileceği, bazı programlar kimlik kanıtlaması yapmak istediğinde uyarı verecek şekilde ve hatta tüm kullanıcıları oturum açma ayrıcalıklarından mahrum bırakacak şekilde yapılandırılabilir.

PAM, iki bileşenden oluşmaktadır:

  • Biri API ( Application Programming Interface – Uygulama Programlama Arayüzü ) sağlar.
  • Diğeri kimlik denetimini gerçekleştirir.

PAM modülleri 4 farklı görev için kullanılmaktadır. Bu görevler;

  • kimlik denetim yönetimi,
  • hesap yönetimi,
  • oturum yönetimi
  • şifre yönetimi.

Önemli pam modülleri ; pam_unix, pam_nologin, pam_ldap, pam_securetty, pam_limits, pam_access, pam_warn, pam_deny, pam_permit olarak sayabiliriz.

 

Pam_limits modülünü inceleyecek olursak;

limitconf

Kişi / Grup : @student – user

Kısıtlama : soft – hard

Kaynak : core – rss – nproc

Değer : 0 – 100000 – 20 – 50

Tanımlamalar ;

core : Core dosyasının boyutu (KByte)

data : Kullanıcının çağırdığı programlarda ayrılacak maksimum hafıza (KByte)

fsize : Kullanıcı en büyük kaç KB’lık dosya yaratabilir.

nofile : Aynı anda açılabilecek dosya sayısı.

nproc : Maksimum uygulama sayısı.

rss : KByte cinsinden hafıza kaplacak yer.

maxlogins : Sisteme aynı anda kaç kere login olabilir.

soft : kullanıcı kendine göre tanımlayabilir.

hard : son limitler, kullanıcılar değiştiremez.

NOT : @ işareti grubu ifade eder, “*” ise tümü demektir.

 

 PAM yapılandırması

  • Her servis için ayrı olan yapılandırma dosyaları /etc/pam.d dizini altında olmalıdır.etcpam

 

  • Tüm yapılandırma tek bir dosyada tutulur ve bu dosya  /etc/pam.conf dosyasıdır.etcpamconf

 

PAM SSH Servisi Konfigürasyon Örneği

PAM, sunucunuza erişimi zorlaştırmanın ve ekstra güvenlik kuralları sağlamanın yollarından biridir. Sunucunuza hangi kullanıcıların erişebileceğini belirlemek için alternatif bir çözümdür.

sshd

  1.  PAM Modül Tipi

  • Auth : Kullanıcı doğrulama, kimlik denetetimi yapar.
  • Account: Kullanıcının sisteme girebileceği saatlerin belirlenmesi, bir kullanıcının en fazla kaç oturum açabileceği gibi bilgileri kontrol eder. Kullanıcının servise erişmeye izni olup olmadığını, parolasının süresinin geçip geçmediğini tespit eder.
  • Session:Kullanıcının oturumu sırasında ve oturum sonrasında yapılması gereken rutin işlemleri kontrol eder. (şifre kaydetme, mount etme vs.)
  • Passwd:Kullanıcının kimlik denetimi verilerinin güncellenmesini denetler.

 

  1. PAM Kontrol Bayrağı – Denetim:

  • Required:PAM kimlik kanıtlamasını reddetmeden önce bu servis için listelenmiş diğer modülleri denemeye devam etse de; sonuç kimlik kanıtlamasının reddi ile başarısızlık olur.
  • Requisite:“required” seçeneğinden  farklı olarak, eğer bir modül başarısız olursa işlemin başarısız olduğu uygulamaya hemen bildirilir. Derhâl reddedilir.
  • Sufficient:“Sufficient”, kontrol bayrağına sahip bir modül başarılı olduğu takdirde, önceki modüllerde başarısız olsa bile, işlemin başarılı olduğu uygulamaya bildirilir.
  • Optional:“Optional” kontrol bayrağına sahip bir modülün başarısı veya başarısızlığı işlemin başarısını etkilememektedir.

 

  1. PAM Modül Dosyalarının Yeri:

  • PAM modülünün sistem içindeki yerini, dizinini belirtir. PAM, hangi modülü kullanacağını ve modülleri nerede bulacağını burada verilen yol sayesinde bilir. Çoğu yapılandırma sadece modülün adını içerir. Böyle durumlarda, PAM öntanımlı PAM modül dizinine bakar, bu normalde/usr/lib/security

 

  1. PAM Arguments (Modül Argümanları):

    Modüle gönderilecek olan argümanlar, modüllerin parametreleridir. Her modülün, kendi parametresi vardır. Örnek olarak; en çok kullanılan modüller şu şekilde sıralanabilir.

pam_unix.so temel kimlik kanıtlama modülüdür. Bu modüle “null ok” parametresi gönderilirse, boş parola geçerli anlamına gelir.
pam_warn.so sistem günlüklerine uyarı mesajı kaydeder.
pam_deny.so kimlik denetimini reddeder.
pam_rootok.so kimlik denetimi yapılırken kullanıcının root olup olmadığını kontrol eder.
pam_securetty.so  kullanıcının güvenli konsola oturum açtığından emin olmayı sağlar.
pam_lastlog.so  kullanıcının en son açtığı oturum ile ilgili bilgileri getiren modüldür.

 

Sudo Komutunun Engellenmesi

Linux işletim sistemlerinde root olarak eylem yapabilmeyi sağlayan sudo komutu /etc altındaki “sudoers” dosyasında yapılan değişikliklerle engellenebilir.

Sudoers dosyasının içerisindeki; sudo komutunun çalışmasını sağlayan satırın önündeki yorum işareti kaldırılırsa, sudo komutunu çalıştırma izni sadece “wheel” grubundaki kullanıcılara verilmiş olur.

# wheel    ALL=(ALL)    ALL

etcsudoers

NOT: Kullanılan linux dağıtımında böyle bir yorum satırı olmayabilir, böyle durumlarda satır dosyaya eklenmelidir.

 

Örnek Senaryo: Root hariç diğer kullanıcıların belirli zamanlarda login işlemini yapabilmelerine izin verelim.

Bu erişim yetkilendirme için bize zaman kısıtlamaları sunan pam_time modülünü kullanalım. Pam_time modülü yapılandırma dosyası /etc/security  altındaki  time.conf dosyasıdır.

Not: Başka yollar denemek isterseniz pam_time’a benzeyen pam_access ve  pam_listfile modüllerine bakabilirsiniz.

Aşağıda görüldüğü gibi time.conf dosyasında,

login ; tty* & !ttyp* ; !root ; !WdSu0000-2400

login islemi için root hariç diğer tüm kullanıcılar haftanın pazar günü hariç giriş yapılabilsin, demek istiyorum. Hangi gün istiyorsanız WdMo, WdSa  şeklinde Wd(weekend) ve günün ilk 2 harfi şeklinde veya tüm zamanlar için Al şeklinde yazabilirsiniz.

timeconf

Ayrıca /etc/pam.d altında login dosyasına ek olarak account satırı ekliyoruz.

tmmm

Ve komut satırından deneme kullanıcısı için login olmak istediğimizde erişim kısıtlamasıyla karşılaşıyoruz.

permissndenied

Kaynaklar:

http://linux.die.net/man/5/time.conf

http://linux.yorenet.com/?hn=483&kn=241&dil=tr&kw=Daha+Guvenli+SSH+Baglantilari

http://dincer.info/yazi/linux-pam-ile-kimlik-denetimi


TR | Linux PAM Modülü CanYouPwnMe

]]>
https://canyoupwn.me/tr-linux-pam-modulu/feed/ 0
TR | Linux Gereksiz Servislerin Kapatılması https://canyoupwn.me/tr-linux-gereksiz-servislerin-kapatilmasi/ https://canyoupwn.me/tr-linux-gereksiz-servislerin-kapatilmasi/#respond Sat, 27 Aug 2016 16:11:38 +0000 https://canyoupwn.me/?p=3635 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Sisteminize yüklü olarak gelen fakat kullanmadığınız servisleri kapatmak hem güvenlik hem de performans açısından yararlı olacaktır. Kullanmadığınız servisler sistem kaynaklarını neden boşa harcasın ki ? Ya da kullanmadığınız servis üzerinde çıkan güvenlik zafiyeti yüzünden neden zarar görelim?   Servisimizi durdurur systemctl stop servisadı Servisimizi başlatır systemctl start servisadı Servisimizi yeniden başlatır systemctl restart servisadı Servisimizi […]

TR | Linux Gereksiz Servislerin Kapatılması Gökay Atar

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Sisteminize yüklü olarak gelen fakat kullanmadığınız servisleri kapatmak hem güvenlik hem de performans açısından yararlı olacaktır. Kullanmadığınız servisler sistem kaynaklarını neden boşa harcasın ki ? Ya da kullanmadığınız servis üzerinde çıkan güvenlik zafiyeti yüzünden neden zarar görelim?

 

  • Servisimizi durdurur
systemctl stop servisadı
  • Servisimizi başlatır
systemctl start servisadı
  • Servisimizi yeniden başlatır
systemctl restart servisadı
  • Servisimizi kesintiye uğratmadan yapılandırma dosyasını yeniden yükler
systemctl reload servisadı
  • Servislerimizin durumunu gösterir
systemctl status servisadı
  • Aktif sistem servisleri listeler
systemctl list-units --type service
  • Tüm sistem servislerini listeler
systemctl list-units --type service --all
  • Servisimizin sistem başlangıcında başlatır
systemctl enable servisadı
  • Servisimizin sistem başlangıcında açılmasını kapatır
systemctl disable servisadı
  • Servislerin etkin olup olmadığını gösterir
systemctl list-unit-files --type service
  • Servis konfigrasyonlarını gösterir
systemctl show servisadı
  • Servis bağımlıklarını gösterir
systemctl list-dependencies servisadı
  • Sistemde dinlenen soketleri gösterir
systemctl list-sockets
  • Sistemde sorun çıkaran servisleri gösterir
systemctl --fail
  • Uzaktaki sunucun servis yapılandrıması için
systemctl -H kullanıcı@host komut servisadı
  • Aktif işleri gösteir
systemctl list-jobs
  • Servis loglrarını gösterir
journalctl -u servisadı
  • Şimdi basitçe etkin ve etkin olmayan servislerimize bakalım bunun için şu komutu kullanıyorduk
systemctl list-units --type service

1

  • Yukarıda ki listede sistem tarafından otomatik çalıştırılan ama benim kullanmadığım servisler var. Mesela bluetooth servisini ele alalım.  Bluetoothu kullanmıyoruz kapatmak için
systemctl stop bluetooth.service

komutunu verebiliriz.  Fakat sistem yeniden başladığında bluetooth servisimiz otomatik olarak yeniden açılacak eğer sistem başlangıcında da açılmasını istemiyorsak

 systemctl disable bluetooth.service

komutunu verebilirz.

  • Şimdi servisimizin durumunu kontrol edelim
 systemctl status bluetooth.service

3

Böylece kullanmadığımız servisi kapatmış olduk.

İhtiyaç duymadığınız ya da gereksiz yere amacınız dışında işlem yapan servislerinizi tespit ederek kapatmanız bir nebze size yarar sağlayacaktır.


TR | Linux Gereksiz Servislerin Kapatılması Gökay Atar

]]>
https://canyoupwn.me/tr-linux-gereksiz-servislerin-kapatilmasi/feed/ 0
TR | Linux PHP Sıkılaştırma https://canyoupwn.me/tr-linux-php-sikilastirma/ https://canyoupwn.me/tr-linux-php-sikilastirma/#respond Fri, 12 Aug 2016 07:20:21 +0000 https://canyoupwn.me/?p=3620 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PHP Sıkılaştırma Linux sistemlerimiz üzerinde yüklediğimiz PHP için başlangıçta gelen ayarlara ek olarak bazı değişiklikler yapmamız gerekmektedir.Default olarak gelen ayarlar kısmında güvenlik konusunda eksiklikler bulunmaktadır ve bunların bilinçli bir şekilde giderilmesi gerekmektedir.Bütün bu işlemlere başlamadan önce ilk hedefimiz düşmanımızı tanımak olmalıdır.Bu anlamda karşıdan bize gelebilecek olan saldırı türleri ve detayları hakkında ne kadar çok bilgi […]

TR | Linux PHP Sıkılaştırma Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

PHP Sıkılaştırma

Linux sistemlerimiz üzerinde yüklediğimiz PHP için başlangıçta gelen ayarlara ek olarak bazı değişiklikler yapmamız gerekmektedir.Default olarak gelen ayarlar kısmında güvenlik konusunda eksiklikler bulunmaktadır ve bunların bilinçli bir şekilde giderilmesi gerekmektedir.Bütün bu işlemlere başlamadan önce ilk hedefimiz düşmanımızı tanımak olmalıdır.Bu anlamda karşıdan bize gelebilecek olan saldırı türleri ve detayları hakkında ne kadar çok bilgi sahibi olursak kendimizi koruma konusunda o kadar başarılı oluruz.Sadece başlıklar halinde bahsetmek gerekirse zaafiyetler aşağıdaki gibi listelenebilir

  • Full Path Disclosure
  • Arbitrary File Upload
  • Arbitrary File Delete
  • Arbitrary File Download
  • Local File Inclusion
  • Remote File Inclusion
  • Cookie Injection
  • Header Injection
  • Sql Injection
  • Xml Injection
  • XXE Injection
  • Email Injection
  • Html Injection
  • Xpath Injection
  • Code Injection
  • Command Injection
  • Object Injection
  • Cross Site Scripting
  • Cross Site Request Forgery
  • Broken Authentication and Session Management

Evet ilk adımı gerçekleştirdik.Şimdi ise PHP yüklendiği zaman hazır gelen modülleri inceleyelim.Burdaki amacımız PHP modülleri arasında bizim ihtiyacımız olmayanları bulmak ve onları ihtiyacımız olana dek kaldırmaktır.

php -m

php1

Burada listelenenler arasından kaldırmak istediğimiz modülü 3 farklı şekilde kaldırabiliriz.

– rm komutu ile silebilirsiniz
– mv komutu ile adını değiştirebiliriz
– config ayarlarını değiştirerek disable edebiliriz.

Fakat burada belirtilen bütün modülleri kaldırmamıza PHP izin vermemektedir.Bunun için yapmamız gereken ilk kurulumda yüklenilmesi istediğimiz modülleri belirterek bu işlemi gerçekleştirmektir.

Bu adımı da hallettikten sonra şimdi sahip olduğumuz PHP’nin dışarıya bilgi sızdırmasını engellemeye çalışacağız.Bunun için php.ini dosyası içinde yer alan expose_php özelliğini

expose_php=off

şeklinde değiştiriyoruz.Burdaki amacımız PHP’nin dışarıya hangi server üzerinde çalıştığımız,hangi PHP versiyonunu kullandığımızı gibi bilgileri vermesini engellemektir.

PHP üzerinde bir hata oluştuğu zaman bu hatayı hata mesajı şeklinde dışarıya vermemek için yine php.ini içinde display_errors özelliğini disabled etmemiz gerekmektedir.

display_errors=Off

Disable ettiğimiz bu hata mesajlarını daha sonra log_erros özelliğini aktif ederek log kayıtları şeklinde tutmamız gerekmektedir.

log_errors=On
error_log?/var/log/httpd/php_scripts_error.log

Daha sonra yine php.ini dosyası içindeki file_uploads özelliğini kapatmamız gerekmektedir.

file_uploads=off

Burdaki amacımız dışarıdan bizim istediğimiz dışında dosya girişine izin vermemek ve bunu en basit yoldan engellemektir. Projemizde dışarıdan dosya alımı gibi bir işlev kullanmamız gerektiğini farzedelim.Bu gibi durumlarda yapmamız gereken file_upload özelliğini aktif etmek ve buna ek olarak dışarıdan gelen dosyaların maksimum boyutlarını belirtmemiz gerekmektedir.

file_uploads=On
upload_max_filesize=1M

Yukarda bahsi geçen saldırı çeşitlerinden RFI saldırısına karşı önlem almak amacıyla php.ini dosyası içerisinde yer alan allow_url_fopen ve allow_url_include özelliklerinin kapatılması gerekilmektedir

allow_url_fopen=Off
allow_url_include=Off

Yine aynı şekilde php.ini dosyası içerisinde yer alan sql.safe_mode özelliğini de aktif etmememiz gerekmektedir.

sql.safe_mode=On

Bunu özellliği aktif hale getirdiğimiz zaman mysql_connect,mysql_pconnect gibi fonskiyonlar dışarıdan gelen argümanları göz ardı ederek sadece başlangıçta bizim tanımladığımız parametrelere göre hareket etmektedir.
Sonraki adımda yapmamız gereken POST işlem boyutlarını kontrol sınırlamaktır.Bunun için yapmamız gereken php.ini dosyası içerisinde post_max_size ifadesine değer atamaktır.

post_max_size=1K

Bunu yapmaktaki amacımıza gelecek olursak eğer karşımızda kötü niyetli bir kullanıcı varsa,bizim sistemimize boyutu çok büyük bir POST isteği atmayı deneyebilir ve böylece bizim kaynaklarımızı sömürmüş olur.Bİzde bu ve bunun gibi durumlardan kaçınmak için bunun üst sınırını belirleyerek önlem alırız.

Şimdi ise sahip olduğumuz kaynakların kontrolünü sağlamak için yine php.ini dosyası içindeki bazı değerleri belirleyeceğiz.

max_execution_time = 30
max_input_time = 30
memory_limit = 40M

Yukarıdaki işlemlerde bir PHP scriptinin maksimum çalışma zamanını,yine bu script için maksimum input süresini belirlemiş olduk.Son olarak ise bir PHP scriptinin tüketebileceği maksimum hafıza miktarı için limit belirleyerek kontrolsüz bir şekilde bir PHP sayfasının kaynaklarımızı harcamasına engel oluyoruz.
Bir sonraki güvenlik önlemi olarak PHP içinde yer alan ve tehlikeli olarak adlandırılan fonskiyonları kaldırmaktır.Bunun için php.ini dosyasında aşağıdaki ayarları yapmamız gerekmektedir.

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

Buradaki amacımızdan bahsetmeden önce burda kullanılan fonksiyonlardan bazılarından bahsedelim.

shell_exec fonksiyonu kabuk üzerinde komut çalıştırılmasını sağlar ve çalışan komutun çıktısını geri döndürür.

curl_exec fonksiyonu bir curl oturumunu işleme sokar

parse_ini_file fonksiyonu ise bir yapılandırma dosyasını çözümler.

Evet bazı fonksiyonlardan bahsettik ve gördüğünüz üzere bu fonksiyonlar dışarıdan sistem üzerinde komut çalıştırılması,dışarıya bilgi çıkarılması gibi tehlikeli durumlara sebep olabilmektedir.Bu yüzden bu fonskiyonların disabled edilmesi gerekmektedir.

Şimdi ise PHP’nin hangi klasör yapısı altında çalışmasına izin verileceğini belirlememiz gerekmektedir.Tek klasör altında çalışmasına izin verilebileceği gibi birden fazla klasör altında çalışmasına izin de verilebilir.Bunun için php.ini dosyası içerisinde

 

open_basedir="/var/www/html"

şeklinde düzenleme yapabiliriz.Böylelikle bu klasöre yetkisi olmayan kişilerin sistem üzerinde PHP kodlarını çalıştırmasını engellemiş oluruz.
PHP üzerinde gerçekleşen session işlemlerinin kayıtlarının tutulduğu bir dizin vardır.Bu dizin bütün kullanıcılara açık bir dizin ise session ile ilgili bilgileri başkalarının da okumasına olanak sağlar.Bu durumdan korunmak için php.ini dosyası içinde aşağıdaki değişikliği yaparız.

session.save_path="/var/lib/php/session"
upload_tmp_dir="/var/lib/php/session"

Daha sonra belirlediğimiz yolu sadece root yetkisi ile müdahale edilecek şekilde değiştirelim

chmod 0700 /var/lib/php/session

En son olarak kontrol ettiğimizde çıktı bu şekilde olmaktadır.

php2
Bunun dışında daha genel bir güvenlik önlemi olarak sistemimi her zaman güncel tutmamız gerekmektedir.Bunun için Linux,Apache,PHP ve MySQL için gelen güvenlik güncellemelerini almamız önerilmektedir.Eğer PHP’yi paket yöneticisi ile kurduysak

yum update

komutu ile ya da

apt-get update && apt-get upgrade

komutu ile güncellemeleri alabiliriz.

Sonraki adım olarak dosya ve dizin erişimi üzerinde değişiklikler yapmalıyız.Öncelikli olarak Apache’yi root olmayan bir kullanıcı ile çalıştırmamız gerekmektedir.Bütün dosyalar ve dizin yapısı root olmayan bir kullanıcı tarafından sahiplenilmedilir.Bunun için aşağıdaki kod ile dizinin sahibini direk olarak değiştirebiliriz.

chown -R apache:apache /var/www/html/

Bu dosyalara verilen izinlerin sadece okuma izni olduğundan emin olmak için aşağıdaki komutu çalıştırıyoruz.

chmod -R 0444 /var/www/html/

Bu işlemi de gerçekleştirdikten sonra aşağıdaki şekilde kontrol edebiliriz.

php3
Bitmek bilmeyen güvenlik önlemlerinin bir diğer adımı olarak Apache,PHP,MySQL konfigurasyon dosyalarının izinlerini yazmaya karşı korumalı olarak değiştiriyoruz.

chattr +i /etc/php.ini
chattr +i /etc/php.d/*
chattr +i /etc/my.ini
chattr +i /etc/httpd/conf/httpd.conf
chattr +i /etc/

Bu komutu /var/www/html dizini altındaki dosyaları için de uygulayabiliriz.

chattr +i /var/www/html/

Daha sonra sisteme düşen logları düzenli bir şekilde takip etmemiz gerekmektedir.Apache log dosyaları için

tail -f /var/log/httpd/error_log
grep 'login.php' /var/log/httpd/error_log
egrep -i "denied|error|warn" /var/log/httpd/error_log

komutlar ile,PHP logları için

tail -f /var/log/httpd/php_scripts_error.log
grep "...etc/passwd" /var/log/httpd/php_scripts_error.log

komutları ile istenen takibi yapabiliriz.
Son olarak ise dışarıdan ekstra programlar yükleyerek güvenliği artırabiliriz.Örneğin Mod_securtiy programını yükleyerek ve üzerinde bazı kurallar belirleyerek saldırılardan korunabiliriz.SELinux prgoramı ile Apache’nin SELinux ile korunmasını sağlayabiliriz.(Not:Yazıda bahsedilen php.ini,error_log gibi dosyaları tam yolları sistemler ve sürümler arasında farklılık gösterebilir.Bahsedilen kodların tam olarak çalışması için doğru yolların verildiğinden emin olunuz)


TR | Linux PHP Sıkılaştırma Ali TONKAZ

]]>
https://canyoupwn.me/tr-linux-php-sikilastirma/feed/ 0
TR | Linux Fiziksel/GRUB Güvenliği https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/ https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/#respond Thu, 04 Aug 2016 13:18:41 +0000 https://canyoupwn.me/?p=3592 CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux Fiziksel/GRUB Güvenliği Sistemimizin güvenliğini sağlarken ilk düşünmemiz gereken adımlardan birisi fiziksel güvenlik olmalıdır.Çoğu kişi tarafından göz ardı edilen bu adım, dikkat edilmediği durumlarda tıpkı sanal ortamdaki istismarlar gibi büyük zararlara sebep olabilir. Fiziksel güvenlik aşamasında öncelikli yapmamız gereken envanter haritası şeklinde elimizde ne olduğu,niçin olduğu ve neye ihtiyaç olduğudur. Örneğin bir kişisel ev bilgisayarının fiziksel […]

TR | Linux Fiziksel/GRUB Güvenliği Ali TONKAZ

]]>
CanYouPwnMe! - For Cyber Security Researchers CanYouPwnMe! - For Cyber Security Researchers - cypm!

Linux Fiziksel/GRUB Güvenliği

Sistemimizin güvenliğini sağlarken ilk düşünmemiz gereken adımlardan birisi fiziksel güvenlik olmalıdır.Çoğu kişi tarafından göz ardı edilen bu adım, dikkat edilmediği durumlarda tıpkı sanal ortamdaki istismarlar gibi büyük zararlara sebep olabilir.

Fiziksel güvenlik aşamasında öncelikli yapmamız gereken envanter haritası şeklinde elimizde ne olduğu,niçin olduğu ve neye ihtiyaç olduğudur.

Örneğin bir kişisel ev bilgisayarının fiziksel güvenlik önlemleri ile şirket içinde kullandığımız sunucunun güvenlik önlemleri farklı şekilde düşünülmeli ve uygulanmaladır.

Bilgisayar/Sunucu Kilitleri

  • Öncelikli olarak sistemimizin bulunduğu odayı korunaklı hale getirmeliyiz.
  • Daha sonra bilgisayarımızın(sunucumuzun) bulunduğu bölmeler güçlü kilit sistemlerine sahip olmalıdır.
  • Bu kilit sistemlerini geçmek için farklı aşamalardan oluşan kilit yapıları kullanılmalıdır.
  • Kilitleme işlemini gerçekleştirdiğimiz bölmeler kolaylıkla aşılabilir,kırılabilir hafif malzemeler yerine korunaklı sağlam maddelerden yapılmış olmalıdır.
  • Belirli sayıda başarısız giriş denemesinden sonra sistem kendi kendini yok edebilme ya da farklı şekilde tekrar şifreleyebilme özelliğine sahip hale getirilmedilir.
  • Bilgisayar(sunucu) dışarıdan herhangi bir CD/DVD/USB vb aletlerin takılmasına ve kullanımına kapalı olmalıdır.
  • Yine aynı şekilde fare/klavye gibi aygıtlar takılı şekilde sistemler terk edilmemelidir.
  • Bu adımda sonra olarak sunucular yukarıda belirtilen CD/DVD/USB gibi aygıtlar tarafından önyükleme işlemine tabi tutulamamalı dır.

BIOS Güvenliği

BIOS güvenliği adımına geçmeden önce BIOS nedir önce buna bir bakalım.
BIOS(Basic Input/Output System) yani temel giriş çıkış sistemi bilgisayarın çalışması için gereken temel yapıdır.Sadece okunabilir bellek(ROM-ReadOnlyMemory) üzerine yazılmış olan BIOS yazılımı sayesinde anakartımızın özelliklerini kullanabilir,diğer donanımlar ile bağ kurabiliriz.
Sadece Okunabilir Bellek üzerinde olmasından dolay burada kalıcıdır
Konumuza geri dönersek BIOS güvenliği için önyükleme şifrelemesi yapılması gerekmektedir.Fakat çoğu sistemlerde kendiliğinden gelen bu şifreleme yöntemleri BIOS’un sıfırlanması,silinmesi ya da değiştirilmesi gibi işlemlerle kolaylıkla baypass edilebilmektedir.
Bunun için BIOS şifrelemesi için gelişmiş şifreleme seçenekleri sunan versiyonlar tercih edilmelidir.

Bootloader(Önyükleyici) Güvenliği

Bootloader,cihaz başladığı esnada işletim sistemini yüklemeyi sağlayan bir programdır. Bootloader programına ait konfigürasyon dosyaları /boot/grub/grub.cfg dosyası içinde bulunur. Güvenlik önlemi olarak yetkisiz kişilerin bu dosya üzerinde değişiklik yapmasını engellemek amacıyla izinleri değiştirmeliyiz.

grub.cfg dosyasının ilk izin hali bu şekildedir.

kali1

 

Daha sonra aşağıdaki kod ile yetki seviyesini değiştiriyoruz.

chmod 0600 grub.cfg

İşlemin sonunda dosyanın izinleri aşağıdaki şekilde değişmiş olmaktadır.

kali4

 

USB Sürücülerin Engellenmesi

 

Dışarıdan mudahaleler sonucunda oluşabilecek zararlardan korunmak için USB sürücülerin sistem üzerinden kullanımını engellemememiz gerekmektedir.Bunun için kernel üzerinde yapacağımız basit değişiklik ile kernel’in usb desteğini engelleyebiliriz.Bunu için grub.cfg dosyasının içine aşağıdaki satırı eklememiz gerekmektedir.

kernel /4.0.0-kali1-amd64 ro root=LABEL=/ console=tty0 console=ttyS1,19200n8 nousb

Bu noktada kernel /4.0.0-kali1-amd64 yazan kısım sistemimizin kernel çekirdek sürümünü belirtir.Bunu kendi sistemimizde öğrenmek için

uname -r

komutunu kullanabilir ve sonrasında çıktıyı belirtilen yer ile değiştirebiliriz.
Bu adımlardan sonra

nano /boot/grub/grub.cfg

komutu ile dosyayı açıp üzerinde yukarıda belirtilen değişikliği yapıyoruz.Kaydedip çıktıktan sonra sistem reboot edilerek yapılan değişikliklik aktif hale geçmiş olur.

Bu belirtilen şekilde kapatmanın yanı sıra istenildği takdirde USB sürücüleri BIOS ayarlarından da kapatabiliriz.Bunun için BIOS’umuzun güçlü bir parolası olması gerekmektedir.

Bu konuda yapılacaklar arasında son adım olarak USB Driver’ını kaldırmak olabilir.
Bunun için öncelikli driver dosyamızın bulunduğu dizini görüntüleyelim .

kali7

Gördüğünüz gibi driver dosyamız orda duruyor.Şimdi bunu test amaçlı olarak /root dizini altına taşıyalım .

kali8

 

Daha sonra tekrar baktığımızda USB Driver dosyası burda bulunmadığı için driver kaldırılmış olarak gözükmektedir.

kali9

 

GRUB Şifreleme

GRUB ayarları için sonradan yetkisiz değişiklikler olmaması için şifreleme yaparak korumaya almamız gerekmektedir.Bunun için öncelikli olarak

grub-mkpasswd-pbkdf2

komutu ile şifre oluştururuz.

Şifremizi belirledikten sonra aşağıdaki ekran karşımıza çıkıyor.Bu ekrandan oluşan şifremizi kopyalıyoruz.

kali12

Daha sonra oluşturduğumuz şifreyi grub ayarlarına eklememiz gerekiyor.Bunun için için

nano /etc/grub.d/00_header

Komutu ile belirtilen dosyayı açıyoruz.İçerisinde aşağıda belirtilen değişklikleri yapıyoruz.

setsuperusers="demo" password_pbkdf2 demo

dedikten sonra bir önceki ekranda kopyaladığımız şifreyi buraya yapıştırıp kaydediyoruz.

kali14
Daha sonra sistemimizi reboot ettiğimizde artık grub ekranımızda belirlediğimiz şifre sorulmaktadır.


TR | Linux Fiziksel/GRUB Güvenliği Ali TONKAZ

]]>
https://canyoupwn.me/tr-linux-fizikselgrub-guvenligi/feed/ 0