Linux’te ‘sudo’ Ayarlamak İçin 10 Faydalı Sudoers Yapılandırması

Yazar admin
19 dakika Okuma Süresi
A+A-
Sıfırla
Sudoers Dosyasını Nasıl Düzenlerim?

Linux ve diğer Unix-benzeri işletim sistemlerinde, yalnızca root (süper kullanıcı) tüm komutları çalıştırabilir ve sistem üzerinde paket yükleme, güncelleme, kaldırma, kullanıcı ve grup oluşturma, önemli sistem yapılandırma dosyalarını değiştirme gibi kritik operasyonları gerçekleştirebilir. Ancak, root kullanıcısı rolünü üstlenen bir sistem yöneticisi, sudo komutu ve bazı yapılandırmalar sayesinde diğer normal sistem kullanıcılarına da belirli komutları çalıştırma ve yukarıda bahsedilen bazı önemli sistem operasyonlarını gerçekleştirme yetkisi verebilir.

Alternatif olarak, sistem yöneticisi root kullanıcı şifresini paylaşarak (ki bu önerilen bir yöntem değildir) normal sistem kullanıcılarının su (substitute user) komutu aracılığıyla root hesabına erişimini sağlayabilir. Ancak, sudo kullanmak daha güvenli ve yönetilebilir bir yöntemdir.

Sudo Komutu Nedir?

Sudo, izin verilen bir kullanıcının belirli komutları root veya başka bir kullanıcı olarak çalıştırmasını sağlayan bir komuttur. Güvenlik politikası tarafından belirlenen şekilde çalışır:

  1. /etc/sudoers dosyasını okur ve çağıran kullanıcı ile izinlerini belirler.
  2. Çağıran kullanıcıdan şifre ister (genellikle kullanıcının kendi şifresi, ancak hedef kullanıcının şifresi de olabilir veya NOPASSWD etiketi ile atlanabilir).
  3. sudo, hedef kullanıcıya geçiş yapmak için setuid() çağrısını içeren bir alt işlem oluşturur.
  4. Sonrasında, yukarıdaki alt işlemde bir kabuk veya argüman olarak verilen komutu çalıştırır.

Bu yazıda, sudo komutunun davranışını değiştirmek için /etc/sudoers dosyasındaki Defaults girdilerini kullanarak yapılandırabileceğiniz on farklı yapılandırmayı ele alacağız.

/etc/sudoers Dosyası

Sudoers dosyası, sudo komutunun nasıl çalışacağını belirleyen yapılandırma ayarlarını içerir. Bu dosya doğrudan düzenlenmemelidir; bunun yerine, visudo komutu kullanılarak düzenlenmelidir. Aşağıda örnek bir /etc/sudoers dosyası bulunmaktadır:

$ sudo cat /etc/sudoers
#
# Bu dosya root olarak 'visudo' komutu ile düzenlenmelidir.
#
# Bu dosyayı doğrudan değiştirmek yerine /etc/sudoers.d/ dizinine yerel içerik eklemeyi düşünün.
#
# sudoers dosyasının nasıl yazılacağı hakkında detaylar için man sayfasına bakın.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Parola yanlış, lütfen tekrar deneyin"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Defaults Girdileri Türleri

Defaults girdileri, sudo komutunun genel davranışını belirleyen parametrelerdir. Bu girdilerin türleri aşağıdaki gibidir:

  • Defaults: Tüm kullanıcıları ve tüm hostları etkiler.
  • Defaults@Host_List: Belirli bir host üzerindeki tüm kullanıcıları etkiler.
  • Defaults:User_List: Belirli kullanıcıları etkiler.
  • Defaults!Cmnd_List: Belirli komutları etkiler.
  • Defaults>Runas_List: Belirli bir kullanıcı olarak çalıştırılan komutları etkiler.

Bu rehberde, ilk tür olan tüm kullanıcıları ve hostları etkileyen Defaults girdilerine odaklanacağız.

Defaults Girdilerinin Kullanımı

Defaults girdileri çeşitli parametre türlerini destekler:

  • Bayraklar (Flags): Boolean değerlerdir ve ‘!’ operatörü ile kapatılabilir.
  • Listeler: += (listeye ekleme) ve -= (listeden çıkarma) operatörleri ile manipüle edilebilir.
  • Değer Atamaları: = operatörü ile parametrelere değer atanabilir.

Örnek kullanım şekilleri:

Defaults parameter
Defaults parameter=value
Defaults parameter -=value
Defaults parameter +=value
Defaults !parameter

Düşündüm için birkaç saniye

Linux’te ‘sudo’ Ayarlamak İçin 10 Faydalı Sudoers Yapılandırması

Linux ve diğer Unix-benzeri işletim sistemlerinde, yalnızca root (süper kullanıcı) tüm komutları çalıştırabilir ve sistem üzerinde paket yükleme, güncelleme, kaldırma, kullanıcı ve grup oluşturma, önemli sistem yapılandırma dosyalarını değiştirme gibi kritik operasyonları gerçekleştirebilir. Ancak, root kullanıcısı rolünü üstlenen bir sistem yöneticisi, sudo komutu ve bazı yapılandırmalar sayesinde diğer normal sistem kullanıcılarına da belirli komutları çalıştırma ve yukarıda bahsedilen bazı önemli sistem operasyonlarını gerçekleştirme yetkisi verebilir.

Alternatif olarak, sistem yöneticisi root kullanıcı şifresini paylaşarak (ki bu önerilen bir yöntem değildir) normal sistem kullanıcılarının su (substitute user) komutu aracılığıyla root hesabına erişimini sağlayabilir. Ancak, sudo kullanmak daha güvenli ve yönetilebilir bir yöntemdir.

Sudo Komutu Nedir?

Sudo, izin verilen bir kullanıcının belirli komutları root veya başka bir kullanıcı olarak çalıştırmasını sağlayan bir komuttur. Güvenlik politikası tarafından belirlenen şekilde çalışır:

  1. /etc/sudoers dosyasını okur ve çağıran kullanıcı ile izinlerini belirler.
  2. Çağıran kullanıcıdan şifre ister (genellikle kullanıcının kendi şifresi, ancak hedef kullanıcının şifresi de olabilir veya NOPASSWD etiketi ile atlanabilir).
  3. sudo, hedef kullanıcıya geçiş yapmak için setuid() çağrısını içeren bir alt işlem oluşturur.
  4. Sonrasında, yukarıdaki alt işlemde bir kabuk veya argüman olarak verilen komutu çalıştırır.

Bu yazıda, sudo komutunun davranışını değiştirmek için /etc/sudoers dosyasındaki Defaults girdilerini kullanarak yapılandırabileceğiniz on farklı yapılandırmayı ele alacağız.

/etc/sudoers Dosyası

Sudoers dosyası, sudo komutunun nasıl çalışacağını belirleyen yapılandırma ayarlarını içerir. Bu dosya doğrudan düzenlenmemelidir; bunun yerine, visudo komutu kullanılarak düzenlenmelidir. Aşağıda örnek bir /etc/sudoers dosyası bulunmaktadır:

bashKopyala$ sudo cat /etc/sudoers
#
# Bu dosya root olarak 'visudo' komutu ile düzenlenmelidir.
#
# Bu dosyayı doğrudan değiştirmek yerine /etc/sudoers.d/ dizinine yerel içerik eklemeyi düşünün.
#
# sudoers dosyasının nasıl yazılacağı hakkında detaylar için man sayfasına bakın.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Parola yanlış, lütfen tekrar deneyin"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Defaults Girdileri Türleri

Defaults girdileri, sudo komutunun genel davranışını belirleyen parametrelerdir. Bu girdilerin türleri aşağıdaki gibidir:

  • Defaults: Tüm kullanıcıları ve tüm hostları etkiler.
  • Defaults@Host_List: Belirli bir host üzerindeki tüm kullanıcıları etkiler.
  • Defaults:User_List: Belirli kullanıcıları etkiler.
  • Defaults!Cmnd_List: Belirli komutları etkiler.
  • Defaults>Runas_List: Belirli bir kullanıcı olarak çalıştırılan komutları etkiler.

Bu rehberde, ilk tür olan tüm kullanıcıları ve hostları etkileyen Defaults girdilerine odaklanacağız.

Defaults Girdilerinin Kullanımı

Defaults girdileri çeşitli parametre türlerini destekler:

  • Bayraklar (Flags): Boolean değerlerdir ve ‘!’ operatörü ile kapatılabilir.
  • Listeler: += (listeye ekleme) ve -= (listeden çıkarma) operatörleri ile manipüle edilebilir.
  • Değer Atamaları: = operatörü ile parametrelere değer atanabilir.

Örnek kullanım şekilleri:

bashKopyalaDefaults parameter
Defaults parameter=value
Defaults parameter -=value
Defaults parameter +=value
Defaults !parameter

