23 CentOS Sunucu Güçlendirme Güvenlik İpuçları - Bölüm 2


CentOS sunucusunun Güvenliğinin Sağlanması ve Güçlendirilmesi ile ilgili önceki eğitime devam ederek, bu makalede, aşağıdaki kontrol listesinde sunulacak diğer güvenlik ipuçlarını tartışacağız.

Gereksinimler

  1. 20 CentOS Sunucu Güçlendirme Güvenlik İpuçları – Bölüm 1

21. Yararsız SUID ve SGID Komutlarını Devre Dışı Bırakın

İkili programlarda setuid ve setgid bitleri ayarlanmışsa, bu komutlar görevleri diğer kullanıcı veya grup haklarıyla (örneğin, kök ayrıcalıkları) çalıştırabilir. ciddi güvenlik sorunlarını ortaya çıkarabilir.

Çoğu zaman, arabellek taşması saldırıları, bu tür yürütülebilir ikili dosyalardan, kök yetkili kullanıcının haklarıyla yetkisiz kod çalıştırmak için yararlanabilir.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

setuid bitinin ayarını kaldırmak için aşağıdaki komutu yürütün:

chmod u-s /path/to/binary_file

Setgid bitini ayarlamak için aşağıdaki komutu çalıştırın:

chmod g-s /path/to/binary_file

22. Sahipsiz Dosya ve Dizinleri Kontrol Edin

Geçerli bir hesaba ait olmayan dosyalar veya dizinler silinmeli veya bir kullanıcı veya gruptan izinlerle atanmalıdır.

Kullanıcı ve grup içermeyen dosya veya dizinleri listelemek için aşağıdaki bulma komutunu verin.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Dünyaca Yazılabilir Dosyaları Listeleyin

Herkesin yazabileceği bir dosyayı sistemde tutmak, herkesin bunları değiştirebilmesi nedeniyle tehlikeli olabilir. Her zaman herkes tarafından yazılabilen Sembolik Bağlantılar hariç, sözcükle yazılabilen dosyaları görüntülemek için aşağıdaki komutu çalıştırın.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Güçlü Şifreler Oluşturun

En az sekiz karakterden oluşan bir şifre oluşturun. Şifre rakam, özel karakter ve büyük harf içermelidir. /dev/urandom dosyasından 128 bitlik bir şifre oluşturmak için pwmake'yi kullanın.

pwmake 128

25. Güçlü Şifre Politikası Uygulayın

/etc/pam.d/passwd dosyasına aşağıdaki satırı ekleyerek sistemi güçlü şifreler kullanmaya zorlayın.

password required pam_pwquality.so retry=3

Yukarıdaki satırın eklenmesiyle, girilen şifre, abcd gibi monoton bir dizide en fazla 3 karakter ve gibi 3'ten fazla aynı ardışık karakter içeremez. 1111.

Kullanıcıları, tüm karakter sınıfları da dahil olmak üzere minimum 8 karakter uzunluğunda bir şifre kullanmaya zorlamak için, karakter dizilerinin ve ardışık karakterlerin güç kontrolünü yapmak için /etc/security dosyasına aşağıdaki satırları ekleyin /pwquality.conf dosyası.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Şifre Eskitme Kullanın

Kullanıcı parolasının eskimesi için chage komutu kullanılabilir. Bir kullanıcının şifresinin geçerliliğinin 45 gün içinde sona ermesini ayarlamak için aşağıdaki komutu kullanın:

chage -M 45 username

Parolanın son kullanma süresini devre dışı bırakmak için şu komutu kullanın:

chage -M -1 username

Aşağıdaki komutu çalıştırarak parola süresinin hemen dolmasını zorunlu kılın (kullanıcı bir sonraki oturum açma işleminde parolayı değiştirmelidir):

chage -d 0 username

27. Hesapları Kilitle

Kullanıcı hesapları passwd veya usermod komutu çalıştırılarak kilitlenebilir:

passwd -l username
usermod -L username

Hesapların kilidini açmak için passwd komutu için -u seçeneğini ve usermod için -U seçeneğini kullanın.

28. Hesapların Kabuk Erişimini Önleyin

Bir sistem hesabının (sıradan hesap veya hizmet hesabı) bir bash kabuğuna erişim kazanmasını önlemek için, kök kabuğunu /usr/sbin/nologin veya /bin/false olarak değiştirin. /etc/passwd dosyasını aşağıdaki komutu vererek açın:

usermod -s /bin/false username

Yeni bir kullanıcı oluştururken kabuğu değiştirmek için aşağıdaki komutu verin:

useradd -s /usr/sbin/nologin username

29. Sanal Kullanıcı Konsolunu vlock ile kilitleyin

