Paylaşım için teşekkürler. Bence ilk tedbir bilgisayarımız için geçerli olacaktır. Çünkü bilgisayarımıza trojan, keylogger vb. yazılımlar bulaştığında bu önlemler pek bir anlam ifade etmez :)

Web Sitem Güvendemi? 1) Mail Güvenliği Her şeyden önce mail adreslerinizin günvenliğini sağlamalısınız. Çünkü Hostunuz, domaininizi aldığınız yer bilgilerinizi önce mail adresine yollarlar. Mail şifreniz mutlaka harf ve rakam kombinasyonlarından oluşsun. Ör: 125asd47a gibi. Asla kişisel bilgilerinizden herhangi birini şifreniz olarak kullanmayınız. Gizli sorunuz ve cevabınız sadece sizin bileceğiniz bir şey olsun. Burayada özel bilgileriniz girmeyiniz. Ayrıca mailinize gelen bazı mailler fake mail olabilir. Eğer mailinize gelen yada başka bir yerden indirdiğiniz bir dosya size işlem yapabilmek için mail adresinizin kullanıcı adı ve şifresini girmesini isterse o sayfalara k. a. ve şifrenizi girmeyin. O sayfayı direk kapatıp mailinizi tekrar açarak login olabilirsiniz. Adres çubuğunda yazan isimlere dikkat edin. Eğer mailinizi aldığınız yerle bir alakası yoksa bu bir fake maildir. 2) Hosting Güvenliğiniz Hostinginizi aldığınız yerdede aynen mailiniz gibi şifrenin karışık olsun ve mailinizle aynı şifreyi kullanmayın. Sadece güvenilir kuruluşlardan ve işine özen gösteren yerlerden hosting almaya çalışın. Çünkü bazı serverlarda hala bir çok açık bulunmakta. Bunun sebebi ise kullandıkları yazılımlarda güncelleme yapmamaları. Sitenizi ele geçirmek isteyen kişiler bu açıkları kullanarak hostinginizi elegeçirebilirler. 3) Domain Güvenliğiniz Domain adınızı aldığınız yerdede şifreniz farklı ve karışık olsun. . Domain whois bilgilerinde domaini aldığınız yere verdiğiniz mail adresinizi kullanmayın. Çünkü domaininizi ele geçirmek isteyen saldırgan öncelikle sitenize whois çekip mailinizi ve hostinginizi öğrenmek ister. Daha sonra önce mailinizi ele geçirmeye çalışır. 4) Web Programlamasında Güvenlik İlk üç adımı uygulamanıza rağmen hala sisteminizde programlamadan kaynaklanan açıklar olabilir. Bunlarıda bir kaç başlık altında toplayalım. a) Hazır portal ve forumlarda güvenlik Web sitenizde hazır portal veya forum kullanıyorsanız sürekli olarak kullandığınız portalın/forumun sitesini ziyaret edin ve güncellemeleri elinizden geldiğince yapmaya çalışın. Çünkü genelde bir çok versiyonda sitenizin ele geçirilmesini sağlayacak açıklar mevcuttur. Bunların yamalarını ve açıkları yazılımın kendi sitesinden öğrenebilirsiniz. Ayrıca b-2 deki database güvenliğinede bakınız. b)Kendi Yazdığınız Sistemlerde Güvenlik b-1) Kodlama Hataları Sisteminizi yazdınız ve sorunsuz çalışıyor. Herşey yolunda ama yaptığınız veya eklemeyi unuttuğunuz bir kaç kod yüzünden sitenizde bazı açıklar mevcuttur. Ve malesef saldırganlar bu açıkları kullanarak sisteminize girebilirler ve zarar verebilirler. Peki bunlar nelerdir? b-1-1) Login Panelleri Saldırgan öncelikle login panellerinde bir kaç kod deneyerek database'inizin yonu bulabilir ve sızıntılarla datebase'den sizin veya üyelerinizin bilgilerini ele geçirebilir. Genelde 'or 1=1 tarzında kodlamaları bu panellerde deneyerek SQL injection yapmaya çalışırlar. O yüzden bu tür kodları kabul etmeyen ayıklan bir sistem yazmalısınız. Bu tarz kodlamaları girince sisteminizin iç hata vermemesi lazım. Ayrıca login panellerinde deneme yanılma yöntemleriyle kullanıcı adı ve şifrenizi ele geçeribilirler. Bunu önlemek için mümkünse güvenlik kodu uygulaması yapmanız iyi olacaktır. Ayrıca birkaç yanlış denemeden sonra ip adresini banlarsanız buda işe yarar. b-1-2) Haber/Yorum Ekleme Login panellerinde olduğu gibi haber ve yorum ekleme scriptlerinde sızıntıları önlemeniz gerekir. Asla bu bölümler kod kabul etmemelidir. Yoksa kullanıcı yorum yada haber olarak bir kod ekleyerek sitenizin o sayfasını başka bir sayfaya yönlendirebilir. Burdada yapmanız gereken bu tür kodları kabul etmeyen bir sistem yazmaktır. b-2) Database Güvenliği Database'iniz mutlaka şifre korumalı olsun. Eğer access veritabanı kullanıyorsanız. Veritabanınızı hostinginizde bulunan db klasörü içine koyun. Bu klasörden database'inizi indiremezler. Hazır kullandığınız scriptlerdeki dblerin adlarını ve yollarını mutlaka değiştirn. Bu saldırganın db yolunuzu öğrenmesini ve sızmasını engeller. Evet bu yukarda yazılanları yaptıkdan sonra tahminimce siteniz %90 güvende olur. Ama asla %100 olmaz. Çünkü hack için mutlaka bir yol vardır. Tabi bunu yapabilecek kişilerde sayılıdır. Asla bütün üyeliklerinizde aynı şifreyi kullanmayın. Ayrıca eğer sitenizde sizden başka yönetici / editör varsa onlarıda mail güvenliği konusunda uyarın. Ben bu yazılanlarının bir kısmını uygulamıyorum. Kendinize düşman edinmemeye çalışın ve saldırganlara sitenizi ele geçirmek için bir sebeb vermemeye gayret gösterin. Mutlaka bu yazılanlarada eklenmesi gereken şeyler vardır. Sizde bildiklerinizi bu postun altına eklerseniz güzel bir kaynak olur. Genel Server Güvenliği %100 server güvenliğini sağlamanın tek yolu o serverın fişinden geçmektedir. En güvenli server fişi çekik serverdır. Bunun dışındaki tüm methotlar sadece server güvenliğini arttırmak içindir. Aşağıda server güvenliği ile ilgili verilmiş bilgiler genel bilgiler olup kullanıcıya göre değişebilmektedir. vi, pico vb editorler kullanılarak aşağıdaki satırlar /etc/sysctl. conf içine eklenmelidir # disable packet forwarding net. ipv4. ip_forward = 0 # enable source route verification net. ipv4. conf. all. rp_filter = 1 # ignore broadcast pings net. ipv4. icmp_echo_ignore_broadcasts = 1 # enable syn cookies net. ipv4. tcp_syncookies = 1 # size of syn backlog net. ipv4. tcp_max_syn_backlog = 512 # disable automatic defragmentation # set max files fs. file-max = 32768 # Enable IP spoofing protection, turn on Source Address Verification net. ipv4. conf. all. rp_filter = 1 # Enable TCP SYN Cookie Protection net. ipv4. tcp_syncookies = 1 # Enable ignoring ping request net. ipv4. icmp_echo_ignore_all = 1 Bu ne yapar? Bu kodlar linux işletim sisteminin kendisi tarafından kullanılmaktadır. Bu kodlar sisteme ping, icmp, isteklerini redetmesini ve SYN korumasını devreye alınmasını, network forwarding in engellenmesini sağlar. Ancak bu değişiklik yapıldıktan sonra server reboot edilmelidir. /etc/rc. local, içine aşağıdaki kod eklenmelidir for f in /proc/sys/net/ipv4/conf/ /rp_filter; do echo 1 > done echo 1 > /proc/sys/net/ipv4/tcp_syncookies for f in /proc/sys/net/ipv4/conf/ /accept_source_route; do echo 0 > done echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all Bu kısım bir önceki kısımla aynıdır ve bu isteklerin rededilmesi işlemini tekrar, başka bir guvenlik katmanıdır. /etc/host. conf, içine aşağıdaki kodlar eklenmelidir, tabi içinde yoksa # Lookup names via DNS first then fall back to /etc/hosts. order bind, hosts # We have machines with multiple IP addresses. multi on # Check for IP address spoofing. nospoof on /etc/hosts. deny içine aşağıdaki kod eklenmelidir ALL: PARANOID Burada bir önceki işlemde yapılan spoofing korumasını arttırılması sağlanır. Firewall linux server için en önemli ihtiyaçtır. Firewall olmaksızın linux server tamamı ile tehlike altındadır denilebilir, firewall ile server güvenlik altındadır ve korunabilir diyebiliriz ancak unutlmamalıdır ki hiç bir firewall %100 güvenlik sağlamaz. Kernel bilgilerini aramalı ve bulmalısnız. Hatta kişisel kernel derlemeside yapabilirsiniz, veya RPM kullanabilrsiniz. Kernel derlemesi local olmayan makinalarda kesinlikle önerilmeyen bir işlemdir. Sebebi ise, eğer bir şeyler ters giderse sizin power düğmesine basıp kapatacak şansınız olmayacak ve tek kullanıcı modunda serverı başlatamayaaksınız. Data Center ı beklemeli bir destek isteğinde bulunmalı ve onların yanıt vermesini beklemek zorunda kalacaksınız. Buda hem büyük zaman kaybı, hem oldukça yavaş hem de çok maliyetli bir işlemdir. Diğer uygulamalar yapılan konfigurasyon değişiklikleri sistem aşırı yükünü vb sorunları engelleyecektir. Örnek proftpd: /etc/proftpd. conf, içine aşağıdaki kod eklenebilir TimeoutIdle 600 TimeoutNoTransfer 600 TimeoutLogin 300 MaxInstances 30 MaxClientsPerHost 2 mysql için: /etc/my. cnf port = 3306 skip-locking set-variable = max_connections=100 set-variable = max_user_connections=20 set-variable = key_buffer=16M set-variable = join_buffer=4M set-variable = record_buffer=4M set-variable = sort_buffer=6M set-variable = table_cache=1024 set-variable = myisam_sort_buffer_size=32M set-variable = interactive_timeout=100 set-variable = wait_timeout=100 set-variable = connect_timeout=10 set-variable = thread_cache_size=128 ve son olarak, /etc/rc. local, içine aşağıdaki kod eklenebilir. TMOUT=180 export TMOUT Bu kısım serverda 3 dk hareketsiz duran herkesle bağlantısını kesecektir. Bu rakamı değiştirerek zamanı da değiştirilebilir, örnek 300 yapıldığında bu 5 dk olacaktır Güvenliğin bir seviye daha artırılması için aşağıdaki gibi bir uygulama yapılabilir ssh erişimi kısıtlaması in /etc/hosts. deny sshd: ALL in /etc/hosts. allow Code: sshd: host. ip. number.1, host. ip. number.2, etc Kaynak SecureHatz