Giriş
Ek düzeyde sunucu güvenliği sağlamak için şunları kullanabilirsiniz:
Eğitim
Bu yöntem sadece ufs dosya sistemi için uygundur; bu örnekte sırasıyla ana sistemde zfs, hapishanede ufs kullanılacaktır. İlk adım çekirdeği yeniden oluşturmaktır; FreeBSD'yi kurarken kaynak kodunu yükleyin.
Sistem kurulduktan sonra dosyayı düzenleyin:
/usr/src/sys/amd64/conf/GENERIC
Bu dosyaya yalnızca bir satır eklemeniz gerekir:
options MAC_MLS
mls/high etiketi, mls/low etiketine baskın konumda olacak, mls/low etiketiyle açılacak uygulamalar, mls/high etiketine sahip dosyalara erişemeyecektir. FreeBSD sistemindeki mevcut tüm etiketler hakkında daha fazla ayrıntıyı burada bulabilirsiniz.
Daha sonra /usr/src dizinine gidin:
cd /usr/src
Çekirdeği oluşturmaya başlamak için şunu çalıştırın (j tuşunda sistemdeki çekirdek sayısını belirtin):
make -j 4 buildkernel KERNCONF=GENERIC
Çekirdek derlendikten sonra kurulması gerekir:
make installkernel KERNCONF=GENERIC
Çekirdeği kurduktan sonra, sistemi yeniden başlatmak için acele etmeyin, çünkü kullanıcıları daha önce yapılandırdıktan sonra oturum açma sınıfına aktarmak gerekir. /etc/login.conf dosyasını düzenleyin, bu dosyada varsayılan giriş sınıfını düzenlemeniz ve forma getirmeniz gerekir:
default:
:passwd_format=sha512:
:copyright=/etc/COPYRIGHT:
:welcome=/etc/motd:
:setenv=MAIL=/var/mail/$,BLOCKSIZE=K:
:path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:
:nologin=/var/run/nologin:
:cputime=unlimited:
:datasize=unlimited:
:stacksize=unlimited:
:memorylocked=64K:
:memoryuse=unlimited:
:filesize=unlimited:
:coredumpsize=unlimited:
:openfiles=unlimited:
:maxproc=unlimited:
:sbsize=unlimited:
:vmemoryuse=unlimited:
:swapuse=unlimited:
:pseudoterminals=unlimited:
:kqueues=unlimited:
:umtxp=unlimited:
:priority=0:
:ignoretime@:
:umask=022:
:label=mls/equal:
:label=mls/equal satırı, bu sınıfın üyesi olan kullanıcıların herhangi bir etiketle (mls/low, mls/high) işaretlenmiş dosyalara erişmesine olanak tanır. Bu manipülasyonlardan sonra, veritabanını yeniden oluşturmanız ve kök kullanıcıyı (ve buna ihtiyaç duyanları) bu oturum açma sınıfına yerleştirmeniz gerekir:
cap_mkdb /etc/login.conf
pw usermod root -L default
Politikanın yalnızca dosyalara uygulanabilmesi için /etc/mac.conf dosyasını, içinde yalnızca bir satır bırakarak düzenlemeniz gerekir:
default_labels file ?mls
Ayrıca otomatik çalıştırmaya mac_mls.ko modülünü de eklemeniz gerekir:
echo 'mac_mls_load="YES"' >> /boot/loader.conf
Bundan sonra sistemi güvenle yeniden başlatabilirsiniz. Nasıl oluşturulurum
newfs -O 2 -b 64kb /dev/ada1
tunefs -l enable /dev/ada1
Dosya sistemini oluşturup çoklu etiketi ekledikten sonra, sabit sürücüyü /etc/fstab dizinine eklemeniz, satırı bu dosyaya eklemeniz gerekir:
/dev/ada1 /jail ufs rw 0 1
Mountpoint'te, sabit sürücüyü bağlayacağınız dizini belirtin; Pass'ta, 1'i belirttiğinizden emin olun (bu sabit sürücünün hangi sırayla kontrol edileceği) - ufs dosya sistemi ani elektrik kesintilerine karşı duyarlı olduğundan bu gereklidir. . Bu adımlardan sonra diski bağlayın:
mount /dev/ada1 /jail
Bu dizine jail'i yükleyin. Hapishane çalıştırıldıktan sonra, ana sistemdeki kullanıcılarla ve /etc/login.conf, /etc/mac.conf dosyalarıyla aynı manipülasyonları yapmanız gerekir.
Ayar
Gerekli etiketleri kurmadan önce gerekli tüm paketleri kurmanızı öneririm; benim durumumda etiketler şu paketler dikkate alınarak ayarlanacaktır:
mod_php73-7.3.4_1 PHP Scripting Language
php73-7.3.4_1 PHP Scripting Language
php73-ctype-7.3.4_1 The ctype shared extension for php
php73-curl-7.3.4_1 The curl shared extension for php
php73-dom-7.3.4_1 The dom shared extension for php
php73-extensions-1.0 "meta-port" to install PHP extensions
php73-filter-7.3.4_1 The filter shared extension for php
php73-gd-7.3.4_1 The gd shared extension for php
php73-gettext-7.3.4_1 The gettext shared extension for php
php73-hash-7.3.4_1 The hash shared extension for php
php73-iconv-7.3.4_1 The iconv shared extension for php
php73-json-7.3.4_1 The json shared extension for php
php73-mysqli-7.3.4_1 The mysqli shared extension for php
php73-opcache-7.3.4_1 The opcache shared extension for php
php73-openssl-7.3.4_1 The openssl shared extension for php
php73-pdo-7.3.4_1 The pdo shared extension for php
php73-pdo_sqlite-7.3.4_1 The pdo_sqlite shared extension for php
php73-phar-7.3.4_1 The phar shared extension for php
php73-posix-7.3.4_1 The posix shared extension for php
php73-session-7.3.4_1 The session shared extension for php
php73-simplexml-7.3.4_1 The simplexml shared extension for php
php73-sqlite3-7.3.4_1 The sqlite3 shared extension for php
php73-tokenizer-7.3.4_1 The tokenizer shared extension for php
php73-xml-7.3.4_1 The xml shared extension for php
php73-xmlreader-7.3.4_1 The xmlreader shared extension for php
php73-xmlrpc-7.3.4_1 The xmlrpc shared extension for php
php73-xmlwriter-7.3.4_1 The xmlwriter shared extension for php
php73-xsl-7.3.4_1 The xsl shared extension for php
php73-zip-7.3.4_1 The zip shared extension for php
php73-zlib-7.3.4_1 The zlib shared extension for php
apache24-2.4.39
Bu örnekte etiketler bu paketlerin bağımlılıkları dikkate alınarak ayarlanacaktır. Elbette bunu daha basit bir şekilde yapabilirsiniz: /usr/local/lib klasörü ve bu dizinde bulunan dosyalar için mls/low etiketlerini ayarlayın ve ardından yüklenen paketlere (örneğin, php için ek uzantılar) erişebileceksiniz. Bu dizindeki kütüphaneler, ancak bana sadece gerekli olan dosyalara erişim sağlamak daha iyi görünüyor. Hapishaneyi durdurun ve tüm dosyalara mls/yüksek etiketleri ayarlayın:
setfmac -R mls/high /jail
İşaretleri ayarlarken setfmac sabit bağlantılarla karşılaşırsa işlem durdurulacaktır; örneğimde aşağıdaki dizinlerdeki sabit bağlantıları sildim:
/var/db/etcupdate/current/
/var/db/etcupdate/current/etc
/var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.ISO8859-15
/var/db/etcupdate/current/usr/share/man/en.UTF-8
/var/db/etcupdate/current/usr/share/nls
/etc/ssl
/usr/local/etc
/usr/local/etc/fonts/conf.d
/usr/local/openssl
Etiketler ayarlandıktan sonra apache için mls/low etiketlerini ayarlamanız gerekir, yapmanız gereken ilk şey apache'yi başlatmak için hangi dosyaların gerekli olduğunu bulmaktır:
ldd /usr/local/sbin/httpd
Bu komutu çalıştırdıktan sonra bağımlılıklar ekrana gelecektir ancak bu dosyaların bulunduğu dizinler mls/high etiketine sahip olduğundan bu dosyalar üzerinde gerekli etiketleri ayarlamak yeterli olmayacaktır, dolayısıyla bu dizinlerin de etiketlenmesi gerekir. ml/düşük. Apache, başlatıldığında onu çalıştırmak için gerekli dosyaların çıktısını da alacaktır ve php için bu bağımlılıklar httpd-error.log günlüğünde bulunabilir.
setfmac mls/low /
setfmac mls/low /usr/local/lib/libpcre.so.1
setfmac mls/low /usr/local/lib/libaprutil-1.so.0
setfmac mls/low /usr/local/lib/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/libgdbm.so.6
setfmac mls/low /usr/local/lib/libexpat.so.1
setfmac mls/low /usr/local/lib/libapr-1.so.0
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /lib/libc.so.7
setfmac mls/low /usr/local/lib/libintl.so.8
setfmac mls/low /var
setfmac mls/low /var/run
setfmac mls/low /var/log
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac mls/low /var/run/httpd.pid
setfmac mls/low /lib
setfmac mls/low /lib/libcrypt.so.5
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0
setfmac mls/low /usr/local/lib/db5/libdb-5.3.so.0.0.0
setfmac mls/low /usr/local/lib/db5
setfmac mls/low /usr/local/lib
setfmac mls/low /libexec
setfmac mls/low /libexec/ld-elf.so.1
setfmac mls/low /dev
setfmac mls/low /dev/random
setfmac mls/low /usr/local/libexec
setfmac mls/low /usr/local/libexec/apache24
setfmac mls/low /usr/local/libexec/apache24/*
setfmac mls/low /etc/pwd.db
setfmac mls/low /etc/passwd
setfmac mls/low /etc/group
setfmac mls/low /etc/
setfmac mls/low /usr/local/etc
setfmac -R mls/low /usr/local/etc/apache24
setfmac mls/low /usr
setfmac mls/low /usr/local
setfmac mls/low /usr/local/sbin
setfmac mls/low /usr/local/sbin/*
setfmac -R mls/low /usr/local/etc/rc.d/
setfmac mls/low /usr/local/sbin/htcacheclean
setfmac mls/low /var/log/httpd-access.log
setfmac mls/low /var/log/httpd-error.log
setfmac -R mls/low /usr/local/www
setfmac mls/low /usr/lib
setfmac mls/low /tmp
setfmac -R mls/low /usr/local/lib/php
setfmac -R mls/low /usr/local/etc/php
setfmac mls/low /usr/local/etc/php.conf
setfmac mls/low /lib/libelf.so.2
setfmac mls/low /lib/libm.so.5
setfmac mls/low /usr/local/lib/libxml2.so.2
setfmac mls/low /lib/libz.so.6
setfmac mls/low /usr/lib/liblzma.so.5
setfmac mls/low /usr/local/lib/libiconv.so.2
setfmac mls/low /usr/lib/librt.so.1
setfmac mls/low /lib/libthr.so.3
setfmac mls/low /usr/local/lib/libpng16.so.16
setfmac mls/low /usr/lib/libbz2.so.4
setfmac mls/low /usr/local/lib/libargon2.so.0
setfmac mls/low /usr/local/lib/libpcre2-8.so.0
setfmac mls/low /usr/local/lib/libsqlite3.so.0
setfmac mls/low /usr/local/lib/libgd.so.6
setfmac mls/low /usr/local/lib/libjpeg.so.8
setfmac mls/low /usr/local/lib/libfreetype.so
setfmac mls/low /usr/local/lib/libfontconfig.so.1
setfmac mls/low /usr/local/lib/libtiff.so.5
setfmac mls/low /usr/local/lib/libwebp.so.7
setfmac mls/low /usr/local/lib/libjbig.so.2
setfmac mls/low /usr/lib/libssl.so.8
setfmac mls/low /lib/libcrypto.so.8
setfmac mls/low /usr/local/lib/libzip.so.5
setfmac mls/low /etc/resolv.conf
Bu liste, apache ve php kombinasyonunun doğru çalışması için gerekli olan tüm dosyalar için mls/low etiketlerini içerir (benim örneğimde yüklü olan paketler için).
Son dokunuş, jail'i mls/equal düzeyinde ve apache'yi mls/low düzeyinde çalışacak şekilde yapılandırmak olacaktır. Hapishaneyi başlatmak için /etc/rc.d/jail betiğinde değişiklik yapmanız, bu betikte jail_start işlevlerini bulmanız, komut değişkenini şu şekilde değiştirmeniz gerekir:
command="setpmac mls/equal $jail_program"
setpmac komutu, tüm etiketlere erişim sağlamak için yürütülebilir dosyayı gerekli yetenek düzeyinde (bu durumda mls/equal) çalıştırır. Apache'de /usr/local/etc/rc.d/apache24 başlangıç betiğini düzenlemeniz gerekir. Apache24_prestart işlevini değiştirin:
apache24_prestart() {
apache24_checkfib
apache24_precmd
eval "setpmac mls/low" ${command} ${apache24_flags}
}
В
Aviator apk
Erişimi dağıtmanın bu yöntemi, apache'ye ek bir güvenlik düzeyi ekleyecektir (ancak bu yöntem diğer yığınlar için uygundur), ayrıca hapishanede çalışır, aynı zamanda yönetici için tüm bunlar şeffaf ve fark edilmeden gerçekleşecektir.
Bu yayını yazmamda bana yardımcı olan kaynakların listesi:
Kaynak: habr.com