Pardus 2011 çok yakında!

20 Ocak 2011 ‘de yayınlanacak olan “Pardus 2011“in çıkmasına iki hafta kaldı.Pardus topluluğu dahil linux kullanıcıları dağıtım çıkmasını dört gözle bekliyor ve aynı zamanda geliştirici tarafında da büyük bir hareketlilik var.Düzeltilen buglar,eklenen paketler,sürümü duyurma çabaları vs vs.Sizde bunlara bir el uzatabilir websitelerinizde,kişisel bloglarınızda ,sosyal ağlarda Pardus‘a destek olup duyuruları yayınlayabilirsiniz.Ayrıca geri sayım bannerlarını bu adresden kodlarını alıp,uygun alanlarda yayınlayabilirsiniz.

Yeni yılla birlikte gelen “Pardus 2011″e şimdiden “hoşgeldin” diyoruz.

Brute Force saldırılarını iptables ile engelleyin

Brute Force saldırısı(Brute Force Attack) diğer bir deyişler Anahtar Arama Saldırısı ( exhaustive key search) hedefin özel alanlara sızmak için deneme- yanılma yolu o servise ulaştıracak giriş bilgilerini tespit edip sisteme sızma saldırılarıdır.Ayrıntılı bilgi için bakınız ***

Sunucular internet dünyasına açıldığı takdirde bu tip saldırılardan nasibini alması kaçınılmazdır.Örnek bir “brute force” saldırısı:

May 05 01:23:23 zeus sshd[12355]: Illegal user office from 2**.1**.**.***
May 05 01:23:33 zeus sshd[12755]: Failed password for illegal user office from 2**.1**.**.*** port 53033 ssh2
May 05 01:24:10 zeus sshd[12857]: Illegal user samba from 213.191.74.219
May 05 01:24:16 zeus sshd[12357]: Failed password for illegal user samba from 2**.1**.**.*** port 53712 ssh2
May 05 01:24:19 zeus sshd[12659]: Illegal user tomcat from 2**.1**.**.***
May 05 01:24:25 zeus sshd[12459]: Failed password for illegal user tomcat from 2**.1**.**.*** port 54393 ssh2
May 05 01:24:34 zeus sshd[12361]: Illegal user webadmin from 2**.1**.**.***
Jul 28 01:24:43 zeus sshd[12361]: Failed password for illegal user webadmin from 2**.1**.**.*** port 55099 ssh2

Yukarda gördüğünüz gibi saldırgan rastgele kullanıcı adı ve parolalarla “ssh” servisine sızmaya çalışıyor.
Bu ve bu gibi brute saldırıları iptables‘e kural ekleyerek engellemeye çalışalım.
( Daha  önceki bir yazıda ssh güvenliği ilgili not yazmıştım**O yazıya göz atabilirsiniz.)

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j DROP


Yukardaki iptables kurallarındaki “eth0” arayüzünü,”22”  portunu kendi sisteminizdeki göre düzenleyiniz.

Bu kuralda ssh  servisimizi 1 dakika içerisinde 5 defa giriş izni vermiş olduk.Eğer  5′ten fazla giriş olduğu takdirde

 iptables “ssh” ulaşımını  engelleyecek.Bu kuralın normal ssh ile bağlanan kullanıcılar için bir  zararı olmayacak 

fakat durmadan atak yapacak olan saldırganı  engelleyecektir.


SSHatter ile kendinize saldırın!

