Linux Sunucu Güvenliği ve Optimizasyonu

Linux Sunucu Güvenliği ve Optimizasyonu

ctrl+alt+del tuş kombinasyonunu engellemek ctrl + alt + delete tuş kombinasyonu hemen hemen bütün Linux sürümlerinde bilgisayarı yeniden başlatmak üzere öntanımlı gelir. Çoğu zaman bu kombinasyonun kaldırılması faydalı olmaktadır. Yapılması gereken işlem /etc/inittab dosyası içindeki ilgili satırın önüne bir diyez (#) işareti koymaktır. #ca::ctrlaltdel:/sbin/shutdown -t3 -r now Geçerli bir yedekleme stratejisi geliştirmek. Yedeklemenin ne zaman gerekli olduğu konusunda genel bir kabul “veri kaybetme riskini kaldıramayacağınız her zaman yedekleme zamanıdır” şeklindedir. Pek çok firmanın genelde bir yedekleme stratejileri zaten mevcut olmasına rağmen eğer yoksa çok geçmeden alınması şarttır. Bu iş için taper BRU Amanda gibi gelişmiş bir yedekleme yazılımı kullanılabileceği gibi standart “tar” komutu ile de yedekleme yapmak mümkündür. Aşağıdaki tabloda yer alan basit betikleri bir cron işi içersine yerleştirdiğinizde haftalık ve günlük yedekleme yapacaktır. Sonuç /home dizini içersinde yer alan backup-epoch (haftalık) ve backup-daily dosyaları olacaktır. TABLO 1 #!/bin/bash # Haftalık Yedekleme Betiği. # cd / yes rm /etc/backup.epoch find /etc -type d -print > /etc/backup.epoch find /var -type d -print >> /etc/backup.epoch find /home -type d -print >> /etc/backup.epoch find /tmp -type d -print >> /etc/backup.epoch find /root -type d -print >> /etc/backup.epoch tar -cvps -T /etc/backup.epoch -f /home/backup-epoch.tar TABLO 2 #!/bin/bash # Günlük Yedekleme Betiği # cd / yes rm /etc/backup.daily find /etc -mtime -1 ! -type d -print > /etc/backup.daily find /var -mtime -1 ! -type d -print >> /etc/backup.daily find /home -mtime -1 ! -type d -print >> /etc/backup.daily find /tmp -mtime -1 ! -type d -print >> /etc/backup.daily find /root -mtime -1 ! -type d -print >> /etc/backup.daily find /etc -ctime -1 ! -type d -print >> /etc/backup.daily find /var -ctime -1 ! -type d -print >> /etc/backup.daily find /home -ctime -1 ! -type d -print >> /etc/backup.daily find /tmp -ctime -1 ! -type d -print >> /etc/backup.daily find /root -ctime -1 ! -type d -print >> /etc/backup.daily tar -cvps -T /etc/backup.daily -f /home/backup-daily.tar Sistemden Silinmesi Faydalı Kullanıcı ve Gruplar Çoğu Linux dağıtımı ile birlikte bazı öntanımlı kullanıcı ve gruplar gelir. Bu hesaplar/gruplar standart olduğu için sisteme girmeyi planlayan bir kişinin sızmak için ilk deneyeceği hesaplar olacaklardır ve silinmesinde fayda vardır. userdel komutu ile sistemdeki adm lp sync shutdown halt news uucp operator games gopher gibi gereksiz kullanıcı hesaplarından kurtulabilirsiniz. Aynı şekilde groupdel komutu da adm lp news uucp games dip pppusers popusers slipusers gibi grupları silmenizi sağlayacaktır. Kullanıcıya sadece FTP izini verilmesi. Pek çok sistem yöneticisi kullanıcıların FTP ile home dizinlerine bağlanmasına izin veren fakat telnet veya konsoldan sisteme bağlanmalarını engelleyen bir strateji belirlemek ister. Bu kısıtlama özellikle web bulundurma hizmeti ve internet servis sağlayıcılarda gerekli olmaktadır. Bunu sağlamak için basit bir betik hazırlayalım. #!/bin/bash echo “Sisteme oturum açma izniniz yok!” ardından bu dosyayı /bin/girisyok olarak kaydedelim ve “chmod +x /bin/girisyok” komutu ile çalıştırılabilir yapalım. Hazırladığımız betiği telnet veya konsol erişim hakkı vermemek istediğimiz kullanıcının shell’ i olarak atamamız gerekmektedir. Bu işlem için chsh komutu kullanılabilir. chsh -s /bin/girisyok umut Kullanıcının shell’ ini /bin/girisyok olarak degistirdigimizde kullanıcı e-mail alıp gönderebilir fakat ne FTP ne de telnet vb… yolla sisteme bağlanabilir. Kullanıcının FTP kullanımını açmak için ise /bin/girisyok’ u /etc/shells dosyasına eklememiz yeterli olacaktır. Suid bit Programlar Bir sunucuda kullanıcılara telnet ssh konsol gibi yollarla erişim verildiğinde en büyük güvenlik boşluğu suid bit adı verilen izin ile tanımlanmış programlarda yer almaktadır. Sunucuları ele geçirmeye niyetli bir kişi genelde suid bit tanımlı programlardaki açıkları hedef almaktadır. Kısaca açıklamak gerekirse suid bit normalde kullanıların yazmaya veya değiştirmeye izni olmadığı dosyaları değiştirmesine olanak tanımak amacı ile kullanılır. Örneğin root kullanıcı hariç hiçbir kullanıcının /etc/passwd dosyasını değiştirmeye hakkı yoktur. Fakat chsh komutu ile bütün kullanıcılar /etc/passwd dosyasında kendi isminin yanındaki shell belirtgecini değiştirebilmektedirler. Bunu sağlamak için chsh programı suid bit ile çalıştırılmaktadır yani kısıtlı olarak kullanıcılara root kullanıcı hakkı verilmektedir. Sunucunuzdaki suid bit tanımlı dosyaların bir listesini görmek için aşağıdaki komutu çalıştırabilirsiniz. find / -type f (-perm -04000 -o -perm -02000 ) -exec ls -lg {} ; Önünüze gelen listede çok az kullanılan ya da hiç kullanılmayan programlardaki suid bit’ i kaldırmak için : chmod a-s /usr/bin/wall benzeri bir komut kullanmak yeterli olacaktır. Sisteminizin ping isteklerine cevap vermesini engellemek Son zamanlarda popüler olan network/internet saldırılardan bir tanesi de DOS (Denial of Service) adı verilen saldırı çeşididir. Bu saldırılar bir ana makineyi anlamsız TCP/IP paketleri ile meşgul etmeyi veya çok sayıda makineden saldırı yaparak işlevsiz bırakmayı amaçlar. En popüler DOS saldırıları ise bir IP paketine encapsulate edilerek gönderilen ve port bazlı olmayan ICMP paketleridir. Bir sunucuya yüzlerce belki de binlerce makineden aynı anda geçersiz büyüklükte ICMP paketleri gönderildiğinde sunucu büyük ihtimalle görevini yerine getiremeyecektir. Buna karşı çok etkin bir önlem olmasa da bir icmp isteği olan ping’ lere sunucuyu kapatmak faydalıdır. Daha etkin bir yöntem için bir firewall (güvenlik duvarı) seçeneğini değerlendirmelisiniz. Ping paketlerine cevap vermeyi engellemek için aşağıdaki komutu bilgisayarın açılış betiklerinden birisine yerleştirmek ve bilgisayarı yeniden başlatmak yeterlidir. echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all Source Routing ve Tehlikeleri Source Routing özelleştirilmiş bir TCP/IP paketinin geçeceği yolu kendisinin belirlemesi için kullanılan bir yöntemdir. Sunucu makine gelen özel paketin öntanımlı yolundan paketi geriye göndermek zorunda bırakılır. Bu da saldıranın kendisini güvenilir bir makine olarak göstermesini sağlayabilir. Bu nedenle kesinlikle sunucunuzda bu özelliği kaldırmalısınız. Yapılması gereken işlem (Red Hat 6.2 için) /etc/sysctl.conf dosyasına aşağıdaki satırı eklemekten ibarettir. net.ipv4.conf.all.accept_source_route = 0 TCP SYN Cookie Koruması Bir diğer DOS (Denial of Service) saldırısı ise SYN saldırıları olarak bilinen türdür. Bu saldırılara karşı önlem almak amacı ile gelen bütün TCP paketlerine karşı koruma sağlayan aşağıdaki satırı /etc/sysctl.conf dosyasına eklemeniz faydalı olacaktır. net.ipv4.tcp_syncookies = 1 ICMP redirect paketlerinin engellenmesi ICMP redirect paketleri routerlar tarafından sunucu makinelere üzerlerindeki route tablolarını belirtmek ve sunucu makinelerin paketleri gönderecekleri yolu önceden bilmelerini sağlamak amacı ile kullanılır. Kötü niyetli birisi sizi yanıltacak ICMP redirect paketleri ile sunucu makinenizi yanıltarak başka yere gitmesi gereken paketleri kendisine yönlendirmeyi başarabilir. Bunu engellemek için /etc/sysctl.conf dosyasına aşağıdaki satırı eklemeniz ve network’ u yeniden başlatmanız yeterli olacaktır. (Red Hat 6.2) net.ipv4.conf.all.accept_redirects = 0 Pentium II ve III sistemlerde daha etkin program derlenmesi Linux ile standart dağıtılan GCC adlı C C++ compiler programı bilgisayarınızın mimarisine özgü kod derleyebilme yeteneğine sahiptir. Fakat varsayılan olarak 80386 mimarisinde çalışabilecek çalıştırılabilir dosyalar derlemek üzere ayarlanmış gelir. Eğer makineniz Pentium II veya üzeri veya AMD K7 ise a

EkleBunu Sosyal Paylaşım Butonu

Linux Ve Bazı Güvenlik Önlemleri

Linux Ve Bazı Güvenlik Önlemleri

a)Sistemi güvenilir yapmak için gereken güncellemeler

