
مساحات أسماء Linux وصندوق رمل seccomp-bpf
Firejail هي أداة أمان خفيفة الوزن تهدف إلى حماية نظام Linux من خلال إنشاء بيئة مقيدة لتشغيل التطبيقات (التي قد تكون غير موثوقة).
وبشكل أكثر تحديدًا، فهو برنامج صندوق رمل SUID يقلل من مخاطر الخروقات الأمنية باستخدام مساحات أسماء Linux وseccomp-bpf وقدرات Linux. يسمح لعملية ما وجميع عملياتها الفرعية بالحصول على عرض خاص بها للموارد المشتركة عالميًا في النواة، مثل حزمة الشبكة وجدول العمليات وجدول التركيب. يمكن أن يعمل Firejail في بيئة SELinux أو AppArmor، وهو متكامل مع مجموعات التحكم في Linux.
مكتوب بلغة C مع عدم وجود تبعيات تقريبًا، ويعمل البرنامج على أي جهاز كمبيوتر يعمل بنظام Linux بإصدار نواة 3.x أو أحدث. يمكنه عزل أي نوع من العمليات: الخوادم، والتطبيقات الرسومية، وحتى جلسات تسجيل دخول المستخدمين. يتضمن البرنامج ملفات تعريف عزل لعدد من برامج Linux الأكثر شيوعًا، مثل Mozilla Firefox وChromium وVLC وTransmission وما إلى ذلك.
صندوق الرمل خفيف الوزن، والحمل الإضافي منخفض. لا توجد ملفات إعداد معقدة لتحريرها، ولا اتصالات مأخذ مفتوحة، ولا برامج خفية تعمل في الخلفية. جميع ميزات الأمان منفذة مباشرة في نواة Linux ومتاحة على أي جهاز كمبيوتر يعمل بنظام Linux.
انظر SECURITY.md.
للحصول على الإصدارات المدعومة، انظر SECURITY.md.
ملاحظة: من المرجح أن تكون الإصدارات القادمة من Debian المستقر وbackports قديمة، لذلك نوصي حاليًا إما بتنزيل وتثبيت حزمة .deb من أحدث إصدار:
أو البناء من المصدر.
Debian المستقر (bullseye): نوصي باستخدام حزمة backports.
ملاحظة: من المرجح أن تكون الإصدارات القادمة من التوزيعة وPPA قديمة، لذلك نوصي حاليًا إما بتنزيل وتثبيت حزمة .deb من أحدث إصدار:
أو البناء من المصدر.
ملاحظة: توصية PPA مخصصة بشكل أساسي لـ firejail نفسه؛ لا بأس في تثبيت firetools والأدوات المتعلقة بـ firejail مباشرة من التوزيعة إذا لم تكن متوفرة في PPA، لأنها تميل إلى أن تُحدَّث بشكل أقل.
بالنسبة لـ Ubuntu 18.04+ والتوزيعات المشتقة (مثل Linux Mint)، يُنصح المستخدمون بشدة باستخدام PPA.
كيفية الإضافة والتثبيت من PPA:
sudo add-apt-repository ppa:deki/firejail
sudo apt-get update
sudo apt-get install firejail firejail-profiles
السبب: ظلت حزمة firejail الخاصة بـ Ubuntu 20.04 عرضة لثغرة CVE-2021-26910 لأشهر بعد نشر تصحيح لها على Launchpad:
انظر أيضًا https://wiki.ubuntu.com/SecurityTeam/FAQ:
ما البرمجيات التي يدعمها فريق أمان Ubuntu؟
ينقسم Ubuntu حاليًا إلى أربعة مكونات: main وrestricted وuniverse وmultiverse. جميع الحزم الثنائية في main وrestricted مدعومة من قبل فريق أمان Ubuntu طوال عمر إصدار Ubuntu، بينما الحزم الثنائية في universe وmultiverse مدعومة من قبل مجتمع Ubuntu.
بالإضافة إلى ذلك، من المرجح أن يكون إصدار PPA أحدث ويحتوي على المزيد من إصلاحات ملفات التعريف.
انظر المناقشات التالية للتفاصيل:
Firejail متوفر في عدة توزيعات Linux:
بخلاف الاستثناءات المذكورة أعلاه، طالما أن توزيعتك توفر إصدارًا مدعومًا من firejail، فمن الجيد عمومًا تثبيته من التوزيعة.
يمكن التحقق من الإصدار باستخدام firejail --version بعد التثبيت.
يمكنك أيضًا تثبيت أحد الحزم المُصدَرة.
تعليمات لبناء وتثبيت إصدار التطوير الحالي من المصدر.
يُنصح باستخدام التعليمات الخاصة بالتوزيعة أدناه عند الإمكان، لأنها تنشئ حزمًا أصلية، مما يجعل التكامل مع بقية النظام وإدارة الحزم أسهل.
بالنسبة للتوزيعات الأخرى، انظر التعليمات العامة.
انظر أيضًا .gitlab-ci.yml لمعرفة كيفية تنفيذ البنيات الخاصة بالتوزيعات في CI.
ملاحظة: حزمة AUR غير مدعومة من قبلنا.
ثبّت firejail-git من AUR.
مثال:
yay -S firejail-git
لـ Debian وUbuntu والتوزيعات المشتقة:
ملاحظة: يجب تمرير أي خيارات ./configure إلى mkdeb.sh (مثل ./mkdeb.sh --enable-foo).
sudo apt-get update -qy
sudo apt-get install -qy \
git build-essential fakeroot lintian libapparmor-dev pkg-config gawk
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./mkdeb.sh &&
sudo dpkg -i ./*.deb &&
make installcheck
لـ Fedora والتوزيعات المشتقة:
ملاحظة: يجب تمرير أي خيارات ./configure إلى mkrpm.sh (مثل ./platform/rpm/mkrpm.sh --enable-foo).
sudo dnf update -y
sudo dnf install -y rpm-build gcc make
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make dist &&
./platform/rpm/mkrpm.sh &&
sudo rpm -i ./*.rpm &&
make installcheck
تعليمات البناء/التثبيت العامة:
git clone 'https://github.com/netblue30/firejail.git' &&
cd firejail &&
./configure &&
make -j "$(nproc)" &&
sudo make install-strip &&
make installcheck
على Debian/Ubuntu ستحتاج إلى تثبيت git وgcc.
للبناء مع دعم AppArmor (المستخدم عادةً على Debian وUbuntu وopenSUSE والتوزيعات المشتقة)، ثبّت مكتبات تطوير AppArmor وpkg-config واستخدم خيار ./configure --enable-apparmor:
sudo apt-get install git build-essential libapparmor-dev pkg-config gawk
للبناء مع دعم SELinux (المستخدم عادةً على Fedora وRHEL والتوزيعات المشتقة)، ثبّت libselinux1-dev (libselinux-devel على Fedora) واستخدم خيار ./configure --enable-selinux.
معلومات مفصلة حول استخدام firejail من git متاحة على الويكي.
ملاحظة: تأكد من استخدام المسار الكامل للبرنامج (على سبيل المثال، firejail /usr/bin/firefox بدلاً من firejail firefox) لتجنب مشكلات firejail-داخل-firejail المحتملة (انظر #2877).
لبدء صندوق الرمل، اسبق أمرك بـ firejail:
firejail /usr/bin/firefox # starting Mozilla Firefox
firejail /usr/bin/transmission-gtk # starting Transmission BitTorrent
firejail /usr/bin/vlc # starting VideoLAN Client
sudo firejail /etc/init.d/nginx start
شغّل firejail --list في الطرفية لسرد جميع صناديق الرمل النشطة. مثال:
$ firejail --list
1617:netblue:/usr/bin/firejail /usr/bin/firefox-esr
7719:netblue:/usr/bin/firejail /usr/bin/transmission-qt
7779:netblue:/usr/bin/firejail /usr/bin/galculator
7874:netblue:/usr/bin/firejail /usr/bin/vlc --started-from-file file:///home/netblue/firejail-whitelist.mp4
7916:netblue:firejail --list
ادمج صندوق الرمل الخاص بك مع سطح المكتب عن طريق تشغيل الأمرين التاليين:
firecfg --fix-sound
sudo firecfg
يحل الأمر الأول بعض أخطاء الذاكرة المشتركة/مساحة اسم PID في برمجيات PulseAudio قبل الإصدار 9. يدمج الأمر الثاني Firejail في سطح المكتب لديك. ستحتاج إلى تسجيل الخروج ثم تسجيل الدخول مرة أخرى لتطبيق تغييرات PulseAudio.
شغّل برامجك بالطريقة التي اعتدت عليها: قوائم مدير سطح المكتب، ومدير الملفات، ومشغلات سطح المكتب.
ينطبق التكامل على أي برنامج مدعوم افتراضيًا بواسطة Firejail. يوجد أكثر من 900 تطبيق افتراضي في إصدار Firejail الحالي، ويزداد العدد مع كل إصدار جديد.
نحتفظ بقائمة التطبيقات في src/firecfg/firecfg.config (/etc/firejail/firecfg.config عند التثبيت).
يمكن تمرير معظم خيارات سطر أوامر Firejail إلى صندوق الرمل باستخدام ملفات التعريف.
يمكنك العثور على ملفات التعريف لجميع التطبيقات المدعومة في etc/ (/etc/firejail/ عند التثبيت).
نحتفظ أيضًا بقائمة إصلاحات ملفات التعريف للإصدارات المُصدَرة سابقًا في etc-fixes/.
إذا كنت تحتفظ بملفات تعريف أمان إضافية لـ Firejail في مستودع عام، فيرجى إعطائنا رابطًا:
استخدم هذه المشكلة لطلب ملفات تعريف جديدة:
يمكنك أيضًا استخدام هذه الأداة للحصول على قائمة باستدعاءات النظام التي يحتاجها برنامج ما:
ينشئ firecfg روابط رمزية في /usr/local/bin، لذلك لإزالة firejail بالكامل، شغّل ما يلي قبل إلغاء التثبيت:
sudo firecfg --clean
انظر man firecfg للتفاصيل.
ملاحظة: يتم تجاهل الروابط الرمزية المعطلة عند البحث عن ملف تنفيذي في $PATH، لذلك لن يسبب إلغاء التثبيت دون القيام بما سبق مشكلات.
LANDLOCK
Landlock is a Linux security module first introduced in version 5.13 of
the Linux kernel. It allows unprivileged processes to restrict their
access to the filesystem. Once imposed, these restrictions can never
be removed, and all child processes created by a Landlock-restricted
processes inherit these restrictions. Firejail supports Landlock as an
additional sandboxing feature. It can be used to ensure that a sand‐
boxed application can only access files and directories that it was ex‐
plicitly allowed to access. Firejail supports populating the ruleset
with both a basic set of rules (see --landlock) and with a custom set
of rules.
Important notes:
- A process can install a Landlock ruleset only if it has either
CAP_SYS_ADMIN in its effective capability set, or the "No New
Privileges" restriction enabled. Because of this, enabling the
Landlock feature will also cause Firejail to enable the "No New
Privileges" restriction, regardless of the profile or the
--nonewprivs command line option.
- Access to the /proc directory is managed through the --land‐
lock.proc command line option.
- Access to the /etc directory is automatically allowed. To
override this, use the --writable-etc command line option. You
can also use the --private-etc option to restrict access to the
/etc directory.
To enable Landlock self-restriction on top of your current Firejail se‐
curity features, pass --landlock flag to Firejail command line. You
can also use --landlock.read, --landlock.write, --landlock.special and
--landlock.execute options together with --landlock or instead of it.
Example:
$ firejail --landlock --landlock.read=/media --landlock.proc=ro /usr/bin/mc
أداة صغيرة لطباعة إحصائيات ملفات التعريف. قم بالترجمة والتثبيت كالمعتاد. يتم تثبيت الأداة في دليل /usr/lib/firejail.
شغّلها على ملفات التعريف الموجودة في /etc/profiles:
$ /usr/lib/firejail/profstats /etc/firejail/*.profile
No include .local found in /etc/firejail/noprofile.profile
Warning: multiple caps in /etc/firejail/tidal-hifi.profile
Warning: multiple caps in /etc/firejail/tqemu.profile
Warning: multiple caps in /etc/firejail/transmission-daemon.profile
Warning: multiple caps in /etc/firejail/trivalent.profile
Stats:
profiles 1342
include local profile 1341 (include profile-name.local)
include globals 1307 (include globals.local)
blacklist ~/.ssh 1201 (include disable-common.inc)
seccomp 1213
capabilities 1335
noexec 1214 (include disable-exec.inc)
noroot 1105
memory-deny-write-execute 320
restrict-namespaces 1048
apparmor 869
private-bin 817
private-dev 1172
private-etc 842
private-cache 865
private-lib 86
private-tmp 1036
whitelist home directory 662
whitelist var 975 (include whitelist-var-common.inc)
whitelist run/user 1305 (include whitelist-runuser-common.inc
or blacklist ${RUNUSER})
whitelist usr/share 760 (include whitelist-usr-share-common.inc
net none 452
dbus-user none 766
dbus-user filter 206
dbus-system none 970
dbus-system filter 13
بدء سريع |
أمان المتصفح المتقدم |
أمان متصفح تور |