Sistem yönetimi

Kasım 13, 2009

Güvenli Apache kurulumu (1)

Filed under: Solaris — mbuyukkarakas @ 2:08 pm
Tags: ,

Solaris 10 sunucularımızda Apache 2.2.x sürümlerini çalıştırmak için hazırlık yapıyoruz. Elbette güvenli kurulumun üzerinde yine aynı şekilde güvenli modda çalışan uygulamalar istediğimiz için Apache web server’ın da güvenli kurulumuna dair araştırmalar yapmaya başladık.

Bu ilk kısımda Sun’ın bu konuda yayınlanmış belgelerini referans alarak Apache’nin kısıtlı yetkilerle kontrollü çalıştırılmasına dair bulduklarımı özetlemeye çalışacağım.

Apache’nin SMF servisi olarak nasıl çalıştırılacağını daha önceki bir yazımda açıklamıştım.

Apache SMF dönüşüm

SMF servisi olarak başlattıktan sonra servisin deamon veya root gibi kullanıcı hesapları yerine, kısıtlı yetkilere sahip webservd hesabıyla çalıştırılabilmesi için aşağıdaki komutların takip edilmesi yeterlidir.

# svccfg -s apache2
svc:/network/http:apache2> setprop start/user = astring: webservd
svc:/network/http:apache2> setprop start/group = astring: webservd

Apache servisinin minimum yetki seviyesinde çalıştırılması için gereken ayarlamalar yapılıyor.

svc:/network/http:apache2> setprop start/privileges = astring: basic,!proc_session,!proc_info,!file_link_any,net_privaddr
svc:/network/http:apache2> setprop start/limit_privileges = astring: :default
svc:/network/http:apache2> setprop start/use_profile = boolean: false
svc:/network/http:apache2> setprop start/supp_groups = astring: :default
svc:/network/http:apache2> setprop start/working_directory = astring:
:default
svc:/network/http:apache2> setprop start/project = astring: :default
svc:/network/http:apache2> setprop start/resource_pool = astring: :default
svc:/network/http:apache2> end

Bu noktada servisi yeniden enable etmek gerekiyor.

# svcadm -v enable -s apache2
svc:/network/http:apache2 enabled.

Eğer servis daha önceden çalıştırılmışsa /usr/local/apache2 dizininin sahipliği bin:bin olarak düzenlenmiştir. Bu durumda webservd hesabı log dosyalarını okuyamayacağı için aşağıdaki hata mesajını alabilirsiniz.

 

# cat /var/svc/log/application-web-apache2:default.log

[ Nov 13 14:46:31 Executing start method ("/usr/local/apache2/bin/apachectl start") ]
(13)Permission denied: httpd: could not open error log file /usr/local/apache2/logs/error_log.

Bu durumda klasör sahipliğini webservd hesap ve grubuna devretmek gerekiyor.

chown -R webservd:webservd /usr/local/apache2/

Daha sonra sunucuyu yeniden başlattığınızda httpd servisinin yalnızda bu kullanıcı hesabıyla çalıştığını kontrol etmelisiniz.

ps -ef|grep http|grep -v grep

webservd   714   459   0 15:12:56 ?           0:00 /usr/local/apache2/bin/httpd -k start

ppriv -S 714

714:    /usr/local/apache2/bin/httpd -k start

flags = <none>

E: net_privaddr,proc_exec,proc_fork

I: net_privaddr,proc_exec,proc_fork

P: net_privaddr,proc_exec,proc_fork

L: all

Vmware Tools 4.0 ve Solaris 10

Filed under: Solaris — mbuyukkarakas @ 1:52 pm
Tags: ,

Vsphere 4.0′a geçtiğimizden bu yana sanal Solaris 10 sunucularının vmware tools paketlerini değiştirmek için fırsat kolluyordum. Geçen hafta sonu bir kaç makinede bu işlemi yapıp yeni VM tools’u yükledikten sonra servisin kendiliğinden kapandığını farkettim. Makine açılışında servis açılıyor ancak daha sonra kapanıyordu. Bu konuyla ilgili küçük bir araştırmadan sonra UTF-8 locale ile ilgili aşağıdaki paketin yüklenmesi gerektiğini öğrendim. Paket yüklendikten sonra sunucular sorunsuz olarak VM tools’u çalıştırmaya başladılar.