Bu bölümda kernelin yeni versiyonlarının ve update’lerin ne işe yaradıkları ve nasıl yüklenecekleri anlatılmıştır.

b)Gereksiz programların portların servislerin kaldırılması

Bu bölümde portların gereksiz servislerin neden tehlikeli olabilecegi ve nasıl kaldırılacağı anlatılmıştır.

Güncelleme
Bu bölümde RedHat Linux için güncellemenin nasıl yapılacağı anlatılmıştır.

RedHat

Linux’un her versiyonunun bir sürü update’i ve kernelinin de sürekli yeni versiyonları çıkar. Bunların çıkmasının nedeni Bir önceki versiyondaki açıkları kapatmak sistemi daha güvenli ve saglıklı yapmaktır. Bunların sürekli takip edilmesi ve sistemin güncel tutulması gerekmektedir. Bunları yapmazsanız sisteminizde çoğu Linux kullanıcısı tarafından bilinen açıklar kapatılmamış olur ve bu da sisteminize yapılabilecek saldırıların daha fazla zarar vermesine yol açar. Sistemin güncellenmesini iki alt başlık altında inceleyeceğiz.

a) Kernelin yeni versiyonunun indirilmesi ve derlenmesi.

b) Update’lerin geçilmesi.

Kernelin Yeni Versiyonun Indirilmesi Ve Derlenmesi

