diff --git a/ublinux/rc.preinit.d/56-security b/ublinux/rc.preinit.d/56-security index 649dabe..9abc242 100755 --- a/ublinux/rc.preinit.d/56-security +++ b/ublinux/rc.preinit.d/56-security @@ -55,7 +55,7 @@ EOF exec_polkit(){ ## Настрока polkit правил - rm -f ${ROOTFS}/etc/polkit-1/rules.d/ublinux-* + rm -f "${ROOTFS}"/etc/polkit-1/rules.d/ublinux-* if [[ -n ${POLKIT[@]} ]]; then for RULES in "${!POLKIT[@]}"; do RULES_GROUP= @@ -82,6 +82,28 @@ EOF fi } +exec_openssl_gost(){ +## Настройка OpenSSL ГОСТ + FILE_OPENSSL_CONF="${ROOTFS}/etc//etc/ssl/openssl.cnf" + FILE_OPENSSL_GOST_CONF="${ROOTFS}/etc//etc/ssl/gost.cnf" + TXT_OPENSSL_GOST_CONF="$(sed -r '/^\s*$/d' "${FILE_OPENSSL_GOST_CONF}")" + TXT_ENABLE_GOST_CONF="openssl_conf = openssl_gost" + + if [[ ${OPENSSL_GOST} == @(yes|enable) ]]; then + # Enable GOST + grep -q "${TXT_ENABLE_GOST_CONF}" "${FILE_OPENSSL_CONF}" || sed "0,/^[a-zA-Z0-9\[]/s//${TXT_ENABLE_GOST_CONF}\n&/" -i "${FILE_OPENSSL_CONF}" + grep -q "${TXT_OPENSSL_GOST_CONF%%$'\n'*}" "${FILE_OPENSSL_CONF}" || cat ${FILE_OPENSSL_GOST_CONF} >> "${FILE_OPENSSL_CONF}" + elif [[ ${OPENSSL_GOST} == @(no|disable) ]]; then + ## Disable GOST + sed "/${TXT_ENABLE_GOST_CONF}/d" -i "${FILE_OPENSSL_CONF}" + sed "/${TXT_OPENSSL_GOST_CONF%%$'\n'*}/,/${TXT_OPENSSL_GOST_CONF##*$'\n'}/d" -i "${FILE_OPENSSL_CONF}" + fi +} + +################ +##### MAIN ##### +################ + if [[ ${0##*/} == ${SELF_NAME} && -z $@ ]]; then while read -r FUNCTION; do $"${FUNCTION##* }" diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index 6411e82..106e606 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -28,7 +28,7 @@ [/etc/ublinux/config] ## Config verison ## Версия конфигурации -VERSION=2.8 +VERSION=2.9 ## Additional boot parameters ## Дополнительные параметры загрузки, только для управления модулями @@ -202,12 +202,15 @@ DEPMOD=yes [/etc/ublinux/boot] ## Время отображения меню GRUB для выбора варианта загрузки ## GRUB_TIMEOUT=3 +GRUB_TIMEOUT=3 ## Выбор варианта загрузки GRUB по умолчанию ## GRUB_DEFAULT="UBLinux Desktop Basic 2204 - Песочница в RAM с сохранением профиля пользователя HDD" ## Пользователь GRUB для входа в режим редактирования конфигурации загрузки ## GRUB_USER=superadmin +GRUB_USER=superadmin ## Пароль пользователя GRUB для входа в режим редактирования конфигурации загрузки ## GRUB_PASSWORD=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 +GRUB_PASSWORD=grub.pbkdf2.sha512.10000.918F54C3C4CDE024A34FDA951FFBAD17D2B8F031A696F22038267FDAC6CF5FEA4FE800880591DBD533C95606A275F170B4F460243A083E89E231B2DAC13467D5.9B3392962D14DE34D6BCD4C559A4A4222ED9C0BF14D15A7E3772DA430513E34F2C96FE324D3FBCC4576C8DDF7B82B7AC8830195CC8886A39B525F070EC236421 ## Режим вывода лога загрузки ## GRUB_BOOT_SILENT= ## splash # Графика plymouth, полный лог @@ -385,8 +388,11 @@ NSSWITCHWINBIND=yes ################################################################################ ## Настройка безопасности, ограничений [/etc/ublinux/security] +## Включить поддержку OpenSSL алгоритмов ГОСТ GOST2012-GOST8912-GOST8912 GOST2001-GOST89-GOST89 +## OPENSSL_GOST=yes + ## Отключить виртуальные терминалы и запретить переключение на них из X11 -## ACCESS_DENIED_VTX11=yes|no*|enable|disable +## ACCESS_DENIED_VTX11=yes|no*|enable|disable ## ACCESS_DENIED_VTX11=yes ## TODO https://linux.die.net/man/5/access.conf @@ -405,35 +411,54 @@ NSSWITCHWINBIND=yes ## ACCESS_GRANTED_INTERPRETER="/usr/bin/gbr3,/usr/bin/python,/usr/bin/python2,/usr/bin/python3,/usr/bin/perl,/usr/bin/perl6,/usr/bin/php,/usr/bin/ruby,/usr/bin/bash,/usr/bin/node,/usr/bin/awk" ## Отключить пользовательские nosuid nodev noexec на смонтированные цели -## MOUNT_ATTR[mount_point_1,mount_point_n]=attribut_1,attribut_n -## nosuid - Block the operation of suid, and sgid bits. | Блокировать работу suid и sgid бит. -## nodev - Don't interpret block special devices on the filesystem. | Не интерпретируйте блокировку специальных устройств в файловой системе. -## noexec - Don't allow the execution of executable binaries | Не позволить выполнять исполняемые двоичные файлы -## nosymfollow - Don't follow symlinks when resolving paths | Не переходить по символическим ссылкам при разрешении путей +## MOUNT_ATTR[mount_point_1,mount_point_n]=attribut_1,attribut_n +## nosuid # Block the operation of suid, and sgid bits. | Блокировать работу suid и sgid бит. +## nodev # Don't interpret block special devices on the filesystem. | Не интерпретируйте блокировку специальных устройств в файловой системе. +## noexec # Don't allow the execution of executable binaries | Не позволить выполнять исполняемые двоичные файлы +## nosymfollow # Don't follow symlinks when resolving paths | Не переходить по символическим ссылкам при разрешении путей ## MOUNT_ATTR[/home]=nosuid,nodev,noexec,nosymfollow ## MOUNT_ATTR[/tmp,/dev/shm]=nosuid,nodev,noexec ## Использовать дисковые квоты на файловые системы -## MOUNT_QUOTA[mount_point_1,mount_point_n]=attribut_1,attribut_n -## usrquota - Включить простые квоты на пользователя -## grpquota - Включить простые квоты на группу -## usrjquota=aquota.user - Включить журналируемые квоты на пользователя -## grpjquota=aquota.group - Включить журналируемые квоты на группу -### jqfmt=vfsold - Использовать БД для простых квот V1 -## jqfmt=vfsv0 - Выключить журналирование. Использовать БД для журналируемых квот V2 -## jqfmt=vfsv1 - Включить журналирование. Использовать БД для журналируемых квот V2 +## MOUNT_QUOTA[mount_point_1,mount_point_n]=attribut_1,attribut_n +## usrquota # Включить простые квоты на пользователя +## grpquota # Включить простые квоты на группу +## usrjquota=aquota.user # Включить журналируемые квоты на пользователя +## grpjquota=aquota.group # Включить журналируемые квоты на группу +## jqfmt=vfsold # Использовать БД для простых квот V1 +## jqfmt=vfsv0 # Выключить журналирование. Использовать БД для журналируемых квот V2 +## jqfmt=vfsv1 # Включить журналирование. Использовать БД для журналируемых квот V2 ## MOUNT_QUOTA[/home]=usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv1 ## MOUNT_QUOTA[/]=usrquota,grpquota +## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup. man 5 systemd.resource-control +## CGROUP_QUOTA[TYPE=NAME]=PROPERTY1=VALUE,PROPERTY2=VALUE,PROPERTYn=VALUE +## Получить древовидный список cgroups и запущенных процессов: systemd-cgls --no-page +## Показать монторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m +## Еденицы измерения: %, K, M, G, T +## TYPE: unit, user +## slice: system.slice, user.slice, user-0.slice, user-1000.slice, smb.service, cups.service, httpd.service, +## user: superadmin, user-1 # Системное имя пользователя +## PROPERTY: +## MemoryHigh=200M # Мягкое ограничение ОЗУ, юнит выходящий за рамки потребления ограничивается +## MemoryMax=300M # Жесткое ограничение ОЗУ, юнит выходящий за рамки потребления убивается +## MemorySwapMax=100M # Ограничение на потребление SWAP +## CPUQuota=10% # Ограничение на использование % ЦПУ, 100% на каждый CPU. 4cpu*100%=400% +## IOReadBandwidthMax="/dev/sdb1 4M" # Ограничение операций ввода вывода на чтение блочного устройства +## IOWriteBandwidthMax="/dev/sdb1 2M" # Ограничение операций ввода вывода на запись блочного устройства +## CGROUP_QUOTA[unit=user-1000.slice]="MemoryHigh=200M,MemorySwapMax=300M,CPUQuota=100%" +## CGROUP_QUOTA[user=superadmin]="MemoryHigh=500M,MemorySwapMax=100M,CPUQuota=400%" +## CGROUP_QUOTA[unit=smb.service]="MemoryHigh=100M,MemorySwapMax=0M,CPUQuota=100%" + ## Управление разрешениями действий polkit, можно разрешать для группы пользователей ## POLKIT[id_object]=result:group_1,group_n" ## Посмотреть все доступные объекты polkit: pkaction | grep udisks ## result: yes|no|auth_self|auth_self_keep|auth_admin|auth_admin_keep|null -## org.freedesktop.udisks2. - Mounting a filesystems all subgroup | Монтировать файловую систему все подгруппы -## org.freedesktop.udisks2.filesystem-mount - Mounting a filesystems | Монтировать файловую систему -## org.freedesktop.udisks2.filesystem-mount-system - Mount a filesystem on a system device | Монтировать файловую систему на системном устройстве -## org.freedesktop.udisks2.filesystem-mount-other-seat - Mount a device attached to another seat | Монтировать файловую систему с устройства, подключенного в другое место -## org.freedesktop.udisks2.filesystem-unmount-others - Unmount a device mounted by another user | Демонтировать устройство, смонтированное другим пользователем +## org.freedesktop.udisks2. # Mounting a filesystems all subgroup | Монтировать файловую систему все подгруппы +## org.freedesktop.udisks2.filesystem-mount # Mounting a filesystems | Монтировать файловую систему +## org.freedesktop.udisks2.filesystem-mount-system # Mount a filesystem on a system device | Монтировать файловую систему на системном устройстве +## org.freedesktop.udisks2.filesystem-mount-other-seat # Mount a device attached to another seat | Монтировать файловую систему с устройства, подключенного в другое место +## org.freedesktop.udisks2.filesystem-unmount-others # Unmount a device mounted by another user | Демонтировать устройство, смонтированное другим пользователем ## org.freedesktop.machine1.host-login ## org.freedesktop.DisplayManager.AccountsService.ModifyAny ## org.freedesktop.login1.suspend @@ -456,9 +481,9 @@ NSSWITCHWINBIND=yes ## org.freedesktop.upower.suspend ## org.xfce.power.xfce4-pm-helper ## org.xfce.session.xfsm-shutdown-helper -## org.manjaro.pamac. - GUI Pamac install package | ГУЙ pamac установка и обновление пакетов -## org.opensuse.cupspkhelper.mechanism.all-edit - Printer settings | Настройки принтера -## org.freedesktop.NetworkManager. - NetworkManager settings | Настройки NetworkManager +## org.manjaro.pamac. # GUI Pamac install package | ГУЙ pamac установка и обновление пакетов +## org.opensuse.cupspkhelper.mechanism.all-edit # Printer settings | Настройки принтера +## org.freedesktop.NetworkManager. # NetworkManager settings | Настройки NetworkManager ## ## POLKIT[org.freedesktop.udisks2.]=yes:storage ## POLKIT[org.manjaro.pamac.]=yes:wheel