VMware Tools does not start on a Solaris guest

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1014683

 

 

Kasım 5, 2009

Solaris 10 güvenli kurulum (1)

Filed under: Solaris — mbuyukkarakas @ 3:56 pm
Tags: ,

Güvenli bir Solaris 10 kurulumu hazırlamaya çalışıyorum. Olabildiğince az servis ve uygulama yüklü olması tercihim. Gereken her türlü ortamda minimum saldırı yüzeyine sahip, kullanışlı bir işletim sistemi. Üzerinde bayağı zamandır çalışıyorum ve bu konuda bir yordam hazırladığımı söyleyebilirim.

Temel paket olarak Core Networking (SUNWcreq) paketini kullandım. Aşağıda gerekli olduğunu düşündüğüm ve  ek olarak yüklediğim paketler bulunuyor.

  • Automated Security Enhancment Tools (SUNWast)
  • Audit Service Implementation (SUNWaudit)
  • Basic Audit Reporting Tools (SUNWbart)
  • Documentation Tools (SUNWdoc )
  • Freeware other utilities (SUNWCfwutil)
  • Freeware shells (SUNWCfwshl)
  • On-line manual pages (SUNWman)
  • Secure Shell (SUNWCssh)

Daha sonra sıra yamalamaya geldi. PCA (Patch check advanced) scriptini kullanarak sunucumun yamalarını yükledim. Bu yükleme için yalnızca Perl’e ve wget’e ihtiyaç duyuluyor. Perl mevcut kurulumda gelmekte. wget ise

  • GNU wget (SUNWCwget)
  • Bağımlılık  – Common GNU package (gcmn)

paketlerinin yüklenmesiyle hazır hale geliyor. PCA’nın aktif hale gelmesi için sunucunuzu doğrudan HTTPS ile Internet’e çıkabilir hale getirmek gerekli.  Çalıştığında 60′a yakın yama buluyor ancak bende bunlardan yalnızca 20′sini yükledi.

http://www.par.univie.ac.at/solaris/pca/intro.html

Bu işlemler bittikten sonra da sunucuya Solaris Security Toolkit (SUNWjass) ile bazı ilave düzenlemeler yaptım. SUNWjass’ı http://www.sun.com/software/security/jass/ sayfasından indirebilirsiniz. Araç hakkında detaylı bilgiye bu blogdan ulaşmak mümkün.

SUNWjass çalıştırıldığında /etc/hosts.deny dosyasına ALL kaydını ekliyor. Dolayısıyla başta ayarları özelleştirmezseniz bir sonraki açılışta sunucuya SSH bağlantısı yapamayacaksınız anlamına geliyor. Bu nedenle uygulamadan önce test sistemlerinde çalıştırmak ve özelleşmiş ayarlarla prod sistemlerine geçmek en doğrusu.

 

patch

Eylül 29, 2009

BackupExec 12.5 ve Solaris 10 yedekleme sorunu

Filed under: Solaris — mbuyukkarakas @ 7:28 pm
Tags: , ,

Yedekleme yazılımımızı BrightStore’dan Symantec BackupExec 12.5′a geçirdiğimizden bu yana enteresan sorunlarla karşılaşıyoruz. Geniş bir platform ve farklı sistemlerin olduğu bir ortamda böyle bir değişikliğin sancısız olmayacağının farkındaydık ama bu kadar da enteresan şeyler göreceğimizi açıkçası pek sanmıyordum.

Anlatmaya çalıştığım sorunumuz şu : Solaris 10 U7 sunucularda BackupExec agent’ını yükleyerek çalıştırdıktan sonra BE’nin yönetim konsolunda normal olarak sunucuyu görmemiz gerekir. Ancak farklı yöntemler denememize rağmen bir türlü sunucuyu BE’ye tanıtmayı başaramadık.

Agent’ın debug modunu açtığımızda da hep aynı mesajı alıyorduk ;

