LINUX.ORG.RU

23
Всего сообщений: 120

ls - альтернативный метод контроля доступа

Подскажите, пожалуйста, не разберусь альтернативным методом контроля доступа, когда команда ls выводит одиннадцатым символом точку Система centos 7, SElinux отключена Есть два файла -rw-rw-r–. 1 gd-data gd-data 3756 Feb 17 16:01 configuration.php -rw-rw-r– 1 dr-data dr-data 4017 Feb 17 12:12 configuration.php У одного точка имеется в конце вывода команды ls, а у другого нет Пытаюсь редактировать файл пользователем, который входит в группы gd-data и gd-data. Первый файл редактируется, второй нет. Точка, как я понял является альтернативным методом контроля доступа с помощью SElinux, но SElinux отключена.

 ,

adkondr ()

Fedora на десктопе и сервере

Доброго.

Во-первых, хочу послушать тех, кто на Федоре не первый релиз, насколько долго можно сидеть на предыдущем? Вопрос к тому, что даже у опытных разрабов и мейнтейнеров из Федора могут быть косяки на старте релиза, которые стоит переждать, особенно в случае с сервером. Насколько много проблем получу исходя из вашего опыта при обновлениях и сопровождении, если я, допустим, просижу на федоре 31, которую недавно поставил на десктоп, до первых пары месяцев релиза 32? Я не сторонник частых апдейтов, если все работает и нет необходимости применить секьюрити фиксы. С дебианом вот не задалось, слишком большой цикл релизов, а я железо апгрейжу раз в полтора-два года и не попадаю в этот цикл.

Во-вторых, по поводу серверов на Федора. Есть ли вообще смысл в данной затее или лучше перекатиться на Центос? В центосе, правда, смущает скромная команда и маленькое количество пакетов. А если работать с СЕЛинукс, то для сторонних пакетов наверняка нужно будет самому описывать правила и вот это все.

В-третьих, я начал читать доки по СЕЛинукс, но на десктопе я почти его не ощущаю, потому что раньше всегда настраивал firejail, там примерно те же ограничения, только проще в описании. Успел начитаться и крайне негативных мнений по работе и целесообразности использования этой сущности (СЕЛинукс) на сервере, из-за которой банальная установка-настройка-обслуживание ЛАМП, Некстклауд и подобных вещей превращается в боль. Как сейчас с этим дела? Достаточно допилены профили для работы сервероспецифичного софта, виртуалок?

 , , ,

Ermoriri ()

Не запускаются скрипты: chmod +x не помогает, ^M нет, noexec не стоит

На CentOS 8 (жаль нет возможности заменить на нормальный дистр) не запускаются никакие скрипты обычным способом.

cat ./scr.sh
#!/bin/sh
echo "hi"

chmod +x ./scr.sh
./scr.sh
bash: ./scr.sh: /bin/sh: bad interpreter: Permission denied

dos2unix ./scr.sh
./scr.sh
bash: ./scr.sh: /bin/sh: bad interpreter: Permission denied

sh ./scr.sh
hi

ls -al ./scr.sh
-rwxrwxr-x. 1 admin admin 20 Jan  9 16:42 ./scr.sh

mount | grep sda2
/dev/sda2 on / type ext4 (rw,relatime,seclabel)

Почему-то «обычным способом» скрипты не запускаются, но если добавить sh или bash перед именем скрипта - то всё работает.

Все разрешения стоят правильно, виндовых переводов строк в скрипте нет, раздел примаунчен без noexec. Что ещё может быть не так?

 , , , ,

SakuraKun ()

Какие инструменты изоляции приложений вы используете на десктопе?

Сабж. И для каких программ?

/me присматривается к firejail

 , , , ,

Deleted ()

Слакваристам SELinux не грозит

Патрик Волькердинг ответил на вопрос о добавлении SELinux в Slackware. На этот вопрос он ответил:

we will more than likely never include it.

Напоминаю, что в дефолтной Slackware также нет systemd и PAM, но есть pulseaudio.

 ,

saahriktu ()

Зачем нужен selinux ?

Если все его предпочитают отключать ?

 

Jopich1 ()

vsftpd + virtual users + selinux

Ошибка в ftp-клиенте при попытке загрузить: 553 Could not create file. Скачивает отлично.

Конфиг vsftpd

listen=YES
listen_ipv6=no
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
chroot_local_user=YES
pam_service_name=vsftpd
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/var/ftp/$USER
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999

Конфигурация selinux

# getsebool -a | grep ftp
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> off
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_home_dir --> on

Тестовый виртуальный пользователь: ftpvirt11, его каталог: /var/ftp/ftpvirt11

