Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witajcie
Szukam sposobu na ograniczenie możliwości wyjście użytkownika poza swój katalog roboczy.
Userzy łączą się po ssh.
Mają przycięte środowisko za pomocą lshell-a, natomiast jeśli dać im dostęp do mc - spokojnie mogą wychodzić poza swój katalog domowy.
Od kilku dni jednak domagają się przywrócenia mc - czy znacie może sposób na zablokowanie wyjścia poza ~ z poziomu mc ?
Z góry dziękuje za odpowiedź
Offline
W profilu Apparmora da się to zrobić.
Dać MC dostęp tylko do niezbędnych plików, konfigów i biliotek (potrzebnych do uruchomienia programu), a poza tym:
deny / mrwxlk, owner @{HOME}/** rwl,
Identycznie można zrobić "jaila" dla Basha i każdej powłoki.
To samo można zrobić w Grsecurity RBAC czy SELinuxie, ale to już inny poziom gimnastyki.
Tu masz niezły przykład profilu Apparmoa dla Basha, który ogranicza także MC, tam tylko do poprawki są reguły dla dla /home/*/ do kształtu, jaki dałem wyżej.
https://blog.cryptomilk.org/2011/09/02/jailbash/
Po prostu sposób konfiguracji Apparmora od wersji obowiązującej w 2011 roku się troszkę zmienił.
Ostatnio edytowany przez Jacekalex (2015-04-15 05:03:43)
Offline
[quote=Pavlo950]A nie wystarczy 700 dla [b]root[/b] dla [b]/home[/b] i 777 dla [b]/home/user[/b]?[/quote]
Bzdury totalne z 777 dla /home/user, i w ogóle uprawnieniami się powłoki nie zmodyfikuje.
Jeśli już samymi uprawnieniami dla systemowymi takie klatki bym musial budować, to wyłącznie przez mechanizm ACL, a i tak jażdy by bylo z tym na tydzień, podczas, gdy profil Apparmora mogę naskrobać w godzinkę czy dwie.
Powód jest taki, ze wewnątrz konta użyszkodnika musi być dostęp do poleceń powłoki, i bibliotek, które te programy używane w powłoce potrzebują.
Jak ktoś potrafi majstrować uprawnieniami całego systemu do takiej roboty, to skończy i tak podobnie do chyba rotnode (o ile mnie pamięć nie myli) (mieli konta shell, oberwali przez dziurawe sudo).
Uprawnienia to troszkę za mało do szczelnego skonfigurowania klatki na konto shellowe, najłatwiejszym z bezpiecznych rozwiązań jest Apparmor, trudniejszym i dużo bardziej dziurawym od profilu Apparmora jest Chroot,
Względnie w miarę bezpieczny Chroot można zrobić, jak go dozbroić opcjami Chroot-protect z Grsecurity, ale Grsec, to już inny poziom gimnastyki, niewiele jest z resztą dystrybucji, które dostarczają gotowe jajko z Grsec,
a samodzielna kompilacja, to już wykracza poza standardową adminkę, i trzeba znacznie bardziej czaić bazę, żeby się w Grsec/Pax bawić.
Ale zamian do chroota możemy mieć takie kfiatki:
kernel.grsecurity.chroot_caps = 1 kernel.grsecurity.chroot_deny_bad_rename = 1 kernel.grsecurity.chroot_deny_chmod = 1 kernel.grsecurity.chroot_deny_chroot = 1 kernel.grsecurity.chroot_deny_fchdir = 1 kernel.grsecurity.chroot_deny_mknod = 1 kernel.grsecurity.chroot_deny_mount = 1 kernel.grsecurity.chroot_deny_pivot = 1 kernel.grsecurity.chroot_deny_shmat = 1 kernel.grsecurity.chroot_deny_sysctl = 1 kernel.grsecurity.chroot_deny_unix = 1 kernel.grsecurity.chroot_enforce_chdir = 1 kernel.grsecurity.chroot_execlog = 0 kernel.grsecurity.chroot_findtask = 1 kernel.grsecurity.chroot_restrict_nice = 1
Do tego bardzo sympatyczny ACL - RBAC - też z Grsec.
Jest jeszcze SELinux (w każdym standardowym jaju, często domyślnie), który może tworzyć takie klatki typu sandbox, ale Selinux w konfiguracji jest ze 20 razy trudniejszy od Apparmora.
Klatka przy pomocy profilu Apparmora, to moim zdaniem najprostsza
z naprawdę skutecznych opcji, i w przeciwieństwie do majstrowania uprawnienia mi w całym systemie nie daje ryzyka rozpieprzenia całego systemu w drobny mak.
Pozdro
;-)
Ostatnio edytowany przez Jacekalex (2015-04-16 06:37:51)
Offline
Time (s) | Query |
---|---|
0.00012 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00098 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.8.79' WHERE u.id=1 |
0.00068 | UPDATE punbb_online SET logged=1732846910 WHERE ident='3.144.8.79' |
0.00042 | SELECT * FROM punbb_online WHERE logged<1732846610 |
0.00056 | SELECT topic_id FROM punbb_posts WHERE id=285850 |
0.00117 | SELECT id FROM punbb_posts WHERE topic_id=27281 ORDER BY posted |
0.00081 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27281 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00101 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27281 ORDER BY p.id LIMIT 0,25 |
0.00081 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27281 |
Total query time: 0.00665 s |