Ana Sayfa » *nix » Linux Sistemlerde Gereksiz Servislerin Tespiti ve Kapatılması

Linux Sistemlerde Gereksiz Servislerin Tespiti ve Kapatılması


BerbatKötüİdare EderGüzelHarika (Toplam 2 oy. 5 puan üzerinden ortalama 5,00 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYufO49l' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349

Sistemde aslında kullanımda olmayan servisleri kapatmak, basit ama unutulmaması gereken bir güvenlik önlemidir. Zira kullanılmadığından dolayı çalışmasına gerek olmayan servislerde çıkabilecek herhangi bir güvenlik zafiyeti  sistem bütünlüğünü tehlikeye atacağı gibi ayrı olarak sistem kaynaklarının boş yere tüketiliyor olması anlamına da gelmektedir. Dolayısı ile bu tip servislerin saptanması ve devre dışı bırakılması rutin olması gereken bir işlemdir.

Yazının devamında, sunucu olarak kullanılan sistemler için çalışan servislerin listelenmesi, gereksiz olanların hangilerinin olabileceği ve bunların devre dışı bırakılması ile ilgili detaylar bulabilirsiniz.

İlk olarak kullanımda olmayan servislerin neler olabileceğinden ve nasıl tespit edilebileceklerinden bahsedeceğim. Sonrasında da bu gibi servislerin devre dışı bırakılması için yapılması gereken işlemlere değineceğim.

 

Kullanılmayan Servislerin Tespiti


Sisteminizde daha önceden yüklenmiş ancak artık kullanılmayan servisler olabileceği gibi sistem kurulumu sırasında öntanımlı olarak yüklenen fakat server görevi yapan sistemler için gereksiz olabilecek bazı servisler de olabilir. Dolayısı ile öncelikli olarak öntanımlı gelen ve genel olarak kullanılmayan servisleri belirlemek yerinde olacaktır.

Genelde Kullanımda Olmayan Servisler

Bahsi geçen bu servisler duruma göre farklılık gösterebilir. Örnek olarak cups servisi printing ile alakalıdır ve sunucunuz bir print server değilse kullanılmamaktadır. Dolayısı ile kapatmanız yerinde olacaktır. Bu tip servislere örnek olarak şunlar gösterilebilir:

Sistem üzerindeki bu gereksiz servisleri tespit etmek için netstat ve lsof gibi araçlardan yararlanılabilir. Örnek olarak netstat kullanarak herhangi bir udp ya da tcp port üzerinde çalışan servislerinin listesini almak için  aşağıdaki kullanılabilir.

bluetooth:
Sunucunuzda herhangi bir bluetooth adaptör yoksa (ya da bluetooth üzerinden erişim sağlamıyorsanız Bluetooth ile ilgili hcid, hidd gibi servisleri kapatabilirsiniz. Bu servisler örnek olarak CentOS tabanlı sistemlerde öntanımlı olarak kurulmaktadır.

avahi-daemon:
Aynı şekilde RHEL tabanlı sistemlerde öntanımlı olarak gelen avahi-daemon, local networkte bulunan kaynakları ya da servisleri (shared files, printer vs) discover etmek üzere kullanılan bir servis olduğundan ve sunucu sistemlerde bu tip bir ihtiyaç bulunmadığından rahatça kapatılabilir.

cups:
Cups da printing ile alakalı bir servis olduğundan ve sunucu sistemlerde (print server olmadığı sürece) priting ile ilgili işlemlere gerek olmadığından cups servisi de kapatılabilecek servislerin arasındadır.

Network Servisleri

Yukarıda sayılanlardan hariç olarak sistemdeki gereksiz diğer servisleri tespit etmek için netstat, lsof ya da (FreeBSD sistemler için) sockstat araçlarından yararlanılabilir.

netstat:
Netstat kullanarak herhangi bir udp ya da tcp port üzerinde çalışan servislerinin listesini almak için aşağıdaki kullanılabilir.

 # netstat -luntp

Komutun çıktısı şuna benzer olacaktır:

Proto Recv-Q Send-Q Local Address       Foreign Address     State       PID/Program name
tcp        0      0 0.0.0.0:3306        0.0.0.0:*           LISTEN      30120/mysqld
tcp        0      0 0.0.0.0:111         0.0.0.0:*           LISTEN      2070/portmap
tcp        0      0 127.0.0.1:631       0.0.0.0:*           LISTEN      30949/cupsd
tcp        0      0 0.0.0.0:1016        0.0.0.0:*           LISTEN      2106/rpc.statd
tcp        0      0 127.0.0.1:25        0.0.0.0:*           LISTEN      2382/sendmail:
tcp        0      0 :::80               :::*                LISTEN      29348/httpd
tcp        0      0 :::22               :::*                LISTEN      2338/sshd
udp        0      0 0.0.0.0:33085       0.0.0.0:*               	2490/avahi-daemon:
udp        0      0 0.0.0.0:111         0.0.0.0:*               	2070/portmap
udp        0      0 0.0.0.0:1010        0.0.0.0:*               	2106/rpc.statd
udp        0      0 0.0.0.0:631         0.0.0.0:*               	30949/cupsd
udp        0      0 :::56773            :::*                    	2490/avahi-daemon:

Listede görüldüğü üzere yukarıda da adlarını saydığımız cups, avahi gibi servislerin yanı sırda, mysql, httpd gibi servisler de bir listesi verilmekte. Dolayısı ile kendi sisteminizdeki çıktıya göre kapatılması gereken servisleri bu şekilde tespit edebilmek mümkündür.

lsof:
netstat'a benzer olarak aynı işlemi lsof kullanarak da yapabilirsiniz. Ancak lsof sisteminizde öntanımlı olarak bulunmuyor olabilir. Bu durumda netstat kullanabilir ya da “lsof (LiSt Open Files) Kullanımı ve Örnek Komutlar” başlıklı yazıda anlatıldığı şekilde kurabilirsiniz.

lsof ile herhangi bir portu dinleyen servisleri listelemek için aşağıdaki komutu vermeniz yeterlidir:

# lsof -i -n |egrep '|LISTEN'

Komutun çıktısı aşağıdakine benzer olacaktır:

     PID    USER   FD   TYPE DEVICE SIZE NODE NAME
portmap    2070     rpc    4u  IPv4   6191       TCP *:sunrpc (LISTEN)
rpc.statd  2106 rpcuser    7u  IPv4   6339       TCP *:1016 (LISTEN)
sshd       2338    root    3u  IPv6   6867       TCP *:ssh (LISTEN)
sendmail   2382    root    4u  IPv4   7000       TCP 127.0.0.1:smtp (LISTEN)
httpd     29348    root    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29349  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29350  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29351  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29352  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29353  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29354  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29355  apache    3u  IPv6  91623       TCP *:http (LISTEN)
httpd     29356  apache    3u  IPv6  91623       TCP *:http (LISTEN)
mysqld    30120   mysql   10u  IPv4 226330       TCP *:mysql (LISTEN)
cupsd     30949    root    4u  IPv4 228068       TCP 127.0.0.1:ipp (LISTEN)

Böylece, ilgili listeden aslında işlevi olmayan servisleri saptayarak bir sonraki ana başlıkta değinileceği gibi devre dışı bırakabilirsiniz.

Servislerin Devre Dışı Bırakılması


sistemlerde servisleri yönetmek için kullanılabilecek araçlar dağıtıma göre değişiklik gösterebilir. Mesela, RHEL, CentOS ve Fedora gibi Red Hat tabanlı sistemlerde chkconfig ya da grafik arayüz sunan ntsysv aracı, Debian ve Ubuntu gibi dağıtımlarda ise update-rc.d ya da gene grafik arayüz sunan rcconf aracı kullanılabilir.

Örneğin, RHEL tabanlı sistemlerde misal olarak cups'ı devre dışı bırakmak chkconfig aracını şu şekilde kullanabilirsiniz:

# chkconfig cups off

Debian sistemlerde ise aynı işi update-rc.d komutu ile yapabilirsiniz.

# update-rc.d -f cups remove

Bu şekilde, cups startup'dan kaldırılmış olur ve sistem açılışlarında otomatik olarak başlatılmaz. Tabi halihazırda çalışmakta olduğu için ilgili servisin init scripti ile servisi durdurmayı unutmayın.

# /etc/init.d/cups stop

Hepsi bu kadar.

Visited 6.117 times, 1 visit(s) today
Kategoriler: *nix,ipucu,Security |

Bu yazılar da ilginizi çekebilir:


- lsof (LiSt Open Files) Kullanımı ve Örnek Komutlar
- Portaudit ile Kurulu Paketler için Zafiyet Takibi
- htaccess combiner ile Apache Performance Tunning
- Kurulu Perl Modüllerinin Listelenmesi
- mod_rewrite – .htaccess ile Bakım Sayfasına Yönlendirme

Yorumlar


  1. acemi | (Temmuz 7th, 2011 10:21 pm)

    Debian makine kurarken benim tercihim Netinstall CD’si ile standart sistem kurup daha sonra sadece gereken paketleri eklemek.

    Netinstall CD’si ile standart kurulum yaparken yansi belirtmeye de gerek yok, CD icindeki paketler yetiyor. Standarta ek olarak sadece OpenSSH Server ekliyorum.

    Daha sonra yansi adreslerini ekleyip sistemi guncelliyorum. Yeni paket eklemeden once “Recommended” ve “Suggested” paketlerin kurulmamasi icin gerekli degisiklikleri yapiyorum. Ve daha sonra sadece gereken paketleri ekliyorum.

    Sunucu ya da masaustu olmasi farketmiyor, her zaman bu sekilde kurulum yapiyorum. Zahmetli gibi gorunebilir ama bir-iki kere bu sekilde kurulum yaptiktan sonra her adim otomatik sekilde ilerliyor ve tasksel ile kurmaktan pek bir farki kalmiyor, Hemen hemen ayni surede bitiyor.

    [Cevapla]

  2. Haluk Akin | (Temmuz 8th, 2011 10:22 pm)

    Güzel bir yazı.

    Fırsat olursa benzer bir yazıyı apache modülleri için de yazabilirseniz güzel bir katkı olabilir.

    Hangi apache modların gereksiz olduğuna dair bazı İngilizce yazılar var ama yeterince detaylı yazı yok bildiğim kadarıyla.

    Teşekkürler.

    [Cevapla]

  3. hasan | (Ağustos 19th, 2014 1:48 am)

    Bilgisayarın dışarıdan izlenip izlenmediğini bulabilirmiyiz.

    [Cevapla]

Trackbacks

Yorumda bulunun.