NOT: Kernelin derlenmesi fazla zor değil. Fakat daha önce hiç derlemediyseniz dikkatli olmanızda ve daha önce bu işi yapmış olan birisini yanınızda bulundurmanızda fayda vardır.

İlk yapmanız gereken iş kernelin en son versiyonunun indirilmesidir.

http://www.kernelnotes.org/ sayfasına gidiniz ve kernelin en son stable versiyonunu /tmp dizinine indiriniz.
Daha sonra http://www.openwall.com/ /linux/ adresinden indirdiginiz
kernelle ayni versiyonda olan patch’i indiriniz. Daha sonra asagidaki komutlari sırası ile çalıştırınız.

[root@server /root]# cp /tmp/linux-2.x.tar.gz /usr/src

[root@server /root]# cp /tmp/patch-2x.gz /usr/src

[root@server /root]# cd /usr/src

[root@server /root]# gzip -cd linux-2.x.tar.gz tar xvf -

[root@server /root]# gzip -cd path-2x.gz patch -p0

Yukarıdaki komutlar vasıtası ile indirdiğiniz paketler /usr/src dizinine kopyalanır
açılır ve kernel’e patch uyğulanir.

Bunları yaptıktan sonra aşağıdaki komutları da çalıştırınız

[root@server /root]# cd /usr/src/linux-2x

[root@server /root]# make mrproper

Sıra kernelin configurasyonunu belirlemektedir. Bunun için make config komutunu çalıştırmanız lazım.

[root@server /root]# cd /usr/src/linux-2x

[root@server /root]# make config

make config komutuna alternatif olarak make menuconfig ve make xconfg komutlarını da çalıştıra bilirsiniz. make xconfig komtunu çalıştıra bilmeniz için startx’de olmaniz lazim. make config komutunu çalıştırdıktan sonra karşınıza bir sürü soru çıkacak. Kernelin neyi destekleyip neyi desteklememesi gerektiğini burdan belirlemeniz lazim. Sorulara cevap verirken size gerekmeyen hiç bir pakete “Y” dememeye dikkat edin. Bu hem sizin kernel’in boyutunu küçültücektir (Böylece kernel daha hızlı çalışacak ve daha az RAM kullanacaktır) hem de sisteminizin daha güvenli olmasını sağlayacaktır

Daha sonra make dep ve make clean komutlarını çalıştırınız

[root@server /root]# cd /usr/src/linux-2x

[root@server /root]# make dep

[root@server /root]# make clean

Bunlar bittikten sonra make zImage komutunu çalıştırınız

[root@server /root]# cd /usr/src/linux-2x

[root@server /root]# make zImage

Daha sonra modulleri desteklemek için make modules ve make modules_install komutlarını çalıştırınız.

[root@server /root]# cd /usr/src/linux-2x

[root@server /root]# make modules

[root@server /root]# make modules_install

Yeni kerneliniz hazırdır /usr/src/linux/arch/i386/boot/ dizini altındakı zImage

dosyasıdır yeni kerneliniz. Bunu /boot dizinine ve ya floppy’den boot ediyorsaniz floppy’ye kopyalayınız. Daha sonra /etc/lilo.conf dosyasındaki

image=/boot/vmlinuz-2x

satırını değiştiriniz ve vmlinuz-2x yerine /boot/ dizinine kopyaladığınız dosyanın

adını yazınız. /sbin/lilo komutunu çalıştırınız ve artık yeni kernel hazırdır. Makinenizi reboot ede bilirsiniz.

NOT: Daha fazla bilgi için /usr/src/linux/ dizini altındakı README dosyasına bakabilirsiniz.

Update’lerin Geçilmesi

Update’ler kernel’in güncellenmesinden daha önemlidir. Çünki her update çok önemli bir açığı kapatır. İlk yapmanız gereken iş updatelerin indirilmesidir. Bunun için

http://www.redhat.com/errata adresine gitmeniz lazım. Bu sayfadan size gereken tüm update’lerin rpm paketlerini indiriniz. Bir paketin size gerekip-gerekmediğini oğrenmek için rpm -q komutunu paket adını parametre olarak verip çalıştırmanız lazım. Örneğin emacs paketinin sizde var olup-olmadığını oğrenmek istiyorsanız aşağıdaki komutu çalıştırınız.

[root@server /root]# rpm -q emacs

Eğer çıktı aşağıdaki gibiyse bu paket sizde var ve bunun update’ini indirmeniz lazım.

[root@server /root]# rpm -q emacs

emacs-20.5-7

[root@server /root]#

Çıktı bu şekilde değilde aşağıdaki gibiyse bu paket sizde zaten yok ve olmayan bir paketin update’ini indirmenize gerek yok

[root@server /root]# rpm -q x

package x is not installed

[root@server /root]#

Update’leri indirdikten sonra teker-teker geçilmesi lazım. Örnek paketin adı

package-x.y.rpm ise bu paketin update’ini geçmek için update’lerin oldugu dizine geçerek aşağıdakı komutu çalıştırmanız lazım:

[root@server /root]# rpm -Uvh package-x.y.rpm

Bu komutu indirdiğiniz tüm paketler için çalıştırdıktan sonra iş bitmiştir.

Sisteminiz artık günceldir.

Genel güvenlik

Sisteminizin saldırılardan etkilenmesini istemiyorsanız sisteminize erişimi minimuma indirmeli ve dışarıya sisteminiz hakkında minimum bilgi vermelisiniz. Sisteme minimum erişim saldırganın sisteme girişini elgelleyeceği gibi sistem hakkında minimum bilgi vermek de saldırganın sisteminiz hakkında bilgi toplamasını engelleyecek ve işini zorlaştıracaktır. Basit bir finger komutu sisteminiz hakkında saldırgana az denemeyecek kadar bilgi veriyor. Bu bölümde sisteminizin maksimum şekilde güvenli olması için yapmanız gerekenler madde-madde ele alınmıştır.
a) Password

