WordPress vs. Web sitelerini korumak için…

Çok çeşitli içerik yönetim yazılımı var! (WordPress, Joomla, vs. vs.) Bunların da yüzlerce, belki binlerce eklentileri (plug-in) var.  Bunların hepsinin güvenli bir şekilde kullanılabileceğine inanmak sadece aşırı iyimserlik olur. Hatta, içlerinde arka kapı (back-door) yerleştirilmiş olanların bile olduğu söyleniyor-düşünülüyor-biliniyor .
Bu tip hazır paketlerin – ve daha önemlisi eklentilerinin en zayıf tarafı aralarında ziyaretçilerin siteye dosya yüklemelerine izin veren uygulamalar olmasıdır. Bu uygulama ve-veya eklentileri kullanırken çok çok dikkatli olunması gerekmekte; web dosyaları hiyerarşisi içine dosya yüklenmesine ve yüklenen dosyalara doğrudan URL ile (http://site.com/ gallery/resim.png gibi) erişim sağlayan eklentiler kesinlikle kullanılmamalıdır.
Gene de, ziyaretçilerin bir web sitesine yanlızca salt-oku erişimlerine izin vermek; yöneticilerin ise ancak belli IP adreslerinden siteye oku-yaz erişebilmelerini sağlamak güvenlik duvarını kalınlaştıracaktır.
Bunu yapabilmek için benim kullandığım yöntem özetle şu:

  • sunucuda web dizini, ikinci bir salt-oku dizine bağlanır (“mount” edilir)
  • apache web sunucusu standart 80 portu yanısıra  8080 portunu da dinler.
  • apache’de iki sanal sunucu tanımlıdır. Bunlardan biri web kök dizini olarak normal web kök dizinini, diğeri ise salt-oku bağlanmış web kök dizinini sunar. 80 portuna gelen istekler salt-oku dizini sunan sanal web sunucusu tarafından karşılanır; 8080 portuna gelen istekler ise oku-yaz olarak bağlanmış dizini sunan sanal web sunucu tarafından karşılanır.
  • iptables ile önceden belirlenmiş yönetim IP adres bloklarından gelen istekler 8080 portuna yönlendirilir. Diğer yerlerden gelen istekler 80 portunda bırakılır.

Bu çalışma koşullarını sağlayan konfigürasyon dosyalarına örnekler:
Sanal Sunucu Tanımları:

/etc/apache2/ports.conf

...
 Listen 139.179.39.104:8
 Listen 139.179.39.104:808
 NameVirtualHost 139.179.39.104:80
 NameVirtualHost 139.179.39.104:8080
...

/etc/rc.local

# iptables -t nat -A PREROUTING -s 139.179.0.0/16  \
           -p tcp --dport 80 -j DNAT --to 139.179.39.113:8080
# iptables -A INPUT ! -s 139.179.0.0/16 -p tcp --dport 8080 -j DROP
# mount --bind /var/www /var/wwwpublic
# mount -o remount,ro --bind /var/www /var/wwwpublic

/etc/apache2/sites-enabled/000-default

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/wwwpublic
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/wwwpublic/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        . . .
</VirtualHost>

/etc/apache2/sites-enabled/private

<VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        . . .
</VirtualHost>

Xen Sanal makina platformu hakkında

Citrix Xenserver platformunu kullanımındaki zorluklar nedeniyle terkettik! Şu meşhur uuid karmaşası ve GUI yönetimi için bir Windows makina gerektirmesini en önde gelen etkenler olarak sıralayabilirim. Tabi bir de yok edilen makinaların disklerinin hala ortalıkta kalması ve bunların hangi sanal diskler olduğunu bulmanın zorluğu da cabası…
BCC’deki ilk “production” Xen servisi hakkında dokümantasyondur.
xenserver

xencua

Platformun temeli xencua (xencua.bilkent.edu.tr: 139.179.39.2) sunucusu yatmaktadır. Bu makinada Citrix Xenserver yazılımı kullanılmaktadır. Kurulum Citrix sitesinden indirilen ISO’dan kurulumuş olup üzerinde Security Enhanced CentOS çalışmaktadır. Yönetim zorlukları nedeniyle SELinux etkinsizleştirilmiştir.

Sistem odasında yer alan bu makina 4 core AMD bir makinadır. 16 GB bellek ve  500GB + 3 TB 2 diski vardır. 500GB’lık disk sistem diski olarak 3 TB disk ise LVM disk havuzu olarak kullanılmaktadır.

xenserver ayarlarında bir değişiklik (xenserver eklenmesi vs.) gerekirse makinaya root olarak login olduktan sonra xsconsole komutuyla config yazılımı çalıştırılabilir.

Bu makinaya CentOS paketi yüklemek gerekirse “yum –enablerepo=base install xinetd rsync” benzeri bir komutla yüklenebilir.

xencenter

xenserver sunucusunun GUI ile yönetilmesini sağlayan yazılımın (xencenter) kurulu olduğu Windows bir makinadır (xencenter.bilkent.edu.tr: 139.179.16.53). xencenter, Xenserver yönetiminde yapılabilecek her iş için bir araç sunabilmekte; kolay kullanılır bir yazılımdır. Tek kötü tarafı bir Windows makinaya gereksinim oluşturması ve Wine tarafından desteklenmediği için bir lisans harcatmaktadır. Bu makina 139.179.14.152 üzerinde VBox altında çalışan sanal bir makina olup; RDP protokoluu destekleyen herhangi bir yazılımla erişilebilir. Linux için Debian paketlerinde yer alan Remotedesktop Client (Gnome frontend for rdesktop) tavsiye edilir. RDP kullanıcı adı ve şifresi Seyit bey’deki dosyada “xencua” başlığı altında saklanmaktadır.

Xencenter yazılımınının bir başka makinaya kurulması gerekirse, http://xencua.bilkent.edu.tr adresinden indirilebilir.

xvp

xvp.bilkent.edu.tr (139.179.39.107), üzerinde xencua’nin sınırlı da olsa web üzerinden yönetilmesini sağlayan yazılımın çalıştığı sanal bir makinadır.

xvpweb ile web üzerinden sanal makinalar üzerinde yapılabilecek işler şunlardır:

  • Sanal makinaları açıp kapatmak
  • Sanal makinaların konsoluna ya da masaüstüne erişmek (Oracle-SUN Java kurulu bir makinadan kullanmak kaydıyla; OpenJava kurulu makinalardan kullanılamaz)
  • Sanal makinaları kopyalamak, silmek (yok etmek)
  • Snapshot almak, silmek

Sanal makina yaratma, ISO’dan kurma, parametrelerini değiştirme gibi işlemler xencenter ile yapılmalıdır. xvpweb’in tek amacı, RDP olanağı olmadığı zamanlar web üzerinden bazı temel işleri yapılabilinmesini sağlamaktır.

xvp.bilkent.edu.tr sanal makinası xencua üzerindedir. xvpweb yazılımının http://www.xvpsource.org sitesinden “virtual Appliance” olarak indirilip modifiye edilmiş, bir kaç ek işlev eklenmiş hali çalışmaktadır. Erişim şifreleri  Seyit bey’deki dosyada “xencua” başlığı altında saklanmaktadır. İşletim sistemi CentOS 5.9’dur.

xvp ayarlarında bir değişiklik (xenserver eklenmesi vs.) gerekirse /usr/sbin/xvpappliance komutuyla config yazılımı çalıştırılabilir.

Bu makinaya CentOS paketi yüklemek gerekirse “yum –enablerepo=base install xinetd rsync” benzeri bir komutla yüklenebilir.

xeniso

xenserver ve xencenter, sanal makina kurulumunda kullanılacak ISO CD görüntülerinin bir NFS sunucu üstünde tutulmasını gerektirmektedir. Bu ISO dosyalar çok önemli olmadığı için ISO servisi için gereken NFS sunucu da xencua üzerinde bir sanal makina olarak çalışmaktadır.

xenISO kütüphanesine yeni bir ISO eklenmesi gerektiğinde xeniso.bilkent.edu.tr makinasında /opt/ISOfiles dizinine kopyalanması yeterlidir. (Şifreler Seyit bey’de).

heybe2

BCC’nin büyük disk SmartOS sunucularından birisidir (heybe2.bcc.bilkent.edu.tr) ve bu makinada xencua’dan root yetkileriyle mount edilip kullanılabilecek xencua_vm_backups isimli bir nfs export bulunmaktadır. xencua’da çalışan cron scriptleri, xencua’da tanımlı sanal makinaları bu disk alanına periyodik olarak yedekler. Adında “-NOBUP” dizisi geçen sanal makinalar  yedeklenmez.

backup

BCC’nin genel yedekleme makinasıdır (backup.bcc.bilkent.edu.tr). backup makinasındaki incremental-rsync scripti ile xencua makinasının sistem diski periyodik olarak yedeklenir.