Friday, June 29, 2007

Solaris 10 ve FTP Sunucu

Solaris 10 bünyesinden bir FTP sunucu da barındırıyor aslında. Washington University WU-FTP Server. Çalışıp çalışmadığını kontrol edelim:

# svcs -a | grep ftp
online 15:28:42 svc:/network/ftp:default

böyle bir çıktı alıyorsak zaten ftp sunucumuz çalışıyor demektir. Fakat çalışmıyorsa (online yerine disabled varsa) servisi çalıştırmak yeterli:

# svcadm enable ftp

Böylece ftp sunucumuz çalışmaya başlar.

Anonymous FTP açmak

Herkesin kullanımına açık bir FTP sunucusu kurmak içib öncelikle FTP dizinlerini oluşturmalıyız. Bunun için aşağıdaki klasörleri oluşturalım:

#mkdir /export/ftp
#mkdir /export/ftp/pub
#mkdir /export/ftp/bin
#mkdir /export/ftp/dev
#mkdir /export/ftp/etc
#mkdir /export/ftp/usr
#mkdir /export/ftp/usr/lib


ls komutunu ftp kullanıcıları için ftp klasörü altına da kopyalayalım:

# cp /usr/bin/ls /export/ftp/bin
# chmod 111 /export/ftp/bin/ls


İhtiyacımız olacak lib dosyalarını da kopyalayalım

# cp /usr/lib/ld.so* /export/ftp/usr/lib
# cp /usr/lib/libc.so.1 /usr/lib/libdl.so.1 /export/ftp/usr/lib
# cp /usr/lib/libintl.so.1 usr/lib/libw.so.1 /export/ftp/usr/lib
# cp /etc/passwd /etc/group /etc/netconfig /export/ftp/etc
# cp /usr/lib/nss*.so.1 /export/ftp/usr/lib
# cp /usr/lib/libnsl.so.1 /export/ftp/usr/lib
# cp /usr/lib/straddr.so /export/ftp/usr/lib
# cp /etc/nsswitch.conf /export/ftp/etc


Daha sonra oluşturduğumuz klasörlerin ve dosyaların izinlerini şöyle düzenliyoruz:

# chmod 555 /export/ftp/usr/lib/*
# chmod 444 /export/ftp/etc/*
# chmod 555 /export/ftp/usr/lib
# chmod 555 /export/ftp/usr
# chmod 555 /export/ftp/bin
# chmod 555 /export/ftp/dev
# chmod 555 /export/ftp/etc
# chmod 755 /export/ftp/pub
# chmod 555 /export/ftp


(Ben gerçi buna sadık kalmadım pub haricindeki dizinlerin read haklarını kaldırdım. Bir sorun yaşamadım şimdilik :) Sonrasında siz de kaldırabilirsiniz bence)

Son olarak sıra geldi sisteme anonymous kullanıcı girişi için tanımlamaların yapılmasına bunun için passwd ve shadow dosyalarına şunları ekliyoruz:

/etc/passwd dosyasına:
ftp:x:30000:30000:Anonymous FTP:/export/ftp:/bin/false

/etc/shadow dosyasına:
ftp:NP:6445::::


Bir de ftp dizinindeki root amgargosunu kaldırdığımızda sistemimiz herkese açık bir ftp sunucusu olarak hizmete başlar.

# chown -R root /export/ftp

Kaynak:
http://sysunconfig.net/unixtips/anon_ftp.txt
http://www.id.ethz.ch/services/list/security/comp_sec/unix/secure_solaris10

Wednesday, February 14, 2007

[ÖNEMLİ] Solaris 10 Güvenlik Açığı

Solaris 10'da çıkan bir telnet açığı özellikle telnet'e açık sunucuları tehdit etmeye başlamış. Bu konu hakkındaki Huzeyfe ÖNAL Bey'in yazdığı yazıyı direk alıyorum:
Kaynak: http://www.fazlamesai.net/?a=article&sid=4447