Sisteminiz çok kullanıcılı bir sistem ise kullanıcıları kompleks ve uzun şifreler seçmeye zorlayın. Genelde kırılamayacak şifre yoktur fakat şifreler uzun ve kopleksse bu saldırganın işini zorlaştırır ve hatta belki çok zamanını aldığı için sisteminizi kırmaktan vazgeçirebilir de. Şifreleri kompleks ve uzun tutmak için ilk yapmaniz gereken şey kullanıcıları bu konuda uyarmak daha sonra da sistemde bir takım önlemler almaktır.
İlk olarak /etc/login.defs dosyasını herhangi bir editörde açarak PASS_MIN_LEN satırının sonundakı sayıyı (default olarak 5′tir) 8 yapınız.
Daha sonra ise /etc/pam.d/login

dosyasını yine bir editörde açarak auth ve account kelimeleriyle başlayan satırlardan sonra aşağıdaki satırı ekleyiniz

password required /lib/security/pam_ooooolib.so

Bu satır kullanıcıyı şifre seçerken kompleks şifreler seçmeye zorlayacaktır.

NOT: Pam sistem güvenliyini artırmak için önemli bir araçtır. Daha fazla bilgi almak

için /usr/doc/pam-xx/ dizinine göz ata bilirsiniz.

b) /etc/exports dosyası

Bu dosya sisteminizdeki hangi dizinleri ortak kullanıma açtığınızı gösterir. NFS
kullanmıyorsanız bu dosyanın içinin boş olmasına dikkat edin. Dosyanın attribute’unu da değiştirerek immutable (değişmez) yapınız.

[root@server /root]# chattr +i /etc/exports

c) /etc/inetd.conf dosyası

Bu dosya sisteminizin dışarıya hangi hizmetleri verdiğinizi gösteren bir dosyadır. Dosya hizmet adlarıyla başlayan satırlardan oluşur. Satırın başında # işareti varsa bu satır comment’lenmiştir ve bu hizmet artık verilmemekktedir direk hizmet programı adıyla başlıyorsa bu hizmet halen verilmektedir. Örneğin aşağıdaki /etc/inetd.conf dosyasından götürülmüş satırlar bu sistemde ftp hizmetinin verildigini telnet hizmetinin ise verilmediğini gösterir.

ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd

İlk olarak bu dosyanın modunu sadece root tarafından okunup-yazıla bilinecek şekilde değiştiriniz başka kullanıcıların bu dosyayı görmeleri sistem hakkında gerektiğinden fazla bilgi almalarına neden olur.

[root@server /root]# chmod 600 /etc/inetd.conf

Daha sonra ise attribute’unu değiştirerek immutable yapınız.

[root@server /root]# chattr +i /etc/inetd.conf

Daha sonra sisteminizin vermesini istemediginiz hizmet progamlarını tespit ederek bu programın adıyla başlayan satırın başına # koyup bu satırı comment’leyerek hizmet programını kaldırınız. Örneğin sisteminizin artık finger’lere cevap vermesini istemiyorsanız önceden

finger stream nowait root /usr/sbin/tcpd in.fingerd

şeklinde olan satırı değiştirerek aşağıdakı şekle getiriniz

#finger stream nowait root /usr/sbin/tcpd in.fingerd

Sisteminiz temel görevleri arasında olmayan tüm hizmetleri kesinlike kaldırmanız lazım. inetd.conf dosyası ile işiniz bittikten sonra yaptığınız değişikliklerin aktif olması için aşağıdaki komutu çalıştırınız

[root@server /root]# killall -HUP inetd

d) /etc/hosts.allow ve /etc/hosts.deny dosyalari

Makinenize erişimi kısıtlamalısınız. Bunun için /etc/hosts.deny dosyasına aşağıdakı satırı ekleyiniz

ALL: ALL@ALL PARANOID

Bu satır makinenize herhangi bir şekilde erişimi yasaklayacaktır. Tabii ki bazi
kullanıcılara bazı programları kullanmaları için izin vermeniz gereke bilir. Bu izinleri ise /etc/hosts.allow dosyası vasıtasıyla veriyorsunuz. Örnegin makinenize 192.168.1.1 adresinden telnet çekile bilmesini istiyorsanız /etc/hosts.allow dosyasına aşağıdaki satırı eklemeniz lazim:

in.telnetd: 192.168.1.1 myhost.mydomain.

myhost.mydomain 192.168.1.1 IP adresli makinenin domain name’idir.

e)/etc/aliases dosyasi

Saldırgan bu dosyayı kullanarak sisteminizde root hakkına sahip ola bilir. Bundan dolayı bu dosyayı açarak bin daemon ve nobody kelimeleri ile baslayan satırlar hariç tüm satırları satır başına # koyarak comment’leyiniz.

f) Sisteminizin ping’e cevap vermesini yasaklayınız

Ping TCP/IP protokollarındaki zayıflıklardan dolayı saldırganlar tarafından sıkça

kullanılan bir programdır. Sisteminize ping çekilmesini yasaklarsanız önemli bir açığı kapatmış olursunuz. Ayrıca sisteminize ping çekemeyen saldırgan sisteminiz hakkında daha az bilgi alır ve hatta belki sisteminizin şu an ayakta olup olmadığından bile haberi olmaz. Sisteminize ping çekilmesini yasaklamak için aşağıdaki komutu çalıştırmanız lazım:

[root@server /root]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

Bunun sistemi reboot ettikten sonra da aktıf olmasını istiyorsaniz yukarıdaki satırı
/etc/rc.d/rc.local dosyasına da eklemeniz lazım.

g) Issue dosyası