NrdsAdvertiserThread: EnumSelfDLE for file system 22 returned -1(0xFFFFFFFF) and 0 DLEs

Symantec’le yaptığımız yazışmalar ve açılan “case” sonucunda bize, ipe sapa gelmeyen aşağıdaki açıklamayı gönderdiler.

http://seer.entsupport.symantec.com/docs/316840.htm

Özetle, Solaris’teki NIC cihaz adının ortasında (başı ve sonu değil) rakam bulunuyorsa BE 12.5 sunucusu bu agentı tanımıyor, agent kendisini BE’ye tanıtamıyor gibi garip bir durum vardı. (Ör : e1000g0 çalışmıyor, fge0 çalışıyor).

Tabi bu durumu önceleri biraz gülerek ama zaman ilerledikçe ve işler aksadıkça kızarak ve sonrasında da ciddi öfke patlamaları şeklinde karşılamaya başladık. İşin kötü yanı , NIC device name’ler henüz Solaris 10′da değiştirilemiyor. Ortamımızda tüm Solaris sunucuları Vmware ESX 3.5 üzerinde çalışıyor ve ESX hostlarda yalnızca e1000g sürücüsünü kullanan Ethernet kartları tanımlı. Dolayısıyla kartları değiştirerek de “device name”leri değiştirme imkanımız yok.

Cihaz ismini değiştirme seçeneği yalnızca Open Solaris ‘de dladm rename-link komutu ile desteklenmekte.

http://www.sun.com/bigadmin/sundocs/articles/vnamingsol.jsp

http://www.opensolaris.org/os/project/clearview/docs/vnameoverview.pdf

Ama en sonunda biraz (itiraf ediyorum birazdan daha fazla :) ) kastırınca ve Sun Microsystems Türkiye’den de küçük bir destek alarak sorunumuzu çözdük.

Yaptığımız işlem basitçe Solaris ve BE’yi kandırmak. Mevcut ismi değiştiremeyince biz de içinde tek NIC’in bulunduğu bir Link aggregation yaratarak BE’nin muhatap olduğu NIC’in seveceği türden (!) bir isminin olmasını sağladık. Aşağıda bu işlemi nasıl yaptığımızı gösteren komutlar bulunuyor.

# ifconfig e1000g0 down unplumb (bu komutu kullanmadan dladm çalıştırılırsa ‘cihaz kullanılıyor’ hatası veriyor)
# dladm create-aggr -d e1000g0 1
# ifconfig aggr1 plumb up
# mv /etc/hostname.e1000g0 /etc/hostname.aggr1

Not : Sun Microsystems Türkiye’den Serkan Berk’e yardımları için bu vesileyle teşekkür ediyoruz.

Eylül 8, 2009

Solaris 10, Apache v2.2.12 SMF düzenleme

Filed under: Solaris — mbuyukkarakas @ 12:47 pm
Tags: , , , ,

Projelerden biri için iki adet Solaris 10 (u7) sunucu üzerine medya ile birlikte gelen Apache’nin kurulması gerekiyordu. Kurduk :) Ama daha sonra yazılımcılar en az V2 ile çalışmak istediklerini belirtip V1.3′ten vazgeçtiler.

Herhangi bir yazılımcının istek ve karar değişiklikleri asla bitmeyeceği için bir süre sonra bunu da yeterli görmeyip V2.2 ile çalışmak istediklerini belirttiler.

Solaris medyası ile V2 geldiği için V2.2.12′ yi ancak www.sunfreeware.com’dan bulabildim.

http://www.sunfreeware.com/programlistintel10.html#gcc33

Apache’nin bu sürümü beraberinde bir çok ek paketin de yüklenmesini istiyor. Özellikle prod sunucularına GCC kurmak istemeyenler için libgcc.3-4-6 tavsiye edilmiş.

Kurulumlar tamamlandığında elimizde çalışır halde Apache v2 sunucuları vardı ve yazılımcıların tüm isteklerini karşılıyordu ama bu sefer de yönetim sorunları ortaya çıktı.

Yüklemede kullandığım stream data package anladığım kadarıyla Apache için SMF servisi oluşturmamıştı. Bu durumda ancak ilgili klasörün içinden apachectl’yi elle çalıştırarak hizmeti başlatabiliyorduk.