Şimdi koyduğumuz kuralı test edelim.Bu kuralı test etmek için kendi kendimize saldıralım. ”SSH” servislerine “brute force attack” yapmak için kullanılan “SSHatter”ı kullanarak koyduğumuz kuralı test edelim. SSHatter‘ı “freshmeat” sitesinden edinebilirsiniz.SSHatter‘ı indirin . SSHatter’i indirdikten sonra uygun bir yere açalım. $ tar zxvf  SSHatter-1.0.tar.gz SSHatter’ın  iki tane bağımlılığı bulunuyor.Bunlar ForkManager ve Net-SSH-Perl bunları paket yöneticisi ile indirebiliriz. # emerge -av Parallel-ForkManager ( Debian kullanıcıları #apt-get install libparallel-forkmanager-perl ) # emerge -av  net-ssh-perl Artık saldırıya hazırız.SSHatter dizinine geçelim. $ cd SSHatter-1.0/src/ $ ls Saldıraya başlamadan önce deneme yapacağı birkaç username belirleyelim.Bunun için “users” adlı bir dosya oluşturup içine ekleyelim.Her satıra bir kullanıcı adı yazın. $nano users elma armut erik ….. gibi örnek kullanıcı adları yazıp kaydedin.Şimdi hedefi belirleyelim.Bunun için ise “targets” adlı bir dosya oluşturup içine hedefi yazalım. $ echo 127.0.0.1 > targets Zaten “src” dizininde “passwords” adlı bir dosyada örnek parolalar bulunmakta,kendiniz ekleme de yapabilirsiniz. Artık “brute force” atak yapmaya hazırız fakat kendi kendimizi de banlamamak için “cron” a 5 dakika sonra “iptables” kurallarını sıfırlamasını söyleyelim.
*/5 * * * * /sbin/iptables -F
Yukardaki satırı “cron”a eklemeyi unutmayın.Şimdi atağı başlatabiliriz.Örnek atak komutu: $ perl SSHatter.pl -x 1 -t targets -u users -p passwords Atak başladı ve 5 deneme girişinden sonra iptables tarafından banlanması gerekir ve 5 dakika sonra bu kural iptal olacak ve tekrar erişime açılacak. Bu eklediğimiz iptables kuralının her açılışta aktif olmasını istiyorsanız basit script yazarak sistem açılışına ekleyebilirsiniz.Eğer daha kolay yollar arıyorsanız fail2ban gibi yazılımlara bakabilirsiniz. Bu sitede fail2ban hakkında güzel bir yazı mevcut.

Linux Ders Notu

26 Temmuz-6 Ağustos 2010 tarihleri arasında Hatay Kırıkhan Meslek Yüksek Okulu’nda verilen eğitime katılan Fatih Çakmak hocamızın derslerde tutmuş olduğu notlar.Biraz düzenleme,ekleme ile daha güzel ve detaylı bir not olabilirdi.Fakat bu haliyle de bazı kullanıcılara yardımcı olabilir.

Notu indirmek için tıklayın .

Virtualhostlar için webalizer

Sisteminizde birden çok siteye webalizer istatistiklerini sunmak istiyorsanız bunu birkaç konfigurasyonla yapabiliriz.Örneğin sunucuda " virtual1.example.com" ve " virtual2.example.com " adında iki virtualhostumuz olsun.Bu hostların log dosyaları " /var/log/httpd/virtual1-access_log" ve " /var/log/httpd/virtual2-access_log " olsun. İlk önce sisteminizde "webalizer" kurulu değil ise kurun:

# yum install webalizer

Webalizer sisteme kurulduktan sonra " /etc/webalizer.conf " konumunda konfigurasyon dosyası bulunur.Bizim sistemimizde birden çok site barınacağı için her site için ayrı bir konfigurasyon dosyası oluşturacağız.Bu dosyaları düzenli bir şekilde tutmak için bir klasör oluşturup onun içinde bulunduralım.

# mkdir /etc/webalizer #mv /etc/webalizer.conf /etc/webalizer/webalizer.conf.example (Eski ayar dosyasını örnek olarak saklayalım) #touch /etc/webalizer/virtualhost1.conf (birinci sitemiz için ayar dosyasımızı oluşturduk.) #touch /etc/webalizer/virtualhost2.conf (İkinci sitemiz için ayar dosyamızı oluşturduk) #mkdir /var/www/virtual1/stats (İstatiskleri yayınlayacağımız dizini oluşturduk.) #mkdir /var/www/virtual2/stats

Artık sitelerimiz için ayarları dosylarına girebiliriz.

virtual1.conf :

LogFile /var/log/httpd/virtual1-access_log OutputDir /var/www/virtual1/stats HistoryName /var/lib/webalizer/virtual1.hist Incremental yes IncrementalName /var/lib/webalizer/virtual1.current HostName virtual1.example.com PageType htm* PageType cgi PageType php PageType shtml DNSCache /var/lib/webalizer/dns_cache.db DNSChildren 10 Quiet yes FoldSeqErr yes HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.png HideURL *.PNG HideURL *.svg HideURL *.SVG SearchEngine yahoo.com p= SearchEngine google.com q= SearchEngine msn.com MT= SearchEngine bing.com q=

virtual2.conf :