Sisteminiz telnet hizmeti veriyorsa /etc/inetd.conf dosyasındakı telnet kelimesi ile başlayan satırı aşağıdaki gibi değiştiriniz

telnet stream nowait root /usr/sbin/tcpd in.telnetd -h

Daha sonra “killall -HUP inetd” komutu ile inetd’yi değerleri tekrar okumaya mecbur ediniz. /etc/inetd.conf dosyasını bu şekilde değiştirmeniz makinenize telnet çekildiginde ekrana gelen issue dosyasının içeriğinin görüntülenmemesini sağlıyacaktır. Bu ise sisteminiz hakkında dışarıya daha az bilgi verecek. Örneğin saldırgan kernel versiyonunuzu bilemiyecek ve hangi ooooo programını kullanması gerektiğine karar vermekte zorlanacaktır.

h) /etc/host.conf dosyasi

Bu dosyayı açarak order kelimesi ile başlayan satırı değiştirerek şu şekle getiriniz :
“order bind hosts”.
Bu makinenizi Adres sorgulamasını ilk olarak DNS’den yapmasına zorlayacaktir. Daha sonra dosyaya şu satırı ekleyiniz. ” nospoof on” .Bu satır da makinenizi IP address spoofing’e karşı dikkatli olmaya zorlayacaktır.

i) Source routing

IP Source routing saldirganların sistemi kırmak için kullandıkları başka bir yöntemdir.

Bunu yasaklamak için aşağıdaki komutu çalıstırmanız gerekmektedir.

[root@server /root]# for f in /proc/sys/net/ipv4/conf/*/accept_source_route;do

echo 0> $f

done

Çalıştırdığınız komutun makine reboot edildikten sonra aktif olmasını istiyorsanız

yukarıdaki komutu /etc/rc.d/rc.local dosyasına da eklemeniz lazım.

j) SYN Cookie’ler.

“SYN attack” DoS’a (Denial Of Service) neden ola bilecek önemli bir saldırı çesididir.

Denial Of Service saldırıları sistemdeki tüm kaynakların tükenmesine yol açarak sizi makineyi reboot etmeye zorlar.Bu saldırıya karşı koymak istiyorsanız aşağıdaki komutu çalıştırmanız lazım

[root@server /root]# echo 1 > /proc/sys/net/ipv4/tcp_syncookies

Komutun sistem reboot edildikten sonra da aktif olmasını istiyorsanız yukarıdaki komutu

/etc/rc.d/rc.local dosyasına da eklemeniz lazım.

k) /etc/services dosyası

Bu dosya sistemdeki hizmet programlarının port numaralarını belirler Bu dosyanin kimse tarafından değiştirile ve görüle bilmemesi için aşağıdaki komutları çalıştırarak attribute’unu ve modunu değiştiriniz Saldırgan bu dosyaya yaza bilmesi halinde portları kafasına göre kullanıma açar ve başka bir zaman geri döne bilmek için backdoor bırakabilir.

[root@server /root]# chattr +i /etc/services

[root@server /root]# chmod 600 /etc/services

l) /etc/securetty dosyasi

Bu dosyanın var olması sisteminize root olarak telnet çekilememsini saglar. Dosyayı açarak içine makineye root olarak login olma hakkı tanıdığınız terminallerin adını yazabilirsiniz. Örneğin makineye sadece birinci terminalden root olarak login olunabilmesini istiyorsaniz dosyaya “tty1″ satırını ekleyiniz birinci ve ikince terminallerden login olunmasını istiyorsanız “tty1″ ve “tty2″ satırlarını ekleyiniz.

m) gereksiz hesaplar

Sisteminizde default olarak gelen fakat hiç bir şekilde kullanmadığınız hesaplar vardır.

Örneğin gopher uucp genelde kullanılmayan hesaplar. /etc/passwd dosyasına bakın ve uid’si 500′ün altında olan tüm kullanıcıları teker-teker gözden geçiriniz. Bunu kullanmıyorum dediğiniz tüm hesapları kaldırınız. Çünki bu hesaplar herbiri saldırganın sisteminize girmesi için birer kapıdır. Bir kullanıcı hesabını kaldırmak için aşağıdaki komutu çalıştırmanız lazım:

[root@server /root]# userdel gopher

Bu komut gopher kullanıcısını sisteminizden kaldırır.

n) su izni

Kimsenin su yapmasına izin vermemeniz lazım. Bunu yaparsanız birisi bir şekilde root şifresini öğrendiyse bile root olarak telnet çekemeyeceği (bak. madde l. ) ve su izni olmadığı için sisteminizde root hakkı kazanamayacaktır. Kullanıcıların su yapmasını engellemek için aşağıdaki satırları /etc/pam.d/su dosyasına eklemeniz lazım.

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=wheel

Bundan sonra su yapa bilmesini istediğiniz kullanıcı adlarını /etc/group dosyası içine wheel’le başlayan satırın sonuna virgülle ayırarak ekleye bilirsiniz.

o) /etc/limit.conf

Dos(Denial Of Service)’lerle karşı-karşıya kalmak istemiyorsanız bu dosyaya aşağıdaki satırları eklemeniz lazım

* hard rss 5000

* hard nproc 20

Birinci satır bir kullanıcının maksimum 5 M RAM kullana bileceğini ikinci satır ise bir kullanıcının sistemde maksimum 20 proses çalıştıra bileceğini belirtir. Tabii ki bu sayıları kullanmak zorunda değilsiniz ve bunları değiştirip istediğiniz değerleri yazabilirsiniz.

p) Derleyiciler ve rpm.

Sisteminizde Derleyicinin bulunması (gcc cc) sisteminize sızmış saldırgana sisteminizde kaynak kodunu derleyerek çalıştırmasına izin verir.Bunu önlemek için derleyicileri (kullanmıyorsanız) kaldırınız. Ayni şey rpm komutu için de geçerlidir sisteme sızmış bir saldırgan rpm komutunu kullanarak istediği programı sisteminize yükleyebilir.