***********************
Dün (12.02.2006) yayınlanan ve sadece Sun Solaris 10, Solaris 11 işletim sistemlerini etkileyen güvenlik açığı telnet servisine herhangi bir sistem kullanıcısının parolasız bağlanabilmesini sağlıyor. Eğer root kullanıcısının telnet erişim yetkisi varsa bu, parolayı bilmeden sisteme tam yetkili erişilmesi manasına geliyor. Benzer bir açık 1994 yılında bazı UNIX sistemlerinde de görülmüştü.

Güvenlik açığını nasıl test edersiniz?

$telnet -l -fkullanici_adi hedef_sistem

fbsd~$ telnet -l -froot 10.1.1.1

Trying 10.1.1.1...

Connected to 10.1.1.1.

Escape character is '^]'.

[ Trying mutual KERBEROS5 (host/10.1.1.1@1.1.1)... ]

Kerberos V5: mk_req failed (No such file or directory)

[ Trying KERBEROS5 (host/10.1.1.1@1.1.1)... ]

Kerberos V5: mk_req failed (No such file or directory)

Last login: Mon Feb 12 15:20:12 on console

Sun Microsystems Inc. SunOS 5.10 Generic January 2005

Sourcing //.profile-EIS.....

root@solaris-test #
Ek olarak ağınızdaki Solaris tabanlı telnet sunucuları bulmak için nmap kullanabilirsiniz.

#nmap -sV -p23 AĞ_Bloğunuz -oG solaris_telnet|grep "Sun Solaris"
Korunma Yolları

1) Solaris sistemden telnet servisi kapatılıp yerine daha güvenli erişim yöntemi olan SSH tercih edilebilir.

Telneti kapatmak için

solaris-test# svcadm disable telnet
2)Telnet servisi açık kalması gerekiyorsa öncelikle sisteme root kullanıcısının erişimi kısıtlanmalı. Bu en azından sisteme en yetkili hesapla bağlanılmasını engeller fakat sistemdeki diğer kullanıcıların(sys,adm, lp, vs.) sisteme parolasız erişimi hala mümkün olmaktadır.

Adım Adım telnet ile sisteme root erişimini engellemek /etc/default/login dosyası açılır. #CONSOLE=/dev/console satırı bulunur ve başındaki # kaldırılır. 3)Telnet servisine yapılan erişimler IP tabanlı kısıtlanabilir. Bunun için Solaris'de tcp_wrapper ve IPF kullanılabilir. Telnet servisi için tcp_wrapper desteğini aktif ederek telnet servisine yapılan erişimler ip/network tabanlı kısıtlamak için,

Telnet servisine için tcp_wrapper desteği verilir

#inetadm -m telnet tcp_wrappers=TRUE
ve /etc/hosts.allow, /etc/hosts.deny dosyaları kullanılarak belirli IP/ağlara erişim tanımlanır.

Huzeyfe ÖNAL - huzeyfe at enderunix.org

Thursday, January 25, 2007

pkg-get kurulumu

pkg-get paketi benim gibi Debian kullanıcılarının (aslında çok kullanmadım diye ayrıntısını bilmiyorum artık ama yum paketi de RedHat'ler için artık bu şekilde kullanılmaya başlanmış) çok seveceği bir araç. Debian'daki apt-get uygulamasının bir anlamda Solaris 10 versiyonu. Hatta kullanımı da çok benziyor. :)
Kurulum:

#pkgadd -d
pkgadd -d http://www.opencsw.org/pkg_get.pkg

yazarak kuruyoruz. Sorduğu sorulara "y" diyoruz tabi. :)

Ayrıntıları öğrenmek için:
http://www.opencsw.org/pkg-get
adresini ziyaret edin.

Solaris 10'da PHP