LogFile /var/log/httpd/virtual2-access_log OutputDir /var/www/virtual2/stats HistoryName /var/lib/webalizer/virtual2.hist Incremental yes IncrementalName /var/lib/webalizer/virtual2.current HostName virtual2.example.com PageType htm* PageType cgi PageType php PageType shtml DNSCache /var/lib/webalizer/dns_cache.db DNSChildren 10 Quiet yes FoldSeqErr yes HideURL *.gif HideURL *.GIF HideURL *.jpg HideURL *.JPG HideURL *.png HideURL *.PNG HideURL *.svg HideURL *.SVG SearchEngine yahoo.com p= SearchEngine google.com q= SearchEngine msn.com MT= SearchEngine bing.com q=

Böylece ayarlarımızı dosyalarımıza işledik.Şimdi istatistiklerimizi cron düzenli bir şekilde yenilenen hale getirelim. " /etc/cron.daily/webalizer " dosyasını aşağıdaki gibi değiştirin :

/etc/cron.daily/webalizer :

#!/bin/bash if [ -s /var/log/httpd/virtual1-access_log ]; then /usr/bin/webalizer -Q -c /etc/webalizer/virtual1.conf fi if [ -s /var/log/httpd/virtual2-access_log ]; then /usr/bin/webalizer -Q -c /etc/webalizer/virtual2.conf fi

Bu konfigurasyonu da yaptıktan sonra ilk istatistiklerimizi aşağıdaki komut ile oluşturalım :

# for i in /etc/webalizer/*.conf; do webalizer -c $i; done

" /etc/httpd/conf.d/webalizer " dosyasındaki ayarlarınızı düzelttikten sonra tarayıcıdan istatistiklere http://virtual1.example.com/stats ve http://virtual2.example.cpm/stats adreslerinden bakabiliriz.

15. Türkiye’de İnternet Konferansı’nda Linux Seminerleri

2 Aralık Perşembe D Salonu 16:30-17:15 İnternet Uygulamalarında Özgür Yazılımların Yeri / Mahir B. Aşut

3 Aralık Cuma A Salonu 16:30-18:00 Kripto Yönetmeliği Paneli Yönetici: Özgür Uçkan, Bilgi Ü. Albert Levi, Sabancı Ü. Fatih Özavcı, Linux Kullanıcıları Derneği (LKD) Yaman Akdeniz, Bilgi Ü./Cyber-Law.org Şeref Sağıroğlu, Bilgi Güvenliği Derneği Muzaffer Yıldırım, Bilişim Güvenliği Derneği Yunus Şuayıp Çetin, BTK

4 Aralık Cumartesi C Salonu 10:00-11:30 Pardus Kullanmaya Nasıl Başlayabilirim / Necdet Yücel 12:00-13:00 LKD Kendi İlacını Kullanıyor / Adil Akbaş, Emre Eryılmaz (Wiki, İş Takip Sistemi, Svn, WordPress, Tuxweet, Mailman)

14:00-16:00 Drupal İçerik Yönetim Sistemi / Tugay İltuş Kampüste Etkin Geliştirme Rehberi / Veli Akçakaya, Fatih Günaydın

D Salonu 10:00-11:30 PHP/Zend Çatısına Hızlı Giriş / Eser Sahillioğlu PHP/Zend Çatısı Tabanlı PHP Çatı Tasarımı / Batur Orkun

14:00-16:00 Android’de Yazılım Geliştirme / Ahmet Oğuz Mermerkaya

Yer: İstanbul Teknik Üniversitesi Ayazağa Kampüsü

Sunucu Güvenliği:Dizin izinlerini tarayın

Sisteminizde herkes ve grup tarafından yazılabilir dizinler güvenlik açısından büyük bir risk oluşturur.Bu riski ortadan kaldırmak için sistemimizdeki tüm dizinlerin izinlerini tarayın.

* Sisteminizde herkes ve grup tarafından yazılabilir dizinleri tarayın:

$ find / -type d ( -perm -g+w -o -perm -o+w ) -exec ls -lad {} \;

* Sisteminizde izinleri ayarlanmamış dizinleri tarayın:

$ find / -type d \( -perm -g+w -o -perm -o+w \) \ -not -perm -a+t -exec ls -lad {} \;

Postfix’e zırh giydirin!

Özgür,başarılı ve neredeyse en kolay konfigure edilebilen MTA yazılımı olan "Postfix"i spamlardan korumak için bir kaç yol. "/etc/postfix/main.cf" dosyamızı bir metin editörü ile açıp birkaç konfigurasyon ekleyelim:

# vi /etc/postfix/main.cf
ve aşağıdaki kodları bu dosyaya ekleyelim.