Fakat rpm derleyiciler gibi degil. Derleyiciyi uninstall ettikten sonra tekrar install edebilirsiniz. Rpm için ise aynı şey geçerli değil.Yapmanız gereken şey rpm komutunu /bin/ dizininde saldırganin düşünemeyeceği bir yere kopyalamaktır. Hatta en saglami rpm’i bir floppy’ye kopyalamaktır.Gerektiği zaman rpm’i geri yerine kopyalayıp çalıştıra bilirsiniz.

q) history size

Sistemdeki su yapma yetkisine sahip (bak . madde n.) birisinin şifresini ele geçirmis saldırgan bu kullanıcının history’sine bakar ve yanlışlıkla yazılmış bir şifre arar.
Saldırgana minimum imkan tanımak için history uzunluğunu mümkün olduğu kadar kısa tutunuz örnegin 20 olsun. Bunu yapmak için /etc/profile dosyasında HISTSIZE ve HISTFILESIZE satırlarını değiştirerek bu kelimelerden sonraki sayıyı değiştirerek 20 yazmanız yeterli olacaktır.

r) /etc/lilo.conf

Makineniz herkesin girip-çıka bileceği bir mekanda ise aşağıdaki ayarları yapmanızde fayda vardir. Makine sadece siz ve güvendiğiniz insanların gire bildigi bir yerde ise bu maddeyi geçe bilirsiniz. /etc/lilo.conf dosyasını açınız ve aşağıdaki satırları ekleyiniz

timeout=00

restricted

password=”your_password”

timeout satırı makine açılırken LILO’nun beklememesini sağlar ki bu da LILO’ya parametre verilmesini engeller. restricted satırı makinenin single modda açılması için şifre verilmesi gerektiğini belirtir. Şifreyi ise siz veriyorsunuz. (password satırının önüne yazarak). Bunları yaptıktan sonra şifrenizin gözükmemesi için aşağıdaki komutu çalıştırarak /etc/lilo.conf dosyasının izinlerini değiştirmeniz lazım

[root@server /root]# chmod 600 /etc/lilo.conf

s) log’lar

Sisteminizin herhangi bir şekilde kırılması durumunda saldırı hakkında bilgi alabileceginiz tek kaynak log’lardır. Bundan dolayı sisteminizi kırmış olan bir saldırgan işi bittikten sonra log dosyalarını siler ve saldırı hakkında herhangi bir bilgi alamazsınız. Bunu önlemek için log dosyalarının saldırıyı yapan şahsın ulaşamayacağı bir yerde kopyalarının tutulması gerekir. En sağlıklı yöntem log’ların print edilmesidir.

Bunun için /etc/syslog.conf dosyasının sonuna aşağıdaki satırı eklemeniz lazım.

authpriv.* ; mail.*;local7.*;auth.*;daemon.info /dev/lp0

Fakat bu yontemin birtakım dezantajları var makinenizde printer tanıtılmamış ola bilir her log’un çıktısını almak fazla masraflı ve karışık ola bilir.Bundan dolayı en iyi yöntem log’ların başka bir makineye kopyalanmasıdır. Log’ları kopyalacağınız örnek makinenin adı logserver olsun.Bu durumda sizin makinenizin /etc/syslog.conf dosyasının sonuna şu satırı eklemeniz lazım.

authpriv.* ; mail.*;local7.*;auth.*;daemon.info @logserver

logserver makinesinde ise /etc/rc.d/init.d/syslog scriptindeki

“daemon syslogd -m 0 ” satırını “daemon syslogd -r -m 0″ olarak değiştirmeniz ve değişikliği kaydettikten sonra her iki makinede aşağıdaki komutu çalıştırarak syslog programını restart etmeniz lazım

[root@server /root]# /etc/rc.d/init.d/syslog restart

t) /etc/rc.d/init.d dizini

Bu dizinin altında programları çalıştıran scriptler yer almaktadır. Bu dizin altindakı tüm dosyaların izinlerini aşağıdaki komutla değiştiriniz

[root@server /root]# chmod 700 /etc/rc.d/init.d/*

NOT: Genel olarak kullanıcılara mutlaka görmeleri gereken dosyalar ve dizinler hariç hiç bir dosya ve dizine yazma ve okuma izni vermemeye çalışın.

u) suid bitli dosyalar

Bu tür dosyalar çalışma esnasında işlemlerini devam ettirmek için root hakkı kazanırlar.

Örneğin kullanıcı passwd komutunu çalıştırarak şifresini değiştirirken passwd programı /etc/passwd dosyasına yazmak için root hakkı kazanır. Saldıgran bu tür programları farklı şekilde kullanarak sisteminize zarar vere bilir. Bundan dolayı sistemdeki tüm suid bitli dosyaların bulunup bunlardan kullanıcıların kullanmak zorunda olmadıklarını tespit edilerek suid bitinin kaldırılması lazım.Sistemdeki suid bitli dosyalar aşağıdaki komut kullanılarak buluna bilir:

[root@serveer /root]# find / -type f \( -perm -04000 -o -perm -02000

\) \-exec ls -l {} \;

Çıktının aşağıdaki gibi olmasi lazım.

-rwsr-xr-x 1 root root 34565 sep 22 23:35 /usr/bin/chage

Buna benzer 20-30 civarında satır çıka bilir. En sağdaki /usr/bin/chage adını ve yerini gösterir. Sağdaki satıra bakın ve hangi dosyaların kullanıcı tarafından çalıştırılmaması gerektiğine karar verin. Daha sonra “chmod a-s dosya_adi” komutu ile bu dosyanın suid bitini kaldırınız.Örnegin kullanıcının /usr/sbin/traceroute ve /bin/ping kullanmasına gerek yok. O zaman aşağıdaki komutları çalıstırmanız lazım

