Linux Güvenliği

ByCrauSeRs

Kıdemli Üye
22 Eyl 2007
2,641
9
THT KaLıcı KonutLarı
Çok değil bundan 9-10 yıl kadar önce, bir bilgisayarın güvenliğinden bahsedildiğinde anlaşılan çoğunlukla fiziksel güvenlik idi. Zamanla yaşanan olaylar, ağ güvenliğinin de bu işin bir parçası olduğunu öğretti bizlere.
Bilgisayarımızı ağa bağladığımızda, guvenlikte olmasını istediğimiz belgelerimiz, kişisel verilerimiz vb. ile dış dünya arasında bir kapı açmış oluyoruz aslında. Bu kapıdan kimlerin geçmesi gerektiğine, kimlerin geçmesini istemediğimize yapacaklarımızla/alacağımız önlemlerle yine biz karar
veriyoruz. Yaygın bir kanı vardır: 'Güvenlik için ayrılan zamanın %20 si ile bilgisayarınızın güvenliğinin %80 ini sağlayabilirsiniz.' (Bu oranları %10-%90 diye telaffuz edenler de var. İnsanlar abartmayı seviyorlar ) Bu belgede yeni bir Linux işletim sistemi kurulduğunda, güvenlik için ilk etapta dikkat
edilmesi gereken birkaç noktadan bahsedeceğiz. Yazının içeriği özellikle Linux/Unix dünyası ile yeni tanışan kullanıcılar hedeflenerek oluşturulmuştur.


Sisteminizde tanımlı, gerek yetkili kullanıcı(root) gerekse diğer
kullanıcıların parolalarının güvenliği çok önemlidir. Bu nedenle:
- Parola asla sozlüklerde bulunan bir kelime veya birkaç kelimenin bileşimi olmamalıdır.
- Parola, doğum tarihiniz, kedinizin adı gibi kolaylıkla tahmin edilebilir şeyler olmamalıdır.
- Parola belirlerken sadece harflerden veya sadece rakamlardan oluşan birşey yerine büyük/küçük harf, rakam ve hatta özel karakterler ( !@#$%^&*()_+ ) içeren bir parola seçin.
- Parolanızı kimseye söylemeyin.
- Belli sıklıklarla parolanızı değiştirin.


Servisler, sadece kendiniz için veya kimi zaman bütün dunyaya sisteminizin sunmasını planladığınız hizmetlerdir. Ve sisteminizin kuruluş amacına gore çalıştırmanız gereken servisleri belirleyip, sayıyı en azda tutmaya çalışmalısınız. Çünkü sisteminizin güvenliği, çalışan servislerin ve kullandığınız yazılımların güvenliği kadardır. Örneğin günlük-masaüstü bir sistemde mail, web, alan adı vb. sunucularının çalışması gereksizdir. Kötü
niyetli kişilerin açıklarını deneyecekleri ilk servislerdir bunlar.
bilgisyarınızda calışan servisleri 'netstat -vat' komutu ile görebilirsiniz.
komutun çıktısı aşağıdaki gibidir:
-----
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *
tongue.gif
rinter *:* LISTEN

tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *
tongues.gif
11 *:* LISTEN

tcp 0 0 *:ssh *:* LISTEN
-----

LISTEN yazan satırlar, sisteminizde bağlantı kabul eden servisleri gösterir.
Bu servislerin bir kısmı tek başına çalışan programlardır, bir kısmı ise 'inetd/xinetd' ile kontrol edilir. Bu servislerin kimlerden bağlantı kabul edecekleri ise hosts.allow/hosts.deny dosyaları aracılığı ile belirtilebilir.

a) inetd/xinetd
inetd aslında kimi servisleri kontrol eden başka bir servistir. Temel işlevi, servislerin kendi başlarına sürekli çalışmalarındansa sadece istek olduğunda otomatik olaraka çalıştırılarak bilgisayara daha az yük binmesini sağlamaktır.
Bazı Linux dağıtımlarıile gelen xinetd de biraz daha farklı bir yapıya sahip olmakla birlikte aynı işlevi görür.
Kurulum sonrasında inetd/xinetd yapılandırma dosyalarını gözden geçirip gereksiz olduğu düşünülen servislerle ilgili satırları kapatmak güvenlik icin atılabilecek önemli adımlardan birisidir. /etc/inetd.conf(inetd için) dosyası şöyle birşeydir:
-----
ftp stream tcp nowait root /usr/local/sbin/proftpd /usr/local/sbin/ proftpd -c /usr/local/etc/proftpd.conf
#telnet stream tcp nowait root /usr/local/tcpd in.telnetd
#shell stream tcp nowait root /usr/sbin/tcpd rshd
#login stream tcp nowait root /usr/sbin/tcpd rlogind
-----

