مدیریت کلید – آیا اسکریپت اطلاعات حساس را در دایرکتوری خانگی در لینوکس سرقت می کند و SELinux راه بهینه / ابزار برای جلوگیری از آن است

فرضیه: در یک ایستگاه کاری لینوکس من به طور منظم از نرم افزارهای مختلف دانلود و استفاده می کنیم، بطور مثال ماژول های Perl یا Nodejs. وقتی که من از آنها استفاده می کنم، آنها بر روی دستگاه با من به عنوان صاحب کار می کنند و می توانند هر کاری که می توانند در دایرکتوری من انجام دهند، می توانند به کلید های من دسترسی پیدا کنند و به سرقت بروند (از طریق شبکه)

برای سال ها، در حال حاضر من در نهایت در زمان پیدا کردن SELinux برای مقابله با مشکل پیدا کرد. اما همانطور که SELinux یاد گرفتم، به نظر من این موضوع پیش می آید که ممکن است برخی از ماژول ها برای برنامه های کاربردی که از آن داده های حساس استفاده می کنند ایجاد شود، بگذارید یک ماژول خطمشی SELinux برای gnupg برای محدود کردن دسترسی به کلیدهای gpg برای آن برنامه اما به نظر نمی رسد این مورد باشد. به همین دلیل است که من شروع به تردید کل ایده کردم. من وب را برای "پرونده های دایرکتوری دایرکتوری خانه لینوکس" جستجو کردم و نتایج مشابهی در مورد سرقت فیزیکی بود. این بسیار بعید است که من تنها کسی هستم که در مورد این فکر کرد

بنابراین اولین سوال من این است آیا این فرض درست است ؟

اگر آن است، سپس آنچه مطلوب است گزینه هایی برای مقابله با این ؟ در حال حاضر قصد دارم سعی کنید سفارشی کردن سیاست SELinux هدفمند برای اجازه دسترسی به آن فایل های حساس تنها به یک مجموعه محدود از فرآیندها و احتمالا محدود کردن دسترسی شبکه بر اساس برنامه.

I باید سیاست سفارشی را سفارشی کند، زیرا به نظر می رسد دامنه unconfined_t اجازه دسترسی به هر دو user_home_t و gpg_secret_t از gpg_secret_t بخشی از ویژگی user_home_type و خط مشی اجازه دسترسی کامل به آن را می دهد :

 $ sesearch -t gpg_secret_t -A
...
اجازه unconfined_t user_home_type: file {خواندن نوشتن ...}

لینوکس – selinux: مسدود کردن sudo و su با قرار دادن کاربر در پروفایل user_t

من سعی می کنم از افزایش امتیازات از حساب های غیر مجاز مانند www-data جلوگیری کنم.

اساسا، اگر وب سرور من به خطر بیافتد، کراکر ها ممکن است راه هایی برای افزایش پیدا کند (آسیب پذیری های یافت شده در sudo root root سرور؟) من می خواهم راه دیگری برای این کار را بیاورم و متوجه شدم که قرار دادن www-data در user_t نمایه سلینکس این اثر را دارد.

با این حال، با نگاهی به ممیزی فایل زمانی که www-data تلاش می کند تا sudo یا su این را نشان دهد:

برای sudo:

 type = AVC msg = audit (1533818833.807: 318): avc: setted برای pid = 1417 comm = "sudo" capability = 7 scontext = user_u: user_r: user_t: s0 tcontext = user_u: user_r: user_t: s0 tclass = capability

توسط:
selinuxuser_use_ssh_chroot boolean اشتباه تنظیم شد
شرح:
اجازه دهید selinuxuser از ssh chroot استفاده کند

اجازه دسترسی با اجرای:
# setsebool -P selinuxuser_use_ssh_chroot 1

برای su:

 type = AVC msg = audit (1533818282.076: 263): avc: denied {write} برای pid = 1354 comm = su su نام = "btmp" dev = "dm-0" ino = 8428621 scontext = user_u: user_r: user_t: s0 tcontext = system_u: object_r: faillog_t: s0 tclass = file

توسط:
    عدم اجرای نوع (TE) اجازه می دهد که قانون باشد

    شما می توانید از audit2allow برای تولید یک ماژول قابل بارگیری برای این دسترسی استفاده کنید.