disable_vrfy_command = yes smtpd_delay_reject = yes smtpd_helo_required = yes smtpd_helo_restrictions = permit_mynetworks, reject_non_fqdn_hostname, reject_invalid_hostname, permit

smtpd_recipient_restrictions = permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, permit_mynetworks, reject_rbl_client list.dsbl.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client dul.dnsbl.sorbs.net, permit

Sunucu güvenliği:ssh ile root girişini kapatın!

Eğer halen uzaktaki sunucunuza ssh ile root olarak bağlanıyorsanız hemen kapatın! Sunucuza root ile bağlanıyorsanız büyük risk altındasınız demektir.Çünkü ssh ile root girişine izin vermek büyük bir güvenlik açığıdır.Bu açığı şu şekilde açıklayabiliriz;Sunucunuza brute force bir saldırı olduğunu ve bu saldırıda saldırgan sizin kullanıcı adınızı ve parolanızı tahmin etmeye çalışacaktır.Her linux ya da unix sunucuda bir root kullanıcısı var olduğuna göre,bu root kullanıcısı açık bir hedeftir.Çünkü saldırgan hem kullanıcı adı ve parolayı bulmaya çalışacağına,artık kullanıcı adı için uğraşmasına hiç gerek yoktur.Geriye sadece parolayı tahmin etmek kalıyor.Bahsettiğimiz bu açığı hemen kapatalım ve sunucumuza daha güvenli bir şekilde bağlanalım.

İlk olarak yapmamız gereken ssh'ın ön tanımlı "22" portunu değiştirmek.Çünkü bu portu kullandığınızda saldırganın bu adımı hiç düşünmeden atlamasına olanak tanıyorsunuz.Bunu değiştirmek için kullandığınız bir editör ile " /etc/ssh/sshd_config" dosyasını açın;

# nano /etc/ssh/sshd_config
ve bu dosyada "Port 22 " yazan satırın başında diyez(#) varsa kaldırın ve "22" nci porttan farklı bir port girin.Örnek olarak: "Port 2222" gibi.

Daha sonra aynı dosyada "# Authentication:" bölümünde "#PermitRootLogin yes" yazan satırı bulun ve başındaki diyezi kaldırıp yes yerine no yazın.Bu satırla ssh ile bağlanırken root girişini kapatmış oluyoruz.Örnek satır: " PermitRootLogin no "

Artık bu dosyayı kaydedip kapatın ve kendinize "useradd" ya da "adduser" komutuyla ssh uzaktan bağlantı sağlayacak bir kullanıcı oluşturun,parolanızı belirleyin ve ssh'ı yeniden başlatın.

# /etc/init.d/sshd restart

Bu adımlarla sunucumuzun ssh portunu değiştirip,root girişini kapattık.Artık sunucuya root olarak giriş yapamazsınız.Bu kadar güvenli hayır değil.Bundan daha güvenli bağlanmak için "ssh key" kullanmanız önerilir.

Sunucuya "ssh key " ile bağlanmak için sunucuya bağlantı yapacağımız bilgisayarda bir anahtar oluşturmak lazım.Anahtar oluşturmak için:

$ssh-keygen -b 1024 -t dsa

Bu komutla bir anahtar oluşturup,isterseniz parola belirleyebilirsiniz.Bu komuttan sonra ".ssh" dizininizde bir private bir de public anahtarınız oluşacaktır.Sunucuya bu key ile bağlanmak istiyorsak bir şekilde "id_dsa.pub" adlı dosyayı sunucuya ulaştırmamız lazım.Bunun için ftp,scp vs. yollar kullanılabilir.

Eğer "id_dsa.pub" dosyasını sunucuya ulaştırdıysanız bu anahtara bağlanmak için sunucuda yetki verelim:

$ mkdir ~/.ssh $ chmod 700 ~/.ssh $ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys $ rm ~/id_dsa.pub $ chmod 600 ~/.ssh/authorized_keys

Bu adımlardan sonra sunucumuza bu anahtarla bağlanabiliriz.

NOT:

* Eğer ssh bağlantısını sadece belirli kullanıcılara vermek istiyorsanız, "/etc/ssh/sshd_config" dosyasına "AllowUsers" yazdıktan  bu kullanıcıları ekleyin.Örnek:

AllowUsers ahmet mehmet mustafa kemal

* Eğer belirli kullanıcılarına ssh bağlantısını kapatmak isterseniz, "/etc/ssh/sshd_config" dosyasına "DenyUsers" yazdıktan sonra bu kullanıcıları ekleyin.Örnek:

DenyUsers cuma sercan hamit can