Aslında bu durum işime de gelmedi değil. Ne kadar zamandır SMF hakkında pratik yapmayı planlıyordum ve bu sayede el alışkanlığımı da geliştirmiş oldum.

Apache V2 için SMF servisi oluşturmanın yolu çok basit.

1- Sun’ın aşağıdaki belgesi oldukça açıklayıcı

http://www.sun.com/bigadmin/features/articles/id_manager_service.html

2- Buradan mevcut XML dosya örneğini alıp üzerinde bazı küçük değişiklikler yaptım ve bahsedildiği gibi bir klasör altına yerleştirdim.

3- Aşağıdaki komutları çalıştırdım ve Voila ! Servis hazırdı.

bash-3.00# svccfg validate apache2.xml
bash-3.00# svccfg import apache2.xml

SMF ile ilgilenenler için açıklayıcı bir forum topiğini de ekte yayınlıyorum.

http://www.unix.com/sun-solaris/32936-solaris-10-add-new-svc.html

Temmuz 18, 2007

Solaris 10 Senaryo çalışması – 1

Filed under: Solaris — mbuyukkarakas @ 9:40 pm
Tags: , ,
  • Standart bir solaris 10 sistemi kurulur.

  • /yedek ve /yedek2 klasörü açılır. (İleride kullanıcıların erişim yetkilerini test etmek amacıyla kullanılacaktır.)

Mkdir /yedek

mkdir /yedek2

  • X şirketindeki kullanıcılar için
    • Dahil oldukları departmanları temsil eden gruplar oluşturulur.
      1. Muhasebe grubu oluşturulur. Açıklama yazılır.

/usr/sbin/groupadd –g 700 muhasebe

      1. Denetim grubu oluşturulur. Açıklama yazılır.

/usr/sbin/groupadd –g 701 denetim

      1. “genel mudurluk” grubu oluşturulur. Açıklama yazılır.

Genelmudurluk ismi çok uzun olmasına rağmen ve hata mesajıyla uyarmasına rağmen /etc/group dosyasına kayıt etti.

/usr/sbin/groupadd –g 702 gm

      1. Mudurler grubu olusturulur.

/usr/sbin/groupadd –g 703 mudurler

    • Tüm kullanıcılar için logon scriptler hazırlanır.
      • User01-10 arası kullanıcı hesapları oluşturulacaktır.

      1. User01-User03 arasının shell csh’dir. Path’e ilave olarak /export/home/%HOMEDIR% eklenir. Prompt “Working Directory = pwd” dir.

useradd –u 1000 –g 700 –s /bin/csh user01

cd /etc/skel

touch .login

vi .login

set path=($path ~)

set prompt=’pwd’

      1. User 04-07 arasının shell bash’dir. Path’e ilave olarak /yedek eklenir. Prompt “Shell Name User State Pwd >” dir.

useradd –u 1000 –g 700 –s /bin/bash user04

cd /etc/skel

touch .profile

vi .profile

PS1=”\s@\h ‘pwd’ >”

PATH=$PATH:/yedek

      1. User 08-10 arasının shell sh’dir. Path’e ilave olarak /yedek2 eklenir. Prompt “Shell Name User State Pwd >” dir.

useradd –u 1000 –g 700 –s /bin/sh user08

cd /etc/skel

touch .profile

vi .profile

PS1=”\s@\h ‘pwd’ >”

PATH=$PATH:/yedek

    • Çalışma ortamı oluşturulur.

      1. Tüm kullanıcılar için Message of the day hazırlanır.

vi /etc/motd

*************************************

Her gun spor yapın, kalbinizi koruyun

*****************************************

      1. user01-03 arası kullanıcılar logon olduklarında who komutu çalışır.

Echo who >>/etc/.login

      1. user 04 logon olduğunda prstat çalışır

echo prstat >>/export/home/user04/.login

echo prstat >>/export/home/user04/.profile

Theme: Rubric. WordPress.com'dan blog alın.

Takip Et

Get every new post delivered to your Inbox.

Join 31 other followers