vlock, Linux konsolunda birden fazla oturumu kilitlemek için kullanılan bir programdır. Programı yükleyin ve aşağıdaki komutları çalıştırarak terminal oturumunuzu kilitlemeye başlayın:

yum install vlock
vlock

30. Hesapları ve Kimlik Doğrulamayı Yönetmek için Merkezi Bir Sistem Kullanın

Merkezi bir kimlik doğrulama sistemi kullanmak, hesap yönetimini ve kontrolünü büyük ölçüde basitleştirebilir. Bu tür hesap yönetimi sunabilen hizmetler IPA Sunucusu, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS veya Winbind'dir.

Bu hizmetlerden bazıları varsayılan olarak Kerberos gibi şifreleme protokolleri ve simetrik anahtar şifrelemeyle yüksek düzeyde güvenlik altına alınmıştır.

31. USB Ortamının Salt Okunur Montajını Zorla

blockdev yardımcı programını kullanarak tüm çıkarılabilir ortamların salt okunur olarak eklenmesini zorlayabilirsiniz. Örneğin, /etc/udev/rules.d/ dizininde 80-readonly-usb.rules adında yeni bir udev yapılandırma dosyası oluşturun. aşağıdaki içerikle:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Daha sonra kuralı aşağıdaki komutla uygulayın:

udevadm control -reload

32. TTY aracılığıyla Root Erişimini Devre Dışı Bırakma

Kök hesabın tüm konsol aygıtları (TTY) aracılığıyla sisteme oturum açmasını önlemek için, root olarak aşağıdaki terminal komut istemini yazarak securetty dosyasının içeriğini silin.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Bu kuralın SSH oturum açma oturumları için geçerli olmadığını unutmayın
SSH yoluyla root girişini önlemek için /etc/ssh/sshd_config dosyasını düzenleyin ve aşağıdaki satırı ekleyin:

PermitRootLogin no

33. Sistem İzinlerini Genişletmek için POSIX ACL'lerini kullanın

Erişim Kontrol Listeleri tek bir kullanıcı veya gruptan daha fazlası için erişim haklarını tanımlayabilir ve programlar, işlemler, dosyalar ve dizinler için hakları belirtebilir. Bir dizinde ACL'yi ayarlarsanız, onun alt öğeleri aynı hakları otomatik olarak devralır.

Örneğin,

setfacl -m u:user:rw file
getfacl file

34. SELinux'u Zorlama Modunda Kurun

Linux çekirdeğindeki SELinux geliştirmesi, Zorunlu Erişim Denetimi (MAC) politikasını uygulayarak kullanıcıların tüm kullanıcılar, programlar, işlemler, dosyalar ve cihazlar için ayrıntılı izinler sağlayan bir güvenlik politikası tanımlamasına olanak tanır.

Çekirdeğin erişim kontrolü kararları, kimliği doğrulanmış kullanıcı kimliğine değil, güvenlikle ilgili tüm içeriğe dayanmaktadır.

Selinux durumunu almak ve politikayı uygulamak için aşağıdaki komutları çalıştırın:

getenforce
setenforce 1
sestatus

35. SELinux Ek Yardımcı Programlarını Kurun

SELinux'u çalıştırmak için ek Python yardımcı programları sağlayan policycoreutils-python paketini yükleyin: audit2allow, audit2why, chcat ve yönet.

Tüm boole değerlerini kısa bir açıklamayla birlikte görüntülemek için aşağıdaki komutu kullanın:

semanage boolean -l

Örneğin, httpd_enable_ftp_server'ın değerini görüntülemek ve ayarlamak için aşağıdaki komutu çalıştırın:

getsebool httpd_enable_ftp_server

Bir boole değerinin yeniden başlatmalarda kalıcı olmasını sağlamak için, aşağıdaki örnekte gösterildiği gibi setsebool olarak -P seçeneğini belirtin:

setsebool -P httpd_enable_ftp_server on

36. Merkezi Günlük Sunucusunu Kullanın

rsyslog arka plan programını hassas yardımcı program günlük iletilerini merkezi bir günlük sunucusuna gönderecek şekilde yapılandırın. Ayrıca logwatch yardımcı programının yardımıyla günlük dosyalarını izleyin.

Günlük mesajlarının uzak bir sunucuya gönderilmesi, sistemin güvenliği ihlal edildiğinde, kötü niyetli kullanıcıların etkinliklerini tamamen gizleyememelerini ve uzak günlük dosyalarında her zaman iz bırakmalarını sağlar.

37. Süreç Muhasebesini Etkinleştirin

Psacct yardımcı programını yükleyerek süreç hesaplamasını etkinleştirin ve sistem hesaplama dosyasında kayıtlı olduğu şekliyle önceden yürütülen komutlar hakkındaki bilgileri görüntülemek için lastcomm komutunu ve daha önce yürütülen komutlar hakkındaki bilgileri kaydedildiği şekliyle özetlemek için sa komutunu kullanın. sistem muhasebe dosyasında.