# ls -Z /var/ftp
drwxr-xr-x. ftp ftp unconfined_u:object_r:public_content_rw_t:s0 ftpvirt11
drwxr-xr-x. ftp ftp system_u:object_r:public_content_t:s0 pub

Подскажите где что исправить чтобы можно было делать upload?

 , ,

katigoroshek ()

Доступ к настройке selinux

Доброго времени суток!

После запуска selinux c бубном в этой теме, я плавно подошёл к следующему вопросу:
при любой попытке выполнить управляющую команду, выдаётся ошибка:

# semanage fcontext -l
ValueError: SELinux policy is not managed or store cannot be accessed.
# semanage login -l
ValueError: SELinux policy is not managed or store cannot be accessed.
# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     denied
Max kernel policy version:      30

Такое ощущение, что сам selinux и не разрешает мне себя настраивать. Подскажите, пожалуйста.

P.S. Система — AltLinux 8 Server
P.P.S.
# id -Z
user_u:user_r:user_t:s0

 ,

fractaler ()

Запустить selinux на AltLinux SP Server

Доброго времени суток!

Не запускается selinux в виртуалке на AltLinux 8 SP Server.

Всё сделал по инструкции: https://www.altlinux.org/Sl

Однако на этапе перезагрузки вместо сообщения о маркировке файлов загрузка просто останавливается и может висеть так час. Дольше я не пробовал. В этот момент система отвечает на пинги и на Alt-Ctrl-Del. Но не грузится.

$ uname -a
Linux proxy 4.4.86-std-def-alt0.M80C.1 #1 SMP Wed Sep 13 15:48:42 UTC 2017 x86_64 GNU/Linux

 ,

fractaler ()

Selinux practical tasks

Всем доброго времени суток, а так же с праздником! Продолжаю учить selinux, и столкнулся с такой проблемой, не могу придумать себе задачи для тестирования своих навыков. Посему прошу Вас поделиться реальными возможными задачами по настройке selinux (с которыми вы сталкивались лично, или же слышали о таковых, или фантазия у Вас более продвинутая). Задачи не обязательно должны быть сложными, так как я еще начинающий. Нужны как задачи по настройке, так и по написанию политик. Заранее спасибо.

 , , , ,

topotyn ()

Поясните по selinux

Все доброго времени суток. Опишу ситуацию. Есть Centos 7, на котором собран модуль Selinux и установлен через semodule -i. Вопрос: Есть ли у кого опыт личный, что при обновлении дистрибутива все самолепные политики сгенеренные через audit2allow слетят? Было ли у кого подобное?

 ,

partyzan ()

Понимание SElinux

Всем доброго времени суток. Пару дней ковыряю selinux, пытаюсь лучше, глубже вникнуть в настройку. Помогите, пожалуйста упорядочить знания.
У каждого файла, демона, сокета (короче у всего) есть контекст (пример: user_u:user_r:user_t:s0), на нём и строится вся политика безопасности. Каждого пользователя linux можно привязать к пользователю selinux (user_u (можно посмотреть командой semanage login -l)). У каждого пользователя selinux есть перечень ролей (пользователю selinux можно добавлять или удалять роли командой semanage -a -R newrole_r ouruser_u), как создать новую роль? И под конец, у каждой роли есть список типов (можно ли условно сказать, что тип это определённое действие, которое можно выполнить над объектом?, если это процесс (домен), то выполняется переход к другому типу?) Как создать новый тип ?, как добавить тип к роли ?, как прописывать правила для типов ?. Если кто знает как это делать ручками, вообще супер! (знаю про утилиту audit2allow/why, но хочется понять как она работает.) Заранее спасибо за помощь.
В гугл можно не посылать, прочитал и пересмотрел много информации, пытаюсь её упорядочить.

 , , ,

topotyn ()

На что влияет галочка Enable SELinux в CentOS 7?

В инсталлере есть галочка Enable SELinux. На что она влияет в конечной системе? Конкретно интересует, как его правильно включить после установки, если галочка была снята.

Про /etc/selinux/config SELINUX=disabled поменять на enforcing знаю. Ещё на что-то может влиять?

 ,

Legioner ()

SELinux (создание модуля)

Доброго времени суток. Нужна помощь. Создаю SELinux модуль для ПО, доступ к которому сможет получить обычный пользователь.Я перечитал уже много мануалов, применял на практике, собирал Франкенштейна из audit2allow (для извлечения опыта из ошибок). Но по ходу работы вылезают крутые «фичи». В общем буду говорить за себя, и мне кажется, что я где то заблуждаюсь в написании модуля. Взял 2 статьи на Хабре (ссылочки ниже) и по ним пробовал собрать модуль. И как то безуспешно, а об этом расскажу ниже. Тупик возник на втором гайде, когда сделал все строго по пунктам, а результат получился совсем другой.