1. Güvenli Bir PATH Ayarlayın

Sudo ile çalıştırılan her komut için kullanılan PATH, iki açıdan önemlidir:

  1. Sistem yöneticisi, sudo kullanıcılarının güvenli bir PATH ortam değişkenine sahip olmasını güvenmezse.
  2. “Root path” ve “user path” ayrımı yapmak için kullanılır; sadece exempt_group ile tanımlanan kullanıcılar bu ayardan etkilenmez.

Güvenli PATH ayarlamak için aşağıdaki satırı ekleyin:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Bu ayar, sudo ile çalıştırılan tüm komutların belirli dizinlerde aranmasını sağlar ve potansiyel güvenlik risklerini azaltır.

2. TTY Kullanıcı Giriş Oturumunda Sudo’yu Etkinleştirin

Sudo’nun gerçek bir TTY üzerinden çağrılmasını sağlamak, sudo’nun cron veya cgi-bin betikleri gibi yöntemlerle çağrılmasını engeller. Bu, güvenliği artırmak için önemli bir adımdır. Bunu yapmak için aşağıdaki satırı ekleyin:

Defaults requiretty

Bu ayar, sudo komutunun yalnızca gerçek terminal oturumlarında çalıştırılmasını zorunlu kılar.

3. Sudo Komutunu Pseudo-TTY Kullanarak Çalıştırın

Bazı durumlarda, saldırganlar sudo kullanarak kötü niyetli programlar (virüs veya kötü amaçlı yazılımlar gibi) çalıştırabilirler. Bu tür saldırılar, sudo komutu tarafından arka planda çalıştırılan bir süreç nedeniyle kullanıcının terminal cihazında kalabilir.

Bu tür senaryoları önlemek için sudo’nun diğer komutları yalnızca pseudo-pty kullanarak çalıştırmasını sağlayabilirsiniz. Bunun için use_pty parametresini etkinleştirin:

Defaults use_pty

Bu ayar, sudo komutlarının yalnızca pseudo-terminal (pty) üzerinden çalıştırılmasını sağlar ve güvenliği artırır.

4. Sudo Günlük Dosyası Oluşturun

Varsayılan olarak, sudo günlükleri syslog(3) aracılığıyla kaydedilir. Ancak, özel bir günlük dosyası belirtmek isterseniz, logfile parametresini kullanabilirsiniz:

Defaults logfile="/var/log/sudo.log"

Ayrıca, günlük dosyasına hostname ve dört basamaklı yılı eklemek için log_host ve log_year parametrelerini kullanabilirsiniz:

Defaults log_host, log_year, logfile="/var/log/sudo.log"

Örnek Özel Sudo Günlük Dosyası

$ cd /var/log/sudo-io/
$ ls
$ cd 00/00/01
$ ls
$ cat log

Bu komutlar, özel sudo günlük dosyasını görüntülemenizi sağlar.

5. Sudo Komut Giriş/Çıkışını Günlüğe Kaydedin

Sudo komutlarının tüm kullanıcı girişi ve çıkışlarını günlüğe kaydetmek, sistem güvenliğini izlemek açısından önemlidir. Bunu yapmak için log_input ve log_output parametrelerini etkinleştirin:

Defaults log_input, log_output

Bu ayar, sudo komutlarının pseudo-tty üzerinden çalıştırılmasını sağlar ve tüm kullanıcı girişlerini ve ekrana gönderilen çıktıları ayrı ayrı günlüğe kaydeder.

Varsayılan I/O günlük dizini /var/log/sudo-io‘dur. Farklı bir dizin belirtmek isterseniz, iolog_dir parametresini kullanabilirsiniz:

Defaults log_input, log_output, iolog_dir="/custom/log/directory"
$ cd /var/log/sudo-io/
$ ls
$ cd 00/00/01
$ ls
$ cat log

Bu komutlar, sudo komutlarının giriş ve çıkış günlüklerini görüntülemenizi sağlar.

6. Sudo Kullanıcılarına Ders Verin

Sudo komutunu kullanan kullanıcılara sistemdeki parola kullanımı hakkında bilgi vermek için lecture parametresini kullanabilirsiniz. Bu parametrenin üç olası değeri vardır:

  • always: Her zaman kullanıcıya ders verir.
  • once: Kullanıcı sudo komutunu ilk kez çalıştırdığında ders verir.
  • never: Kullanıcıya hiçbir zaman ders vermez.