38. Sağlamlaştırma /etc/sysctl.conf

Sistemi korumak için aşağıdaki çekirdek parametreleri kurallarını kullanın:

Kaynak Yönlendirmeyi Devre Dışı Bırakma

net.ipv4.conf.all.accept_source_route=0

IPv4 iletmeyi devre dışı bırak

ipv4.conf.all.forwarding=0

IPv6'yı devre dışı bırak

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Özel olarak gerekmedikçe ICMP yönlendirmeli paketlerin kabulünü ve gönderilmesini devre dışı bırakın.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Ters Yol İletmeyi Devre Dışı Bırak

net.ipv4.conf.all.rp_filter=2

Tüm ICMP yankı isteklerini yoksay (etkinleştirmek için 1'e ayarlayın)

net.ipv4.icmp_echo_ignore_all = 0

39. Korumasız Genel Ağlar Üzerinden Tesisinize Erişmek için VPN Hizmetlerini Kullanın

Operatörlerin İnternet üzerinden LAN tesislerine uzaktan erişmeleri için her zaman VPN hizmetlerini kullanın. Bu tür hizmetler, OpenVPN gibi ücretsiz bir açık kaynak çözümü veya Cisco VPN gibi özel bir çözüm (Epel Repositories tarafından sağlanan vpnc komut satırı yardımcı programını yükleyin) kullanılarak yapılandırılabilir.

40. Harici Sistem Taraması Yapın

Aşağıdakiler gibi belirli araçları kullanarak sistemi LAN'ınız üzerinden uzak noktalardan tarayarak sistem güvenliğinizi güvenlik açıklarına karşı değerlendirin:

  1. Nmap – ağ tarayıcısı 29 Nmap Komutu Örnekleri
  2. Nessus – güvenlik tarayıcısı
  3. OpenVAS – güvenlik açıklarını taramak ve kapsamlı güvenlik açığı yönetimi için kullanılır.
  4. Nikto – mükemmel bir ortak ağ geçidi arayüzü (CGI) komut dosyası tarayıcısı Linux'ta Web Tarama Güvenlik Açığı

41. Sistemi Dahili Olarak Koruyun

Virüslere, rootkit'lere ve kötü amaçlı yazılımlara karşı dahili sistem korumasını kullanın ve iyi bir uygulama olarak, yetkisiz etkinlikleri (DDOS saldırıları, bağlantı noktası taramaları) tespit edebilen izinsiz giriş tespit sistemleri kurun, örneğin:

  1. AIDE – Gelişmiş İzinsiz Giriş Tespit Ortamı – http://aide.sourceforge.net/
  2. ClamAV – Antivirüs Tarayıcı https://www.clamav.net
  3. Rkhunter – Rootkit Tarayıcı
  4. Lynis – Linux için Güvenlik Denetim ve Tarama Aracı
  5. Tripwire – Güvenlik ve Veri Bütünlüğü http://www.tripwire.com/
  6. Fail2Ban – İzinsiz Giriş Ağı Önleme
  7. OSSEC – (HIDS) Ana Bilgisayar Tabanlı Saldırı Tespit Sistemi http://ossec.github.io/
  8. Mod_Security – Kaba Kuvvet veya DDoS Saldırılarını Koruyun

42. Kullanıcı Ortamı Değişkenlerini Değiştirin

Aşağıdaki komutu vererek komutların yürütülmesine tarih ve saat biçimini ekleyin:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Her komut yazıldığında (oturum kapatmak yerine) HISTFILE dosyasını anında kaydetmeye zorlayın:

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Zaman aşımı oturumunu sınırlayın. Boşta kalma süresi boyunca hiçbir faaliyet gerçekleştirilmediğinde kabuğu otomatik olarak yırtın. SSH oturumlarının bağlantısını otomatik olarak kesmek çok kullanışlıdır.

echo ‘TMOUT=120’ >> .bashrc

Aşağıdakileri yürüterek tüm kuralları uygulayın:

source .bashrc

43. Verileri Yedekle

Sistem arızası durumunda sisteminizin bir kopyasını tercihen tesis dışında saklamak için tar, cat, rsync, scp, LVM anlık görüntüleri vb. gibi yedekleme yardımcı programlarını kullanın.

Sistemin güvenliği ihlal edilirse önceki yedeklemelerden veri geri yükleme işlemi gerçekleştirebilirsiniz.

Son olarak sisteminizi güvende tutmak için ne kadar güvenlik önlemi ve karşı önlem alırsanız alın, makineniz fişe takılı ve açık olduğu sürece asla %100 tamamen güvende olamayacağınızı unutmayın.