Первый гайд - https://habr.com/ru/post/320100/ Второй гайд - https://habr.com/ru/post/322476/

Введение: Необходимо наложить контексты на ПО, создать пользователя (login=ovdcoadm; seuser=ovdcoadm_u), выделить ему роль (ovdcoadm_r) и в модуле объявить тип (ovdco_t) позволив ему управлять нашим ПО, ходить по SSH, да и вообще работать на сервере напрямую.

Что я собираю:

#ovdco.te

policy_module(ovdco, 1.0.0)

# объявляем новую роль
role ovdcoadm_r;
# тип для процесса
type ovdco_t;
# тип для исполняемого файла
type ovdco_exec_t;
# тип для конфиг-файлов
type ovdco_conf_t;
# тип для лог-файла
type ovdco_log_t;
# тип для временных файлов
type ovdco_tmp_t;
# тип для порта, который слушает ovdco ( протокол binkp )
type binkp_port_t;





# стандартный шаблон для НЕ-админа
userdom_unpriv_user_template(ovdcoadm)
#userdom_restricted_user_template(myguest)
# разрешаем dac_override
allow ovdco_t self:capability { dac_override dac_read_search };
# разрешаем sudo
sudo_role_template(ovdcoadm, ovdcoadm_r, ovdco_t)

# Макрос приложения: добавляет тип ovdco_t в список приложений
# и разрешает ему стартовать из типа  ovdco_exec_t
application_domain(ovdco_t, ovdco_exec_t)
# Макрос демона: добавляет тип ovdco_t в список демонов,
# разрешает его запускать через systemd
# и назначает переход: если systemd запустит файл с типом ovdco_exec_t,
# то процесс получит тип ovdco_t
init_daemon_domain(ovdco_t, ovdco_exec_t)
# разрешает типу ovdco_t исполнять стандартные бинарники ( /bin, /usr/bin )
corecmd_exec_bin(ovdco_t)
# разрешает типу ovdco_t подключать библиотеки
libs_use_ld_so(ovdco_t)
# разрешает типу ovdco_t читать состояние системы ( cpu, memory )
kernel_read_system_state(ovdco_t)
# разрешает типу ovdco_t писать в /tmp
files_rw_generic_tmp_dir(ovdco_t)
# разрешает типу ovdco_t читать конфиг сети ( /etc/resolv.conf итд )
sysnet_read_config(ovdco_t)
# разрешает типу ovdco_t получать случайные числа из /dev/(u)random
dev_read_rand(ovdco_t)
# разрешает типу ovdco_t получать аттрибуты файловой системы ( свободное место )
fs_getattr_xattr_fs(ovdco_t)
# разрешает типу ovdco_t делать dns resolve
sysnet_dns_name_resolve(ovdco_t)
# разрешает типу ovdco_t ходить в /var/log ( r/o )
logging_search_logs(ovdco_t)
# назначает правило: логи, которые создает процесс ovdco_t, 
# будут иметь тип ovdco_log_t
logging_log_filetrans(ovdco_t, ovdco_log_t, file)
# назначает правило: tmp-файлы, которые создает процесс ovdco_t, 
# будут иметь тип ovdco_tmp_t
files_poly_member_tmp(ovdco_t, ovdco_tmp_t)
# разрешает ovdco_t делать bind() на любой адрес
corenet_tcp_bind_generic_node(ovdco_t)
# разрешает ovdco_t общаться с postgresql по unix-сокету
postgresql_stream_connect(ovdco_t)
# разрешает ovdco_t общаться с postgresql по сети
corenet_tcp_connect_postgresql_port(ovdco_t)


# макрос gen_user создает пользователя так-же, как semanage user -a
# он всегда должен быть в самом конце файла
gen_user(ovdcoadm_u, ovdcoadm, ovdcoadm_r, s0, s0)

Как мы видим - он должен создавать se-пользователя, роль, и несколько типов. И да! Он компилируется, все создает!

semanage * -l

[root@localhost ~]# semanage login -l

Login Name SELinux User MLS/MCS Range Service

__default__ user_u s0 * ovdcoadm ovdcoadm_u s0 * root root s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 *

Local customization in /etc/selinux/targeted/logins ovdcoadm ovdcoadm_u s0 xdm sshd

В файле /etc/selinux/targeted/logins/ovdcoadm