dosyadaki satırları gözden geçirecek olursak:
2. satır sistemin inetd aracılığı ile ftp isteklerini dinlediğini
gösteriyor. diyez (#) karakteri ile başlayan satırlar ise kapatılan
servisler. Sisteme telnet, rsh ve rlogin ile bağlantı kabul etmek
istenmediğinden bu servisler ile ilgili satırlar kapatılmıs durumda.
Bu servisler /etc/services dosyasında tanımlanmışlardır.

xinetd de ise yapılandırma tek dosyadan değil de her servis için ayrı dosyalardan (/etc/xinetd.d dizini altında) oluşur. Örneğin bilgisayarınıza telnet ile bağlanılmasını isterseniz bunun için /etc/xinetd.d dizini altında telnet isimli aşağıdaki gibi bir dosya oluşturulmalı:
-----
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service ftp
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/proftpd
log_on_failure += USERID
}
-----

dosyada diyez(#) ile başlayan satırlar yorum satırlarıdır. 'service' ibaresi
ile istek geldiğinde çalıştırılacak servis belirtiliyor. 'disable = no' satırı ise bu servise gelecek isteklerin dinlendiğini belirtiyor.
inetd/xinetd yapılandırmasında herhangi bir değişiklik yapıldığında, yeni durumu aktif hale getirmek için:

/etc/rc.d/init.d/inetd restart veya benzeri şekilde xinetd için
/etc/rc.d/init.d/xinetd restart komutunu başarı ile çalıştırmak yeterli.

b) hosts.allow/hosts.deny
Servislerin bütün dünya tarafından erişilebilir olması, istenilen
bir durum değildir. Genellikle sistem üzerinde çalışan servislere sadece bildiğimiz, güvenebileceğimiz bilgisayarlardan erişilmesini isteriz.
Bunu gerçekleştirmek için /etc/hosts.allow ve /etc/hosts.deny adlı iki dosya kullanılır. İsimlerinden de anlaşılacağı gibi hosts.deny dosyasını kullanarak servisleri kullanamayacak bilgisayarlar, hosts.allow ile de servisleri kullanabilecek bilgisayarlar belirtilebilir. Dosya içeriklerinden gidecek olursak :
-------
hosts.deny:
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the `/usr/sbin/tcpd` server.
#
ALL: ALL
---------
hosts.allow
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the `/usr/sbin/tcpd` server.
#
proftpd: 144.122.111.111
sshd: 144.122.
-------

yukarıdaki bilgilerden anlaşılacağı üzere hosts.deny dosyasındaki
ALL: ALL
satırı ile servisler bütün dünyaya kapalı durumda. hosts.allow dosyasında tanımlanan kurallar hosts.deny dosyasının tanımladıklarının üstüne yazdığı için ssh servisinin 144.122. IP` li bilgisayarlardan(sadece ODTÜ içerisinden), ftp servisinin de sadece 144.122.111.111 IP` li bilgisayardan bağlantı kabul etmesi sağlanıyor.

c) ssh/telnet
ssh ve telnet aslında farklı protokoller olmalarına rağmen, aynı işi yaparlar.
Aralarındaki fark ise veriyi iletme şekilleridir. telnet karşıdaki bilgisayar ile konuşurken ilettiği veriyi düz metin(plain text) olarak iletirken, ssh bağlantı kurulurken ve bağlantı kurulduktan sonraki veri aktarımı aşamalarında karşıdaki bilgisayar ile kriptolu konuşur. Böylece ağınızı dinlemeye çalışabilecek kötü niyetli kişiler verilerinizi düz metin halinde değil sadece kriptolanmış halde görebileceklerdir.



Yukarıda yazılı olan temel şeyleri, ve kendi araştırmalarınız/okumalarınız (ilk kural okumaktır) sonucunda öğrendiklerinizi uyguladığınızda bile hala güvenlik için yapmanız gereken bir şey var: Güvenlik yamalarının uygulanması.
Dağıtım ile birlikte gelen ve daha sonra özel olarak kurulan programların güvenlik açıkları olabileceğini unutmamak gerekir. Bu yüzden güncelleme (update) mekanizmaları hayati önem kazanmaktadırlar. Bugün, bazı dağıtımlar (Redhat,
Mandrake, Debian vb.) içerdikleri bu tarz programlarla güncelleme işini otomatik hale getirebilmektedirler. Bu programlar ve güncelleme işlemleri ile ilgili ayrıntılı bilgi bu dağıtımların web sayfalarından edinilebilir.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.