[root@server /root]# chmod a-s /usr/sbin/traceroute

[root@server /root]# chmod a-s /bin/ping

v) Gizli dosyalar

Sisteminize ooooo programları ve ya passwd dosyaları getirmiş olan bir kullanıcı bu program ve dosyaların bulunamaması için onları gizli olarak tutar.Ve verdiği isimlerin dikkat çekici olmamasına dikkat eder. Örneğin bir ooooo programını “.. ” adı ile tutar ve bu size sıradan bir şeymiş gibi gelir. Bundan dolayı sistemdeki gizli dosyaları sürekli inceliyor olmanız lazım. Sistemdeki gizli dosyaları görmek için aşağıdaki komutu çalıştırmanız lazım.

[root@server /root]# find / -name “.*”

Bu komut noktayla başlayan (gizli ) dosyaları bulur ve siz de size normal gözükmeyen dosyaları inceleye bilirsiniz.

w) Herkes Tarafından Yazılabilen Dosya ve Dizinler

Sisteminizi sürekli tarayarak sizin yazma izni verdiginiz dosya ve dizinler hariç hiç bir dosya veya dizinin herkes tarafından yazılabilir olmamasına dikkat etmeniz lazim. Sisteminizi kırmayı başarmış olan bir saldırgan sisteme tekrar geri döne bilmek bu tür dosyaları ve dizinleri backdoor olarak bırakmış ola bilir. Bu tür dosya ve dizinleri bulmak için aşağıdaki komutu çalıştırınız.

[root@server /root]# find / -type f \( -perm -2 -o -perm -20 \) -exec ls -lg {} \;

EkleBunu Sosyal Paylaşım Butonu

APF / Ddoss Firewall

wget http://www.ni.net.tr/dosyalar/apf-current.tar.gz
tar -xvzf apf-current.tar.gz
cd apf*
./install.sh

işlemlerinden Sonra kurulmuş Olacaktır..

Gerekli Ayarlar;

vi /etc/apf/conf.apf

ile APF ayar dosyasını açıyoruz (nano ve pico kullanılabilir ben vim kullandım)

Bazı Ayarların Anlamları:

DEVM=”1″: İlkkez kurulan APF de bu komut için 1 değeri atanır bu ayar satırının anlamı apf nin demo olarak çalışmasını saglanması diyebiliriz verilen 1 değeri 0 olsaydı yapılan tüm ayarlar sonsuzadek geçerli kalırdı 1 olursa yapılan ayarlar sadece 5 DK geçerli kalır.

IG_TCP_CPORTS=”22″:Sunucuda dışarıdan içeriye dogru açılacak portların listelendiyi ayar satırı. Port sayısını virgül ile ayırarak artırabilirsiniz.

IG_UDP_CPORTS=””: Yukarıdaki satır ile aynı olan UDP portları için geçerli port filtreleme satırı

EG_TCP_CPORTS=”22″:Bir başka port filtreleme satırı ama içeriden dışarıya dogru açılacak portları filtreler.

EG_UDP_CPORTS=””:Yukarıdaki ile aynı özelliklere sahip ama UDP portları için

Örnek bir ayar Cpanel kontrol panelli sunucular için.

IG_TCP_CPORTS=”20,21,22,25,26,53,80,110,143,443,46 5,993,995,2082,2083,2086,2087,2095,2096″

IG_UDP_CPORTS=”21,53,873″

EG_TCP_CPORTS=”21,22,25,26,27,37,43,53,80,110,113, 443,465,873,2089″

EG_UDP_CPORTS=”20,21,37,53,873″

Bir örnek de Ensim panel için hazırlayalım

IG_TCP_CPORTS=”21,22,25,53,80,110,143,443,19638″
IG_UDP_CPORTS=”53″

EGF=”1″
EG_TCP_CPORTS=”21,22,25,53,80,110,443″
EG_UDP_CPORTS=”20,21,53″

Birde Plesk

IG_TCP_CPORTS=”20,21,22,25,53,80,110,143,443,465,9 93,995,8443″
IG_UDP_CPORTS=”37,53,873″

EGF=”1″
EG_TCP_CPORTS=”20,21,22,25,53,37,43,80,113,443,465 ,873″
EG_UDP_CPORTS=”53,873″

APF kullanımı

/usr/local/sbin/apf –s
Apf mizi açlaştırmak için kullanılır

/usr/local/sbin/apf -r
Apf yazılımını yeniden başlatır

/usr/local/sbin/apf -st
Apf durumunu gösterir.

/usr/local/sbin/apf -f
Apf’yi kapatır
.
/usr/local/sbin/apf -l
Ayarları Listeler

/usr/local/sbin/apf -d
Yazılan ip numarasını uzaklaştırır ör: “ /usr/local/sbin/apf -d 81.214.247.127 “

/usr/local/sbin/apf -u
Ban açmak için kullanılır

/usr/local/sbin/apf -o
APF ayarlarını listeler

/usr/local/sbin/apf -a
IP adresinizi banlanmayacak ip (allow) listesine koyar..

Ayarları yaptıktan hemen sonra DEVM ayarında verilen 1 değerini 0 olarak değiştirmeyi unutmayın! Yoksa APF 5dk çalışacaktır.

EkleBunu Sosyal Paylaşım Butonu

CHKROOTKIT Kurulum

Chkrootkit serverinize saldiri sonrasi yapilan bilgileri sizlere vermektedir. Ayrıca Sistemdeki zararlı dosyaları bulmanızı sağlar… Kullanımı kolaydır.

Chkrootkit install islemleri :
Root olarak SSH’a giris yapiniz