Solaris 10'da Apache 2 ve MySql de çalıştırdık. Sıra geldi PHP 5 kurmaya.
Tabi ki root olarak sisteme girdik.
Önce /opt/csw/bin ve /usr/sfw/bin dizinlerinin $PATH'de tanımlı olup olmadığını kontrol ettik:
# echo $PATH
/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/ucb
(Eğer bu listede üstteki dizinler yoksa:
#export $PATH:/usr/sfw/bin:/opt/csw/bin
#echo $PATH
/usr/sbin:/usr/bin:/usr/openwin/bin:/usr/ucb:/opt/csw/bin:/usr/sfw/bin
)
Daha sonra pkg-get kurulu olduğunu düşünerek sırasıyla kurmaya başlıyoruz
# pkg-get -i autoconf
Bir de kontrol edelim
#which autoconf && autoconf --version | head -2
/opt/csw/bin/autoconf
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.


#pkg-get -i automake
Kontrol için
#which automake && automake --version | head -2
/opt/csw/bin/automake
automake (GNU automake) 1.9.6
Written by Tom Tromey .


#pkg-get -i gsed
#which gsed && gsed --version | head -2
/opt/csw/bin/gsed
GNU sed version 4.1.4
Copyright (C) 2003 Free Software Foundation, Inc.


Şimdi PHP için gerekli dosyalarımız var mı kontrol edelim. Yoksa kuralım
#which gcc && gcc --version | head -2
#which gmake && gmake --version | head -2
#which flex && flex --version | head -2
#which bison && bison --version | head -2
#which gm4 && gm4 --version | head -2
#which gsed && gsed --version | head -2
#which perl && perl --version | head -2
#which gunzip && gunzip --version | head -2
#which gtar && gtar --version | head -2

Kurulu olmayaları pkg-get ile kurabiliriz. Standart Solaris 10 kurulumunda hepsi geliyormuş ama unutmadan not düşeyim.

Sıra geldi kaynak kodundan libxml2 kurmaya. Bu adresten en güncel dosyayı indiriyoruz: ftp://xmlsoft.org/ (tabi tar.gz olanı :))
# gunzip -cd libxml2-2.6.27.tar.gz | gtar xvpf -
# cd libxml2-2.6.27
# ./configure
# gmake
(Eğer gmake komutu çalışmazsa önce
#pkg-get -i gmake ile gmake paketini kurun daha sonra #export PATH=/usr/sfw/bin:/usr/ccs/bin:$PATH komutu ile PATH tanımını yapın gmake komutunu daha sonra kullanın)

# gmake install

Apache'yi kurduk zaten. Eğer kurmadıysanız kurmak için bu dökümanı okuyarak kurun daha doğrusu çalıştırın.

Artık sona yaklaşıyoruz sıra geldi PHP'yi indirmeye. Bu adresten en son sürüm PHP'yi indirin. Ardından açıp sırayla derlemeye başlayalım:

# gunzip -cd php-5.2.0.tar.gz | gtar xvpf -
# cd php-5.2.0
# ./configure --with-apxs2=/usr/apache2/bin/apxs \
--with-mysql=/usr/sfw --enable-dbase \
--with-libxml-dir=/usr/local \
--with-config-file-path=/etc/apache2
# gmake
# gmake-install

php.ini dosyasını uygun yere kopyalayalım:
# cp php.ini-dist /etc/apache2/php.ini

Ardından php.ini dosyasında gerekli düzenlemeleri yapalım.
/etc/apache2/httpd.conf dosyasına da ihtiyacımız olan php modüllerini ekleyelim
LoadModule php5_module libexec/libphp5.so
AddType application/x-httpd-php .php
Artık Apache2'yi yeniden başlatabiliriz.
# svcadm restart apache2 (Eğer Apache çalıyorsa)
# svcadm enable apache2 (Eğer Apache yeni başlayacaksa)
Bir de çalşıtığını kontrol edelim:
# svcs | grep -i apache2
online 11:04:36 svc:/network/http:apache2

Kaynak:
http://meljr.com/~meljr/PHPSolaris10.html
http://www.sun.com/bigadmin/features/articles/samp_setup.html