Örneğin, her zaman ders vermek için:

Defaults lecture="always"

Ayrıca, özel bir ders dosyası belirlemek için lecture_file parametresini kullanabilirsiniz:

Defaults lecture_file="/path/to/file"

Bu dosyaya uygun bir mesaj yazarak kullanıcıya özel dersler verebilirsiniz.

7. Yanlış Sudo Parolası Girildiğinde Özel Mesaj Gösterin

Kullanıcı yanlış bir sudo parolası girdiğinde, komut satırında belirli bir mesaj görüntülenir. Varsayılan mesaj “sorry, try again” şeklindedir. Bu mesajı badpass_message parametresi ile değiştirebilirsiniz:

Defaults badpass_message="Parola yanlış, lütfen tekrar deneyin"

Bu sayede kullanıcıya daha anlaşılır veya özel bir mesaj gösterebilirsiniz.

8. Sudo Parola Deneme Sınırını Artırın

passwd_tries parametresi, bir kullanıcının parolayı girmeyi denediği maksimum sayıyı belirler. Varsayılan değer 3’tür. Bu sınırı artırmak için aşağıdaki satırı ekleyin:

Defaults passwd_tries=5

Ayrıca, parola zaman aşımını (varsayılan 5 dakika) passwd_timeout parametresi ile ayarlayabilirsiniz:

Defaults passwd_timeout=2

Bu, kullanıcının parolasını girmesi için 2 dakika zaman tanır.

9. Yanlış Parola Girişi Yapıldığında Sudo’nun Hakaret Etmesine İzin Verin

Kullanıcı yanlış bir parola girdiğinde, sudo terminalde hakaret içeren mesajlar gösterebilir. Bu, insults parametresi ile etkinleştirilir. Ancak, bu durum badpass_message parametresini otomatik olarak devre dışı bırakır:

Defaults insults

Bu ayar, kullanıcıyı yanlış parola girdiğinde eğlenceli veya esprili mesajlarla bilgilendirir.

10. Daha Fazla Sudo Yapılandırması Öğrenin

Sudo komutunun daha fazla yapılandırmasını öğrenmek için aşağıdaki konuları inceleyebilirsiniz:

  • su ve sudo Arasındaki Farklar: su komutu kullanıcı hesabını değiştirirken, sudo belirli komutları başka bir kullanıcı olarak çalıştırır.
  • Linux’te Sudo Nasıl Yapılandırılır: Detaylı adımlar ve ipuçları ile sudo komutunun nasıl yapılandırılacağını öğrenin.

Bu kaynaklar, sudo komutunu daha etkin ve güvenli bir şekilde kullanmanıza yardımcı olacaktır.

Bu yazıda, Linux’te sudo komutunun davranışını değiştirmek ve güvenliğini artırmak için kullanabileceğiniz on farklı sudoers yapılandırmasını inceledik. Bu ayarlar, sisteminizin güvenliğini sağlamanın yanı sıra, kullanıcıların sudo komutunu daha etkin ve kontrollü bir şekilde kullanmasını sağlar.

Kendi sudo yapılandırmalarınızı geliştirirken dikkat etmeniz gereken en önemli noktalardan biri, sudoers dosyasını doğrudan düzenlemek yerine visudo komutunu kullanmaktır. Bu, yapılandırma hatalarını önlemeye yardımcı olur ve sisteminizin kararlılığını korur.

Siz de Linux kullanıcılarına yönelik diğer faydalı sudo komut yapılandırmalarını veya ipuçlarını paylaşmak isterseniz, aşağıdaki yorum bölümünde görüşlerinizi bekliyoruz.

Ekstra İpuçları ve Püf Noktaları

Sudoers Dosyasını Güvenli Hale Getirme

  • Yedekleme Yapın: /etc/sudoers dosyasını düzenlemeden önce her zaman bir yedeğini alın.
  • Kısıtlı Yetkiler Verin: Kullanıcılara sadece ihtiyaç duydukları komutları çalıştırma izni verin.
  • Gruplar Kullanın: Benzer yetkilere sahip kullanıcıları gruplar altında toplamak, yönetimi kolaylaştırır.

Sudo Komutunu İzleme

  • Günlükleri İnceleyin: /var/log/sudo.log gibi günlük dosyalarını düzenli olarak kontrol edin.
  • Otomatik Bildirimler Ayarlayın: Belirli sudo aktiviteleri için e-posta bildirimleri ayarlayarak anında farkında olun.