cd /root/
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvzf chkrootkit.tar.gz
cd chkrootkit-0.45
make sense

Chkrootkit scan yapmak için :

/root/chkrootkit-0.45/chkrootkit

Eger kontrol panelinizde cron job seçenegi var ise bu codu ekleyiniz.
Hergün sizin seçtiginiz saatlerde bu scan otomatik yapilsin.

Chkrootkit sonuçlarinin email adresinize gelmesini istiyorsaniz :

/etc/cron.daily/ dosyasi íçerisinde bir dosya yapiniz, dosya ismi: chkrootkit

chkrootkit dosya içerisine sunlari yaziniz :

#!/bin/bash
/root/chkrootkit-0.45/./chkrootkit -q | mail -s “Daily chkrootkit Output” senin@mailin.com

Dosyayi kayit edin ve Chmod 755 yapiniz, daha sonra yazilan dosya’ya upload ediniz.

Not : Sadece bir girisim oldugunda size bir email gelecektir, sorun olmadiginda email gelmiyecektir.

EkleBunu Sosyal Paylaşım Butonu

Ref Saldırılarını Engellemek

Ref Saldırılarını Engellemek

Ref saldırıları genellikle spam yapan ve backlink almak isteyen siteler tarafından gerçekleştirilen bir saldırı türüdür. Bu saldırının amacı; sizden aldıkları ref linkleri ile backlink toplayarak, kendi sitelerinin google üzerinde değerini arttırmaktır. Fakat aynı ref linkleri yüzünden sitenizin google üzerinde değer kaybettiğini, sandbox ‘a düştüğünü ve site hit sayısının azaldığını görebilirsiniz.

Sitenize ait ref linklerinin olup olmadığını ögrenmek için google üzerinde şu şekilde bir arama yapabilirsiniz.

site:site_isminiz.com inurl:ref=
veya
site:www.site_isminiz.com ref

Eğer google arama sonuçlarında aşağıdaki gibi sonuçlarla karşılaşıyorsanız. Siteniz spam saldırısına maruz kalmıştır.

www.site_isminiz.com/dokuman.html?ref=spam_yapilan_site.com
www.site_isminiz.com/?ref=spam_yapilan_site.com

Spam ref saldırılarını önlemek için yapmanız gereken ayarlar

1) .htaccess dosyası ile alınabilecek önlemler

RewriteEngine on
# ref spam engelleme
RewriteCond %{THE_REQUEST} \?(ref=.*)?\ HTTP [NC]
RewriteRule .? http://www.site_isminiz.com%{REQUEST_URI}? [R=301,L]

2) Robots.txt dosyası ile alınabilecek önlemler

Ref saldırıları için ana dizindeki robots.txt dosyası içeriği aşağıdaki şekilde olmalıdır.

User-agent: *
Disallow:
Disallow: /*ref=*
Disallow: /*?ref=

3) Eğer gmail adresiniz varsa ve google webmasters tools servisini ( www.google.com/webmasters/tools/ ) kullanıyorsanız.

Kontrol Paneli / Araçlar / URL ‘leri kaldır bölümü üzerinden / Yeni Kaldırma İsteği

Açılan pencerede / Tek tek URL ‘ler: web sayfaları, resimler veya başka dosyalar seçeneğini seçin ve İleri ‘yi tıklayın.

Kaldırmak istediğiniz ref linkli bağlantı adresinin tamamını ilgili bölüme ekleyin.

Not : Google webmasters tool servisini kullandıktan sonra ilk 2 madde içinde anlatılan ayarları kullanmaya devam etmelisiniz.
Google üzerinden sitenize ait ref spam linklerin olup olmadığını belirli aralıklarla kontrol etmeye özen gösterin.

/ tcpsec. den alıntıdır

EkleBunu Sosyal Paylaşım Butonu

Linux’ta Güvenlik ve Önlemler!

Linux’ta Güvenlik ve Önlemler!

——————————————————————————–

Güvenilir sistem yapılan saldırılara maksimum seviyede karşı koya bilecek bir sistemdir. Bir sistemin güvenilir olması için sistemde saldırganlara yardımcı olabilecek açıklar ve zayıflıklar minimuma indirilmelidir. Bunun için sistem zamanında güncellenmeli,kullanılmayan servisler ,portlar kapatılmalı, sistemin temel görevi olmayan tüm programlar kaldırılmalıdır. Aşağıdaki metinde tüm bunların nasıl yapılacağı ele alınmıştır. Metin 2 kısımdan oluşmaktadır

a)Sistemi güvenilir yapmak için gereken güncellemeler

Bu bölümda kernelin yeni versiyonlarının ve update’lerin ne işe yaradıkları ve nasıl yüklenecekleri anlatılmıştır.

b)Gereksiz programların, portların, servislerin kaldırılması

Bu bölümde portların , gereksiz servislerin neden tehlikeli olabilecegi ve nasıl kaldırılacağı anlatılmıştır.

Güncelleme
Bu bölümde RedHat Linux için güncellemenin nasıl yapılacağı anlatılmıştır.

RedHat

Linux’un her versiyonunun bir sürü update’i ve kernelinin de sürekli yeni versiyonları çıkar. Bunların çıkmasının nedeni, Bir önceki versiyondaki açıkları kapatmak, sistemi daha güvenli ve saglıklı yapmaktır. Bunların sürekli takip edilmesi ve sistemin güncel tutulması gerekmektedir. Bunları yapmazsanız sisteminizde çoğu Linux kullanıcısı tarafından bilinen açıklar kapatılmamış olur ve bu da sisteminize yapılabilecek saldırıların daha fazla zarar vermesine yol açar. Sistemin güncellenmesini iki alt başlık altında inceleyeceğiz.
Yazının tamamını okuyun »

EkleBunu Sosyal Paylaşım Butonu