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:
- /etc/sudoers'u okur ve ayrıştırır, çağıran kullanıcıyı ve izinlerini arar,
- 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),
- bundan sonra sudo, hedef kullanıcıya geçmek için setuid()'i çağırdığı bir alt süreç oluşturur.
- 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:
- 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
- "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:
- her zaman – her zaman bir kullanıcıya ders verin.
- 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)
- 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.