Güvenlik İpuçları

  • Güçlü Parolalar Kullanın: Sudo erişimi olan kullanıcıların güçlü parolalar kullanmasını sağlayın.
  • İki Faktörlü Kimlik Doğrulama: Sudo erişiminde ek güvenlik katmanı olarak iki faktörlü kimlik doğrulamayı etkinleştirin.
  • Minimum Yetki İlkesi: Kullanıcılara sadece ihtiyaç duydukları yetkileri verin, gereksiz yetkilerden kaçının.

Performans ve Optimizasyon

  • Path Ayarlarını Optimize Edin: Sudo ile çalıştırılan komutların hızlı ve doğru bir şekilde bulunmasını sağlamak için PATH ayarlarınızı optimize edin.
  • Günlük Düzeyini Ayarlayın: Sudo günlüklerini gereksiz yere doldurmamak için uygun günlük düzeyini seçin.

Bu ek ipuçları ve püf noktaları, sudo komutunu daha etkin ve güvenli bir şekilde kullanmanıza yardımcı olacaktır. Linux sistem yönetiminde güvenlik her zaman ön planda tutulmalıdır ve sudo yapılandırmaları bu güvenliğin temel taşlarından biridir.

Sıkça Sorulan Sorular (SSS)

1. Sudo ve Su Arasındaki Fark Nedir?

  • Su (Switch User): Kullanıcının oturumunu bir başka kullanıcıya (genellikle root) değiştirmesini sağlar.
  • Sudo (Superuser Do): Kullanıcının belirli komutları başka bir kullanıcı olarak (genellikle root) çalıştırmasını sağlar.

2. Neden Sudo Kullanmalıyım?

Sudo kullanmak, güvenliği artırır çünkü tüm kullanıcıların root parolasını bilmesi gerekmez. Ayrıca, hangi kullanıcıların hangi komutları çalıştırabileceğini detaylı bir şekilde kontrol etmenizi sağlar.

3. Sudoers Dosyasını Doğru Düzenlemek İçin Ne Yapmalıyım?

Sudoers dosyasını düzenlemek için her zaman visudo komutunu kullanın. Bu komut, dosyanın doğru sözdizimine sahip olmasını sağlar ve hataları önler.

4. Sudo Komutları Hangi Dosyaları Günlükler?

Varsayılan olarak, sudo komutları syslog aracılığıyla /var/log/sudo.log dosyasına günlüklenir. Ek olarak, log_input ve log_output parametreleri etkinleştirildiğinde, kullanıcı giriş ve çıkışları ayrı ayrı günlüklenir.

5. Sudo Komutları İçin Ek Güvenlik Önlemleri Nelerdir?

  • İki Faktörlü Kimlik Doğrulama: Ek bir güvenlik katmanı sağlar.
  • IP Kısıtlamaları: Belirli IP adreslerinden gelen sudo isteklerini kısıtlayabilirsiniz.
  • Komut Kısıtlamaları: Kullanıcıların çalıştırabileceği komutları sınırlandırarak riski azaltabilirsiniz.

Son Söz

Sudo, Linux sistemlerinde kullanıcı yetkilendirmesi ve güvenlik yönetimi açısından kritik bir araçtır. Doğru yapılandırıldığında, sistem yöneticilerine büyük esneklik ve kontrol sağlar. Bu yazıda ele aldığımız on farklı sudoers yapılandırması, sudo komutunun güvenliğini ve etkinliğini artırmanıza yardımcı olacaktır.

Linux sistem yönetiminde güvenliği ön planda tutarak, sudo yapılandırmalarınızı dikkatlice yapın ve düzenli olarak gözden geçirin. Böylece sisteminizin güvenliğini sağlamış ve kullanıcıların ihtiyaç duyduğu yetkilere kontrollü bir şekilde erişmelerini sağlamış olursunuz.

Herhangi bir sorunuz veya eklemek istediğiniz bir konu varsa, lütfen aşağıdaki yorum bölümünde paylaşın. Linux topluluğunun gelişmesine katkıda bulunmak için paylaşımlarınızı bekliyoruz!

Ayrıca şunları da beğenebilirsiniz

Yorum Bırakın

* Bu formu kullanarak verilerinizin bu web sitesi tarafından saklanmasını ve işlenmesini kabul etmiş olursunuz.

Bu web sitesi deneyiminizi iyileştirmek için çerezler kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz devre dışı bırakabilirsiniz. Kabul Et Devamı