
लिनक्स नेमस्पेस और seccomp-bpf सैंडबॉक्स
Firejail एक हल्का सुरक्षा उपकरण है जो (संभावित रूप से अविश्वसनीय) अनुप्रयोगों को चलाने के लिए एक प्रतिबंधित वातावरण स्थापित करके Linux सिस्टम की सुरक्षा के लिए बनाया गया है।
अधिक विशेष रूप से, यह एक SUID सैंडबॉक्स प्रोग्राम है जो Linux namespaces, seccomp-bpf और Linux capabilities का उपयोग करके सुरक्षा उल्लंघनों के जोखिम को कम करता है। यह एक प्रक्रिया और उसके सभी वंशजों को वैश्विक रूप से साझा कर्नेल संसाधनों, जैसे नेटवर्क स्टैक, प्रोसेस टेबल और माउंट टेबल, का अपना निजी दृश्य रखने की अनुमति देता है। Firejail SELinux या AppArmor वातावरण में काम कर सकता है, और यह Linux Control Groups के साथ एकीकृत है।
लगभग बिना किसी निर्भरता के C में लिखा गया, यह सॉफ्टवेयर 3.x या उससे नए कर्नेल संस्करण वाले किसी भी Linux कंप्यूटर पर चलता है। यह किसी भी प्रकार की प्रक्रियाओं को सैंडबॉक्स कर सकता है: सर्वर, ग्राफिकल अनुप्रयोग, और यहाँ तक कि उपयोगकर्ता लॉगिन सत्र भी। सॉफ्टवेयर में कई सामान्य Linux प्रोग्रामों के लिए सैंडबॉक्स प्रोफाइल शामिल हैं, जैसे Mozilla Firefox, Chromium, VLC, Transmission आदि।
सैंडबॉक्स हल्का है, ओवरहेड कम है। संपादित करने के लिए कोई जटिल कॉन्फ़िगरेशन फ़ाइलें नहीं हैं, कोई socket कनेक्शन खुला नहीं है, पृष्ठभूमि में कोई daemon नहीं चल रहा है। सभी सुरक्षा सुविधाएँ सीधे Linux कर्नेल में लागू की गई हैं और किसी भी Linux कंप्यूटर पर उपलब्ध हैं।
SECURITY.md देखें।
समर्थित संस्करणों के लिए, SECURITY.md देखें।
नोट: Debian stable और backports के संस्करण संभवतः पुराने हैं, इसलिए वर्तमान में हम नवीनतम रिलीज़ से .deb पैकेज डाउनलोड और इंस्टॉल करने की सलाह देते हैं:
Debian stable (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
कारण: Ubuntu 20.04 के लिए firejail पैकेज Launchpad पर पैच पोस्ट किए जाने के महीनों बाद भी CVE-2021-26910 के प्रति संवेदनशील छोड़ दिया गया था:
यह भी देखें 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 से जाँचा जा सकता है।
आप रिलीज़ किए गए पैकेजों में से एक को भी इंस्टॉल कर सकते हैं।
वर्तमान डेवलपमेंट संस्करण को स्रोत से बिल्ड करने और इंस्टॉल करने के निर्देश।
लागू होने पर नीचे दिए गए डिस्ट्रीब्यूशन-विशिष्ट निर्देशों का उपयोग करने की अनुशंसा की जाती है, क्योंकि वे नेटिव पैकेज बनाते हैं, जिससे बाकी सिस्टम और पैकेज प्रबंधन के साथ एकीकरण आसान होना चाहिए।
अन्य डिस्ट्रीब्यूशनों के लिए, सामान्य निर्देश देखें।
CI में डिस्ट्रीब्यूशन-विशिष्ट बिल्ड कैसे किए जाते हैं, यह देखने के लिए .gitlab-ci.yml भी देखें।
नोट: AUR पैकेज हमारे द्वारा अनुरक्षित नहीं है।
AUR से firejail-git इंस्टॉल करें।
उदाहरण:
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 इंस्टॉल करें और --enable-apparmor ./configure विकल्प का उपयोग करें:
sudo apt-get install git build-essential libapparmor-dev pkg-config gawk
SELinux समर्थन के साथ बिल्ड करने के लिए (जो आमतौर पर Fedora, RHEL और उनके व्युत्पन्नों पर उपयोग किया जाता है), libselinux1-dev (Fedora पर libselinux-devel) इंस्टॉल करें और --enable-selinux ./configure विकल्प का उपयोग करें।
git से firejail का उपयोग करने की विस्तृत जानकारी विकी पर उपलब्ध है।
नोट: संभावित firejail-इन-firejail समस्याओं से बचने के लिए प्रोग्राम का पूरा पथ उपयोग करना सुनिश्चित करें (उदाहरण के लिए, firejail firefox के बजाय firejail /usr/bin/firefox) (देखें #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
पहला कमांड संस्करण 9 से पहले के PulseAudio सॉफ़्टवेयर में कुछ साझा मेमोरी/PID नेमस्पेस बग्स को हल करता है। दूसरा कमांड Firejail को आपके डेस्कटॉप में एकीकृत करता है। PulseAudio परिवर्तनों को लागू करने के लिए आपको लॉगआउट करके फिर से लॉगिन करना होगा।
अपने प्रोग्राम उसी तरह शुरू करें जैसे आप आदी हैं: डेस्कटॉप मैनेजर मेनू, फ़ाइल मैनेजर, डेस्कटॉप लॉन्चर।
एकीकरण Firejail द्वारा डिफ़ॉल्ट रूप से समर्थित किसी भी प्रोग्राम पर लागू होता है। वर्तमान Firejail संस्करण में 900 से अधिक डिफ़ॉल्ट अनुप्रयोग हैं, और यह संख्या हर नई रिलीज़ के साथ बढ़ती जाती है।
हम अनुप्रयोग सूची src/firecfg/firecfg.config में रखते हैं (इंस्टॉल होने पर /etc/firejail/firecfg.config)।
अधिकांश Firejail कमांड लाइन विकल्पों को प्रोफाइल फ़ाइलों का उपयोग करके सैंडबॉक्स में पास किया जा सकता है।
आप सभी समर्थित अनुप्रयोगों के लिए प्रोफाइल etc/ में पा सकते हैं (इंस्टॉल होने पर /etc/firejail/)।
हम पिछले रिलीज़ किए गए संस्करणों के लिए प्रोफाइल सुधारों की एक सूची भी etc-fixes/ में रखते हैं।
यदि आप किसी सार्वजनिक रिपॉजिटरी में अतिरिक्त Firejail सुरक्षा प्रोफाइल रखते हैं, तो कृपया हमें एक लिंक दें:
नई प्रोफाइल का अनुरोध करने के लिए इस issue का उपयोग करें:
आप किसी प्रोग्राम के लिए आवश्यक syscalls की सूची प्राप्त करने के लिए इस उपकरण का भी उपयोग कर सकते हैं:
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
त्वरित प्रारंभ |
उन्नत ब्राउज़र सुरक्षा |
Tor ब्राउज़र सुरक्षा |