cat /etc/selinux/targeted/logins/ovdcoadm sshd:ovdcoadm_u:s0 xdm:ovdcoadm_u:s0 ovdco:ovdcoadm_u:s0

[root@localhost ~]# semanage user -l

Labeling MLS/ MLS/ SELinux User Prefix MCS Level MCS Range SELinux Roles

guest_u user s0 s0 guest_r ovdcoadm_u user s0 s0 ovdcoadm_r root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r sysadm_u user s0 s0-s0:c0.c1023 sysadm_r system_u user s0 s0-s0:c0.c1023 system_r unconfined_r unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r user_u user s0 s0 user_r ovdcoadm_r xguest_u user s0 s0 xguest_r

В файле /etc/selinux/targeted/contexts/users/ovdcoadm_u

[root@localhost ~]# cat /etc/selinux/targeted/contexts/users/ovdcoadm_u system_r:local_login_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:remote_login_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:sshd_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:crond_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:xdm_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_su_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_sudo_t:s0 ovdcoadm_r:ovdco_t:s0 system_r:initrc_su_t:s0 ovdcoadm_r:ovdco_t:s0 staff_r:staff_t:s0 ovdcoadm_r:ovdco_t:s0 sysadm_r:sysadm_su_t:s0 ovdcoadm_r:ovdco_t:s0 sysadm_r:sysadm_sudo_t:s0 ovdcoadm_r:ovdco_t:s0

По идее все ровно встало, доступ к SSH есть и не только к нему.

Но на выходе когда мы заходим под этим пользователем, то его не пускает, a2a ничего не показывает по этой проблеме. Чтобы ничего не сломалось я работаю в permissive режиме. Вот как меня определяет машина, когда авторизуюсь через SSH:

id

[ovdcoadm@localhost ~]$ whoami ovdcoadm [ovdcoadm@localhost ~]$ id uid=1003(ovdcoadm) gid=1003(ovdcoadm) groups=1003(ovdcoadm) context=system_u:system_r:unconfined_t:s0-s0:c0.c1023

Как мы видим - она не может меня определить и выкидывает в unconfined_t. Вроде бы все объявлено, все делал строго по гайдами. А почему так - я не знаю. И это один из важных вопросов. Если есть предложения, то пишите. Если нужна дополнительная информация, то с удовольствием ее предоставлю!

 , , ,

PirateTM ()

Hibernate не усыпляет комп при вызове из меню KDE из-за прав доступа (виноват selinux)

UPD: куря логи выяснил, что имеет к этому отношение selinux. после его отключения стало засыпать и от юзера.

не могу сказать, что проблема решена, всё-таки хотелось бы тогда понять где я должен был увидеть ругань selinux на неправомерный доступ и как его настроить на это.

Привет, ЛОР! Не могу понять почему не засыпает комп в режиме hibernate.

