Linux'ta 'sudo'yu Ayarlamak için 10 Faydalı Sudoers Yapılandırması


Linux ve diğer Unix benzeri işletim sistemlerinde yalnızca kök kullanıcı tüm komutları çalıştırabilir ve sistem üzerinde yükleme ve güncelleme, paketleri kaldırma, kullanıcı ve grup oluşturma, önemli sistemi değiştirme gibi belirli kritik işlemleri gerçekleştirebilir. yapılandırma dosyaları vb.

Ancak root kullanıcı rolünü üstlenen bir sistem yöneticisi, sudo komutu ve birkaç yapılandırma yardımıyla diğer normal sistem kullanıcılarının bazı komutları çalıştırmasına ve yukarıda sayılanlar da dahil olmak üzere çok sayıda hayati sistem işlemini gerçekleştirmesine izin verebilir.

Alternatif olarak sistem yöneticisi root kullanıcı şifresini paylaşabilir (bu tavsiye edilen bir yöntem değildir), böylece normal sistem kullanıcıları su komutu aracılığıyla root kullanıcı hesabına erişebilir.

sudo, izin verilen bir kullanıcının, güvenlik politikasında belirtildiği şekilde root (veya başka bir kullanıcı) olarak bir komutu yürütmesine olanak tanır:

  1. /etc/sudoers'u okur ve ayrıştırır, çağıran kullanıcıyı ve izinlerini arar,
  2. daha sonra çağıran kullanıcıdan bir şifre ister (normalde kullanıcının şifresi, ancak bu hedef kullanıcının şifresi de olabilir. Veya NOPASSWD etiketi ile atlanabilir),
  3. bundan sonra sudo, hedef kullanıcıya geçmek için setuid()'i çağırdığı bir alt süreç oluşturur.
  4. daha sonra bir kabuğu veya yukarıdaki alt süreçte argüman olarak verilen komutu çalıştırır.

Aşağıda, Varsayılanlar girişlerini kullanarak sudo komutunun davranışını değiştirmek için kullanılan on /etc/sudoers dosya yapılandırması bulunmaktadır.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
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="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Temerrüt Giriş Türleri

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Bu kılavuzun kapsamı açısından, aşağıdaki formlarda ilk tür Varsayılanlar'ı sıfırlayacağız. Parametreler bayraklar, tamsayı değerleri, dizeler veya listeler olabilir.

Bayrakların dolaylı olarak boolean olduğunu ve '!' operatörü kullanılarak kapatılabileceğini ve listelerin iki ek atama operatörüne sahip olduğunu unutmayın: += (listeye ekle) ve -= (listeden kaldır).

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

1. Güvenli bir YOL ayarlayın

Bu, sudo ile çalıştırılan her komut için kullanılan yoldur ve iki önemi vardır:

  1. Bir sistem yöneticisi sudo kullanıcılarının güvenli bir PATH ortam değişkenine sahip olduğuna güvenmediğinde kullanılır
  2. "Kök yol" ve "kullanıcı yolu"nu ayırmak için yalnızca exempt_group tarafından tanımlanan kullanıcılar bu ayardan etkilenmez.

Ayarlamak için şu satırı ekleyin:

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

2. TTY Kullanıcı Giriş Oturumunda sudo'yu etkinleştirin

Sudo'nun gerçek bir tty'den çağrılmasını sağlamak, ancak cron veya cgi-bin komut dosyaları gibi yöntemlerle çağrılmasını sağlamak için şu satırı ekleyin:

Defaults  requiretty   

3. Bir pty kullanarak Sudo Komutunu çalıştırın

Saldırganlar birkaç kez sudo kullanarak kötü amaçlı bir program (virüs veya kötü amaçlı yazılım gibi) çalıştırabilir; bu da ana programın yürütülmesi bittiğinde bile kullanıcının terminal cihazında kalan bir arka plan işleminin çatallanmasına neden olur.

Böyle bir senaryoyu önlemek için, G/Ç günlüğü açık olsun veya olmasın, sudo'yu diğer komutları yalnızca psuedo-pty'den çalıştıracak şekilde use_pty parametresini kullanarak yapılandırabilirsiniz. şöyle:

Defaults  use_pty

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

Varsayılan olarak Sudo, syslog(3) aracılığıyla günlüğe kaydedilir. Ancak özel bir günlük dosyası belirtmek için logfile parametresini şu şekilde kullanın:

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

Ana bilgisayar adını ve dört haneli yılı özel günlük dosyasına kaydetmek için log_host ve log_year parametrelerini sırasıyla aşağıdaki gibi kullanın:

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

Aşağıda özel bir sudo günlük dosyası örneği verilmiştir:

5. Sudo Komut Girişini/Çıkışını Günlükle

log_input ve log_output parametreleri, sudo'nun sözde tty'de bir komut çalıştırmasını ve ekrana gönderilen tüm kullanıcı girişlerini ve tüm çıktıları alıcı olarak günlüğe kaydetmesini sağlar.

Varsayılan G/Ç günlük dizini /var/log/sudo-io'dur ve bir oturum sıra numarası varsa bu dizinde saklanır. iolog_dir parametresi aracılığıyla özel bir dizin belirtebilirsiniz.

Defaults   log_input, log_output

Her iki basamağın yeni bir dizin oluşturmak için kullanıldığı, 000001 gibi monoton olarak artan bir 36 tabanlı sıra numarasına genişleyen %{seq gibi bazı kaçış dizileri desteklenir; ör. 00/00/01 aşağıdaki örnekte olduğu gibi:

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

Cat komutunu kullanarak bu dizindeki dosyaların geri kalanını görüntüleyebilirsiniz.

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

Sudo kullanıcılarına sistemdeki şifre kullanımı hakkında ders vermek için aşağıdaki lecture parametresini kullanın.

3 olası değeri vardır:

  1. her zaman – her zaman bir kullanıcıya ders verin.
  2. bir kez - kullanıcıya yalnızca sudo komutunu ilk kez çalıştırdıklarında ders verin (bu, hiçbir değer belirtilmediğinde kullanılır)
  3. asla – asla kullanıcıya ders vermeyin.
 
Defaults  lecture="always"

Ayrıca, lecture_file parametresini kullanarak özel bir ders dosyası ayarlayabilir ve dosyaya uygun mesajı yazabilirsiniz:

Defaults  lecture_file="/path/to/file"

7. Yanlış Sudo Şifresini Girdiğinizde Özel Mesajı Göster

Kullanıcı yanlış şifre girdiğinde komut satırında belirli bir mesaj görüntülenir. Varsayılan mesaj "Üzgünüm, tekrar deneyin" şeklindedir, badpass_message parametresini kullanarak mesajı aşağıdaki gibi değiştirebilirsiniz:

Defaults  badpass_message="Password is wrong, please try again"

8. Sudo Şifre Deneme Sınırını Artırın

passwd_tries parametresi, kullanıcının kaç kez şifre girmeyi deneyebileceğini belirtmek için kullanılır.

Varsayılan değer 3'tür:

Defaults   passwd_tries=5 

passwd_timeout parametresini kullanarak bir şifre zaman aşımı ayarlamak için (varsayılan 5 dakikadır) aşağıdaki satırı ekleyin:

Defaults   passwd_timeout=2

9. Yanlış Şifre Girdiğinizde Sudo'nun Size Hakaret Etmesine İzin Verin

Kullanıcının yanlış şifre girmesi durumunda sudo, hakaret parametresiyle terminalde hakaretleri görüntüleyecektir. Bu, badpass_message parametresini otomatik olarak kapatacaktır.

Defaults  insults 

Devamını Okuyun: Yanlış Şifre Girdiğinizde Sudo'nun Size Hakaret Etmesine İzin Verin

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

Ayrıca, sudo komut yapılandırmaları hakkında daha fazla bilgi edinmek için şu konuları okuyabilirsiniz: Su ve sudo Arasındaki Farklar ve Linux'ta Sudo Nasıl Yapılandırılır.

Bu kadar! Aşağıdaki yorum bölümü aracılığıyla diğer yararlı sudo komut yapılandırmalarını veya püf noktalarını ve ipuçlarını Linux kullanıcılarıyla paylaşabilirsiniz.