بنابراین، برای sudo ، به نظر می رسد بیش از یک اشکال (به همین دلیل selinuxuser_use_ssh_chroot ؟؟!) و برای su ، انکار است از حقوق کافی در / var / log / wtmp

آیا این روش برای جلوگیری از افزایش احتمالی کاربران از کاربران نامناسب مفید است؟ یا این به نظر شما بیش از یک هک است؟ آیا این کافی است برای جلوگیری از دسترسی کاربر ریشه ای به رمز عبور ریشه برای دسترسی ریشه؟

بسیاری از تشکر

چگونه می توان دسترسی به دایرکتوری ها را با ابزار ماسهبازی SELinux انجام داد؟

من در حال تلاش برای راه اندازی Bundle مرورگر Tor در یک گودال ماسهبازی SELinux هستم. من سعی کردم بعد از نگاه کردن به یک صندوق گنجشکی:

[redacted@localhost ~] $ sandbox -X -H sehome -T tmp -I / run / user / 1000 / dbus-1 / * -t sandbox_web_t ~ / Downloads / tor-browser_en -US / *

نتیجه:

dbus [25624]: قادر به تنظیم دایرکتوری سرویس موقت نیست: زیر پوشه XDG_RUNTIME_DIR "/ run / user / 1000 / dbus-1" در دسترس نیست:
dbus-run-session: failed to exec '/ home / redacted / downloads / tor-browser_en-US / Browser': مجوز محروم شده است

بدیهی است که ورودی دایرکتوری مورد نیاز به یک دایرکتوری sandbox جدید کار نمی کند، زیرا XDG_RUNTIME_DIR برای یک پوشه خاص تنظیم شده است. آیا راهی وجود دارد که متغیر محیطی را برای یک دایرکتوری دیگر درون یک شی گنبد SELinux تنظیم کند یا (اگر هیچ چیز دیگری) به سادگی دسترسی به ماسهبازی را به / run / user / 1000 / dbus-1 / اعطا کند؟

کنترل دسترسی – فایل های chmodding با محیط امنیتی SELinux / ACL

خوب، بنابراین من یک دسته از bash و پایتون اسکریپت که من نوشته شده است، همه فقط در یک پوشه بزرگ chilling کردن. خوب، در واقع زیر شاخه های جداگانه ای وجود دارد، اما همه آنها در این پوشه اصلی توزیع شده اند.
بنابراین برای بحث، ساختار پوشه به نظر می رسد چیزی شبیه به این:

 پیدا کنید. -type d 
.
./scripts/sh
./scripts/sh/a
./scripts/sh/b
./scripts/sh/c
./scripts/py
./scripts/py/x
./scripts/py/y
./scripts/py/z

هرگز، من سعی کردم کل مجموعه اسکریپت های اجرایی را تمام کنم، همه در یک با افت پیدا کردم و chmod :

 پیدا کردم. -type f -exec chmod + x {} + 

معمولا، این همه چیزی است که من باید انجام دهم، اما متوجه شدم که + x کمی هنوز ناپدید شده است. تمام مجوزهای آنها همچنان به نظر می رسد:

 ls -l ./scripts/py/z
-rw-rw----. 1 ریشه 1015 801 7 مه 12:00 script_name.py 

ظاهرا. . شخصیت (پس از پرچم مجوز)، نوعی از زمینه امنیتی SELinux، با یک لیست کنترل دسترسی یا مشابه آن را نشان می دهد. من با getfacl را بررسی کردم، واقعا نمی دانستم چی به چی بپوشم اول یک دایرکتوری است، دوم یکی از فایل های اسکریپت است:

 getfacl -acp ./scripts/py/z &&
getfacl -acp ./scripts/py/z/*
user::rwx
گروه :: rwx
دیگر :: - x

کاربر :: rw-
گروه :: rw-
دیگر :: --- 

من با گزینه های زیر setfacl زیر را امتحان کردم، فایده ای نداشت:

 setfacl --help | grep 'remove' 
 -x، --remove = acl حذف نوشته ها از ACL (ها) فایل (ها)
  -X، --remove-file = فایل خواندن ACL برای حذف از فایل
  -b، --remove-all حذف تمام ورودی های ACL پیشرفته
  -k، --remove-default حذف ACL پیش فرض 

بنابراین، در وضعیتی که root مجوز کاربر احترام گذاشته شده است، و sudo استفاده نیست بپرسید؛ چگونه می توانم کنترل دسترسی فایل های شخصی خود را به دست آورم؟