Дано:

  • Fedora 29 amd64 on LVM with KDE5
  • GRUB2
  • UEFI (secure boot disabled)
  • swap-file on root

    При вызове из меню KDE suspend to RAM засыпает и просыпается, а suspend to disk (aka hibernate) только мигнёт экраном и включается обратно. При вызове из консоли # /usr/lib/systemd/systemd-sleep hibernate и # /usr/lib/systemd/systemd-sleep suspend всё засыпает и просыпается. Хотя от юзера эти команды не срабатывают, permission denied.

    Таким образом, как выяснить какой командой из KDE-menu засыпается комп (и почему hibernate не срабатывает?)?
    В # journalctl -b есть уточнение ошибки в 2018-2019 строках, но распарсить не могу.

    # cat /etc/default/grub
    
    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(test -f /etc/rfremix-release && sed 's, release .*$,,g' /etc/rfremix-release || sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="rd.lvm.lv=max-desktop/root rhgb intel_iommu=on iommu=pt rd.driver.pre=vfio-pci resume=/dev/mapper/max--desktop-root resume_offset=497664 quiet"
    GRUB_DISABLE_RECOVERY="true"
    
    # cat /proc/cmdline
    
    BOOT_IMAGE=/boot/vmlinuz-4.20.6-200.fc29.x86_64 root=/dev/mapper/max--desktop-root ro rd.lvm.lv=max-desktop/root rhgb intel_iommu=on iommu=pt rd.driver.pre=vfio-pci resume=/dev/mapper/max--desktop-root resume_offset=497664 quiet
    
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:          15787        1595       12952         331        1239       13578
    Swap:          8191           0        8191
    
    # swapon -v
    
    NAME          TYPE SIZE USED PRIO
    /var/swapfile file   8G   0B   -2
    
    # filefrag -v /var/swapfile
    
    Filesystem type is: ef53
    File size of /var/swapfile is 8589934592 (2097152 blocks of 4096 bytes)
     ext:     logical_offset:        physical_offset: length:   expected: flags:
       0:        0..    2047:     497664..    499711:   2048:            
       1:     2048..    4095:     501760..    503807:   2048:     499712:
       2:     4096..    8191:     507904..    511999:   4096:     503808:
       3:     8192..   16383:     516096..    524287:   8192:     512000:
    
    # journalctl -u systemd-hibernate
    
    ...
    -- Reboot --
    фев 10 00:31:40 max-desktop systemd[1]: Starting Hibernate...
    фев 10 00:31:40 max-desktop systemd-sleep[2131]: Failed to write hibernation disk offset: Permission denied
    фев 10 00:31:40 max-desktop systemd[1]: systemd-hibernate.service: Main process exited, code=exited, status=1/FAILURE
    фев 10 00:31:40 max-desktop systemd[1]: systemd-hibernate.service: Failed with result 'exit-code'.
    фев 10 00:31:40 max-desktop systemd[1]: Failed to start Hibernate.
    
    # ls -lh /var/swapfile
    
    -rw-------. 1 root root 8,0G фев  9 21:54 /var/swapfile
    
    $ groups
    
    max wheel kvm libvirt
    
    # cat /usr/lib/systemd/system/systemd-hibernate.service
    
    [Unit]
    Description=Hibernate
    Documentation=man:systemd-suspend.service(8)
    DefaultDependencies=no
    Requires=sleep.target
    After=sleep.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/lib/systemd/systemd-sleep hibernate
    

    dmesg после чистой загрузки и hibernate
    journalctl -b после чистой загрузки и hibernate

 , , , ,

kma21 ()

Зачем нужен SELinux?

Я не понимаю зачем он нужен. Говорят есть люди, которые настраивают SELinux так, что дают root доступ от своего ПК хакеру и не боятся что он испортит систему. Для этого SELinux?

 

rubefiya ()

sshd в SELinux

Доброго времени суток! Создал нового пользователя в SELinux «name_u», прописал у него в файле (/etc/selinux/targeted/contexts/users/name_u) следующее:

#######
name_r:name_t:s0			name_r:name_t:s0
staff_r:staff_t:s0			name_r:name_t:s0
system_r:crond_t:s0			name_r:name_t:s0
system_r:initrc_su_t:s0			name_r:name_t:s0
system_r:local_login_t:s0		name_r:name_t:s0
system_r:remote_login_t:s0		name_r:name_t:s0
system_r:sshd_t:s0			name_r:name_t:s0 
system_r:xdm_t:s0			name_r:name_t:s0
#######
И все равно не дает доступ пользователю к ssh. Когда добавляю в строчку staff_t у которого есть доступ, то все хорошо, он заходит.
system_r:sshd_t:s0			name_r:name_t:s0 staff_r:staff_t:s0
Только мне SSH нужен как инструмент с типом name_t для доступа к каталогу с файлами которые помечены типом name_rw_t.

 

PirateTM ()

SELinux

Привет друзья! Возникла проблема с настройкой SELinux, а точнее с пользователями. Добавляю пользователей SELinux, потом имена входа через утилиту semanage. Все вроде добавляется, но при авторизации допустим на кого угодно (к примеру на astk_adm) вводим команду id -Z и как будто ничего не менялось... И реально ничего не менялось, правила на пользователей не применились... В чем может быть проблема

Вывод после настройки http://joxi.ru/a2XevWZU1PYJeA?d=1

Мои контексты http://joxi.ru/BA04V60UJ6DPXA?d=1

 

PirateTM ()

Удалил папку /etc/selinux/targeted, как все вернуть обратно?

Добрый день. Пытался удалить свои глючные политики SELinux и настольно разошелся, что грохнул все папку /etc/selinux/targeted. После переустановил SELinux.

Теперь при выполнении semodule -i <бла бла> получаю, что то вроде: neverallow check failed at /etc/selinux/targeted/tmp/modules/100/base/cil:4635 (neverallow base_typeattr_1 memory_device_t (blk_file (read))) <root> allow at /etc/selinux/targeted/tmp/modules/100/munin/cil:584 (allow disk_munin_plugin_t device_node (blk_file (ioctl read getattr lock open)))

Failed to generate binary semodule: Failed!

Подскажите, как теперь все исправить ??? Операционная система CentOS 7

 ,

ts_ ()

Запрет выполнение файлов в SELinux

Как с помощью SELinux запретить выполнение файлов (например, юзеру с ролью xguest_r запретить выполнять файлы с типом data_home_t)?

 

gasinvein ()