{"id":20284,"date":"2026-08-03T11:50:45","date_gmt":"2026-08-03T09:50:45","guid":{"rendered":"https:\/\/webhosting.de\/linux-capabilities-root-rechte-granular-aufteilen-sicherheitskonzept\/"},"modified":"2026-08-03T11:50:45","modified_gmt":"2026-08-03T09:50:45","slug":"linux-kapaciteter-root-raettigheter-detaljerad-foerdelning-saekerhetskoncept","status":"publish","type":"post","link":"https:\/\/webhosting.de\/sv\/linux-capabilities-root-rechte-granular-aufteilen-sicherheitskonzept\/","title":{"rendered":"Linux-funktioner: S\u00e4ker och detaljerad f\u00f6rdelning av root-beh\u00f6righeter"},"content":{"rendered":"<p>Med Linux Capabilities delar jag upp root-r\u00e4ttigheterna i sm\u00e5, tydligt definierade beh\u00f6righeter och minskar d\u00e4rmed risken avsev\u00e4rt. P\u00e5 s\u00e5 s\u00e4tt styr jag specifikt vilka processer som f\u00e5r utf\u00f6ra s\u00e4rskilda \u00e5tg\u00e4rder och begr\u00e4nsar varje applikations angreppsyta.<\/p>\n\n<h2>Centrala punkter<\/h2>\n\n<ul>\n  <li><strong>Finkornig<\/strong> I st\u00e4llet f\u00f6r att vara allsm\u00e4ktig: dela upp root-r\u00e4ttigheterna i mindre privilegier.<\/li>\n  <li><strong>Filfunktioner<\/strong> I st\u00e4llet f\u00f6r Set-UID: koppla n\u00f6dv\u00e4ndiga beh\u00f6righeter direkt till bin\u00e4rfilerna.<\/li>\n  <li><strong>Kompetensupps\u00e4ttningar<\/strong> konfigurera: Permitted, Effective, Inheritable, Bounding p\u00e5 ett m\u00e5linriktat s\u00e4tt.<\/li>\n  <li><strong>\u00c5tskillnad av privilegier<\/strong>: H\u00e5ll tj\u00e4nster, verktyg och uppgifter strikt \u00e5tskilda.<\/li>\n  <li><strong>F\u00f6rsvar p\u00e5 djupet<\/strong>: Komplettera funktionerna med sudo, roller och loggar.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-serververwaltung-8291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Varf\u00f6r avbryta root-beh\u00f6righeterna?<\/h2>\n\n<p>Ett root-konto ger <strong>Full tillg\u00e5ng<\/strong> p\u00e5 fil- och processniv\u00e5, men just detta b\u00e4ddar f\u00f6r allvarliga fel. Ett felaktigt kommando eller en s\u00e4kerhetslucka r\u00e4cker f\u00f6r att en hel installation ska krascha. D\u00e4rf\u00f6r begr\u00e4nsar jag omfattande \u00e5tg\u00e4rder till det absolut n\u00f6dv\u00e4ndiga och minskar p\u00e5 s\u00e5 s\u00e4tt skadans omfattning och \u00e5terst\u00e4llningstiden. Principen om minimala beh\u00f6righeter h\u00e5ller tj\u00e4nsterna sm\u00e5 och hanterbara. Jag inaktiverar direkt inloggning som root, satsar p\u00e5 roller och skriver fullst\u00e4ndiga loggar.<\/p>\n\n<h2>Linux-kapaciteter \u2013 en kort f\u00f6rklaring<\/h2>\n\n<p>Linux-kapaciteter delar upp den traditionella root-beh\u00f6righeten i tydligt avgr\u00e4nsade <strong>Privilegier<\/strong>. Varje process f\u00e5r endast de byggstenar som den verkligen beh\u00f6ver f\u00f6r sin uppgift, till exempel att binda till portar under 1024 eller att s\u00e4nda s\u00e4rskilda signaler. P\u00e5 s\u00e5 s\u00e4tt undviker jag det tidigare \u201dallt eller inget\u201d-principen. K\u00e4rnan hanterar dessa byggstenar per process och till\u00e4mpar dem strikt. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir kontrollen detaljerad och sp\u00e5rbar.<\/p>\n\n<p>Tekniskt sett kopplar jag f\u00e4rdigheter antingen till <strong>Processer<\/strong> (genom deras kompetensupps\u00e4ttningar) eller till <strong>Filer<\/strong> (som ut\u00f6kade attribut <code>s\u00e4kerhet.kapacitet<\/code> (ELF-bin\u00e4rfiler). Vid <code>execve()<\/code>-Vid start sl\u00e5r k\u00e4rnan samman filkapaciteterna med processupps\u00e4ttningarna: Enkelt uttryckt kombineras till\u00e5tna kapaciteter fr\u00e5n filattributet med de \u00e4rvbara r\u00e4ttigheterna hos den anropande processen till en ny till\u00e5ten upps\u00e4ttning (Permitted-Set) och \u2013 om s\u00e5 \u00e4r markerat \u2013 aktiveras de samtidigt i den effektiva upps\u00e4ttningen (Effective-Set). Detta undviker Set-UID-omv\u00e4gar och g\u00f6r att beh\u00f6righeterna f\u00f6rblir synliga och kontrollerbara.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux_rechte_besprechung_3820.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Att f\u00f6rst\u00e5 kapacitetsupps\u00e4ttningar i ett processperspektiv<\/h2>\n\n<p>Varje process har flera upps\u00e4ttningar av r\u00e4ttigheter, som jag m\u00e5lmedvetet <strong>kontroll<\/strong>. Permitted-Set definierar vad en process i princip f\u00e5r ha. Effective-Set fastst\u00e4ller vad som f\u00f6r tillf\u00e4llet \u00e4r aktivt. Inheritable-Set reglerar vilka privilegier som kan \u00f6verf\u00f6ras till underprocesser. Bounding-Set s\u00e4tter en strikt \u00f6vre gr\u00e4ns och f\u00f6rhindrar att processer \u00f6verskrider den.<\/p>\n\n<h2>Ambient Capabilities och Securebits<\/h2>\n\n<p>F\u00f6rutom de v\u00e4lk\u00e4nda seten finns det \u00e4ven <strong>Ambient-set<\/strong>, som vid <code>execve()<\/code> inte upph\u00f6r automatiskt att g\u00e4lla. Jag anv\u00e4nder det n\u00e4r en process utan privilegier specifikt beh\u00f6ver minimala r\u00e4ttigheter \u00f6ver flera <code>avr\u00e4ttning<\/code>-ska beh\u00e5llas \u00f6ver flera niv\u00e5er (till exempel vid anrop av externa hj\u00e4lpprogram). Ambient-r\u00e4ttigheter r\u00e4knas endast in i de effektiva r\u00e4ttigheterna om den anropade filen inte sj\u00e4lv anger n\u00e5gra filkapaciteter \u2013 p\u00e5 s\u00e5 s\u00e4tt f\u00f6rhindrar jag o\u00f6nskad eskalering.<\/p>\n\n<p>Med de <strong>Securebits<\/strong> jag styr detaljerna kring \u00f6verg\u00e5ngarna, t.ex. om en process efter att UID har \u00e4ndrats f\u00e5r beh\u00e5lla sina tidigare inst\u00e4llda f\u00f6rm\u00e5gor (<code>keepcaps<\/code>) eller om han generellt sett inte f\u00e5r erh\u00e5lla n\u00e5gra nya privilegier (<code>no_new_privs<\/code>). I praktiken anv\u00e4nder jag Securebits strikt och avst\u00e5r fr\u00e5n bekv\u00e4mlighet f\u00f6r att bryta exploatkedjor.<\/p>\n\n<h2>Filfunktioner ist\u00e4llet f\u00f6r Set-UID<\/h2>\n\n<p>Jag ers\u00e4tter Set-UID-bin\u00e4rer med filfunktioner f\u00f6r att minska risken f\u00f6r att <strong>s\u00e4nka<\/strong>. Ist\u00e4llet f\u00f6r att ge ett program root-beh\u00f6righet s\u00e4tter jag bara den beh\u00f6righet som beh\u00f6vs. En typisk \u00e4ndring ser ut s\u00e5 h\u00e4r: <code>setcap 'cap_net_bind_service=+ep' \/usr\/bin\/meinserver<\/code>. Med <code>getcap -r \/<\/code> kontrollerar jag vilka filer som inneh\u00e5ller funktioner. Det minskar antalet eskaleringssteg m\u00e4rkbart.<\/p>\n\n<p>Det \u00e4r viktigt att filfunktioner endast till\u00e4mpas p\u00e5 <strong>ELF-bin\u00e4rfiler<\/strong> fungerar. Tolkskript (t.ex. Python, Bash) \u00e4rver dem inte p\u00e5 ett tillf\u00f6rlitligt s\u00e4tt. I s\u00e5dana fall kapslar jag in den privilegierade \u00e5tg\u00e4rden i ett litet, statiskt granskat hj\u00e4lpprogram eller anv\u00e4nder socket-aktivering, s\u00e5 att min tj\u00e4nst inte beh\u00f6ver ansluta sj\u00e4lv fr\u00e5n b\u00f6rjan. Dessutom h\u00e5ller jag koll p\u00e5 filr\u00e4ttigheterna: Capabilities ger s\u00e4rskilda r\u00e4ttigheter gentemot k\u00e4rnan, men ers\u00e4tter inte <strong>ingen<\/strong> vanliga ACL:er eller POSIX-beh\u00f6righeter.<\/p>\n\n<p>N\u00e4r man kopierar eller packar g\u00e5r f\u00e4rdigheter snabbt f\u00f6rlorade: <code>cp<\/code> utan st\u00f6d f\u00f6r XATTR, felaktigt inst\u00e4lld <code>umask<\/code> eller ta bort en build-artefakt i ett filsystem utan ut\u00f6kade attribut <code>s\u00e4kerhet.kapacitet<\/code> utan att s\u00e4ga n\u00e5got. D\u00e4rf\u00f6r arbetar jag p\u00e5 ett reproducerbart s\u00e4tt och anv\u00e4nder: <code>cp --preserve=xattr ...<\/code>, <code>tar --xattrs<\/code>, <code>rsync -X<\/code>. I paketbyggnader anger jag filfunktioner explicit i installationsskriptet, testar installationen i en ren virtuell maskin och kontrollerar <code>getcap<\/code> i CI.<\/p>\n\n<h2>Privilegieseparation med realistiska scenarier<\/h2>\n\n<p>En webbserver beh\u00f6ver \u00e5tkomst till port 80\/443, men inte till k\u00e4rnmoduler eller systemomstarter, d\u00e4rf\u00f6r st\u00e4ller jag in <strong>CAP_NET_BIND_SERVICE<\/strong> och inget annat. En backup-agent f\u00e5r l\u00e4sa och skriva filer, men f\u00e5r inte \u00e4ndra n\u00e4tverkskonfigurationen. Ett \u00f6vervakningsverktyg f\u00e5r l\u00e4sbeh\u00f6righet till nyckeltal, men har inga r\u00e4ttigheter att g\u00f6ra \u00e4ndringar. Dessa begr\u00e4nsningar g\u00f6r att attacker f\u00f6rblir lokala ist\u00e4llet f\u00f6r att p\u00e5verka hela systemet. Det \u00e4r just denna \u00e5tskillnad som g\u00f6r tj\u00e4nsterna hanterbara och h\u00e5ller felkonfigurationer i schack.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/balancing-linux-capabilities-5618.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kombinera med sudo och roller<\/h2>\n\n<p>Funktioner ers\u00e4tter inte en ordentlig <strong>Rollstruktur<\/strong>, de kompletterar dem. Jag beviljar sudo-beh\u00f6righeter med stor f\u00f6rsiktighet, anv\u00e4nder fullst\u00e4ndiga kommandov\u00e4gar och undviker generella regler som \u201eALL=(ALL) ALL\u201c. Jag loggar varje beh\u00f6righetsbeviljning. Grupper samlar ansvar, medan kapaciteter s\u00e4tter tekniska gr\u00e4nser i processerna. P\u00e5 s\u00e5 s\u00e4tt skapas tydliga ansvarsomr\u00e5den utan \u00f6verdrivna beh\u00f6righeter.<\/p>\n\n<h2>Vanliga fallgropar och b\u00e4sta praxis<\/h2>\n\n<ul>\n  <li><strong>Ingen f\u00f6rkortning f\u00f6r CAP_SYS_ADMIN:<\/strong> Denna r\u00e4ttighet \u00e4r ett samlingsbegrepp. Jag ers\u00e4tter den med mer specifika alternativ (t.ex. <code>CAP_SYS_CHROOT<\/code>, <code>CAP_SYS_TIME<\/code>, <code>CAP_SYS_NICE<\/code>) eller l\u00e5t helt bli.<\/li>\n  <li><strong>Filr\u00e4ttigheterna f\u00f6rblir strikta:<\/strong> Funktioner inaktiverar inte DAC generellt. Utan <code>CAP_DAC_OVERRIDE<\/code> K\u00e4rnan respekterar fortfarande \u00e4gar- och l\u00e4gesbitar. Jag tilldelar d\u00e4rf\u00f6r fortfarande l\u00e4sr\u00e4ttigheter i s\u00e5 liten utstr\u00e4ckning som m\u00f6jligt.<\/li>\n  <li><strong>H\u00e4rdning av sp\u00e5r:<\/strong> Om jag f\u00f6rser en bin\u00e4rfil med filfunktioner f\u00f6rhindrar jag PATH-spoofing (absoluta s\u00f6kv\u00e4gar i <code>sudoers<\/code>, begr\u00e4nsade skrivr\u00e4ttigheter f\u00f6r kataloger i s\u00f6kv\u00e4gen).<\/li>\n  <li><strong>B\u00f6rja tidigt, b\u00f6rja ofta:<\/strong> Processer kan ibland startas med fler beh\u00f6righeter \u00e4n n\u00f6dv\u00e4ndigt. Jag tar bort on\u00f6diga beh\u00f6righeter direkt efter det k\u00e4nsliga steget (<code>prctl()<\/code>\/libcap) och st\u00e4ll in <code>no_new_privs<\/code>, d\u00e4r det \u00e4r m\u00f6jligt.<\/li>\n  <li><strong>Begr\u00e4nsa arv:<\/strong> Jag h\u00e5ller Inheritable- och Ambient-upps\u00e4ttningarna sm\u00e5. Underordnade processer f\u00e5r inte \u00f6ppna n\u00e5gra nya d\u00f6rrar.<\/li>\n  <li><strong>Kontrollera bygg- och drifts\u00e4ttningspipeline:<\/strong> Jag bekr\u00e4ftar att <code>s\u00e4kerhet.kapacitet<\/code> bevaras och att inga staging-steg (containerlager, NFS, artefaktskanner) tar bort XATTR:er.<\/li>\n<\/ul>\n\n<h2>\u00d6versikt \u00f6ver viktiga kapaciteter och risker<\/h2>\n\n<p>Innan jag tilldelar beh\u00f6righeter fastst\u00e4ller jag tydligt vilka beh\u00f6righeter som beh\u00f6vs och bed\u00f6mer risken med dem. Tabellen nedan visar typiska exempel med deras effekter och klassificering. Jag \u00f6verv\u00e4ger alltid alternativ f\u00f6r att undvika omfattande beh\u00f6righeter. S\u00e4rskilt <strong>CAP_SYS_ADMIN<\/strong> Jag beviljar dem ytterst sparsamt. N\u00e4r det \u00e4r m\u00f6jligt ers\u00e4tter jag vidstr\u00e4ckta privilegier med riktade, sn\u00e4vare varianter.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Kapacitet<\/th>\n      <th>Syfte<\/th>\n      <th>Risk<\/th>\n      <th>Exempel<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>CAP_NET_BIND_SERVICE<\/td>\n      <td>Binda till portar &lt; 1024<\/td>\n      <td>L\u00e5g till medelh\u00f6g<\/td>\n      <td>Webbserver p\u00e5 80\/443<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_BOOT<\/td>\n      <td>Starta om systemet<\/td>\n      <td>H\u00f6g<\/td>\n      <td>Planerad omstart<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_MODULE<\/td>\n      <td>Ladda\/ta bort k\u00e4rnmoduler<\/td>\n      <td>Mycket h\u00f6g<\/td>\n      <td>Drivrutinshantering<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_ADMIN<\/td>\n      <td>M\u00e5ngsidiga administrat\u00f6rsfunktioner<\/td>\n      <td>Mycket h\u00f6g<\/td>\n      <td>Olika underh\u00e5llsuppgifter<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SETUID \/ CAP_SETGID<\/td>\n      <td>Byta UID\/GID<\/td>\n      <td>Medelh\u00f6g till h\u00f6g<\/td>\n      <td>F\u00f6r\u00e4ndring av befogenheter under tj\u00e4nstg\u00f6ring<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux_capabilities_tech-office_4738.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<p>Ut\u00f6ver tabellen h\u00e5ller jag just nu p\u00e5 att utv\u00e4rdera <code>CAP_SYS_PTRACE<\/code> (fels\u00f6ka processer), <code>CAP_NET_ADMIN<\/code> (n\u00e4tverksparametrisering) och <code>CAP_DAC_OVERRIDE<\/code> (Att kringg\u00e5 fil\u00e5tkomstbegr\u00e4nsningar) \u00e4r ytterst kritiskt. Ofta finns det m\u00f6nster som g\u00f6r det m\u00f6jligt att undvika dessa r\u00e4ttigheter: dedikerade m\u00e4tnings\u00e4ndpunkter ist\u00e4llet f\u00f6r process-snooping, socket-aktivering eller portvidarebefordran ist\u00e4llet f\u00f6r bind-r\u00e4ttigheter samt tydliga filr\u00e4ttigheter ist\u00e4llet f\u00f6r generell kringg\u00e5ning av DAC.<\/p>\n\n<h2>H\u00e4rdning i containrar och webbhotell<\/h2>\n\n<p>I milj\u00f6er med flera anv\u00e4ndare anser jag att kompetensen \u00e4r avg\u00f6rande <strong>liten<\/strong> och f\u00f6rhindrar arv till underprocesser. Containrar drar stor nytta av detta s\u00e5 snart bounding-setet \u00e4r v\u00e4l avgr\u00e4nsat. Jag kombinerar detta med isolerade filsystem och processutrymmen. Denna introduktion hj\u00e4lper mig att f\u00e5 en \u00f6verblick \u00f6ver olika isoleringsmetoder <a href=\"https:\/\/webhosting.de\/sv\/process-isolering-hosting-chroot-cagefs-container-jails-saekerhet-jaemfoerelse\/\">Processisolering<\/a>. P\u00e5 s\u00e5 s\u00e4tt f\u00f6rblir tj\u00e4nsterna \u00e5tskilda, \u00e4ven om en applikation inte fungerar som den ska.<\/p>\n\n<p>I praktiken st\u00e4ller jag in beh\u00e5llarna som standard p\u00e5 \u201esl\u00e4pp allt, l\u00e4gg till specifikt\u201c: <code>--cap-drop=ALL --cap-add=NET_BIND_SERVICE<\/code> f\u00f6r webbtj\u00e4nster, inga monteringsr\u00e4ttigheter, ingen <code>SYS_ADMIN<\/code>. I orkestrerade milj\u00f6er hanterar jag profilen centralt och kontrollerar den i policyer. Viktigt: Jag f\u00f6rlitar mig inte p\u00e5 filfunktioner i bilden, utan tilldelar beh\u00f6righeter vid k\u00f6rning i orkestratorn \u2013 p\u00e5 ett s\u00e4tt som g\u00e5r att reproducera och granska.<\/p>\n\n<h2>Samverkan med SELinux och AppArmor<\/h2>\n\n<p>Funktioner styr vad en process f\u00e5r g\u00f6ra, medan MAC-profiler fastst\u00e4ller vad den f\u00e5r komma \u00e5t, och de b\u00e5da fungerar i samklang <strong>bra<\/strong>. Jag definierar kapaciteter strikt och l\u00e5ter SELinux eller AppArmor begr\u00e4nsa \u00e5tkomsten till filer och socklar. Detta skapar ett skiktat skydd som st\u00e4ller flera hinder i v\u00e4gen f\u00f6r exploateringar. H\u00e4r hittar jag en snabb j\u00e4mf\u00f6relse: <a href=\"https:\/\/webhosting.de\/sv\/selinux-vs-apparmor-linux-saekerhet-serverhaerdning-skydd\/\">SELinux j\u00e4mf\u00f6rt med AppArmor<\/a>. P\u00e5 s\u00e5 s\u00e4tt h\u00e5lls en komprometterad tj\u00e4nst inl\u00e5st och kan orsaka mindre skada.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/entwickler_schreibtisch2345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>I praktiken: G\u00e5 fram steg f\u00f6r steg<\/h2>\n\n<p>Jag b\u00f6rjar med att g\u00f6ra en \u00f6versikt \u00f6ver alla tj\u00e4nster och deras <strong>Krav och \u00f6nskem\u00e5l<\/strong>. D\u00e4refter tar jag bort on\u00f6diga Set-UID-bin\u00e4rfiler eller ers\u00e4tter dem med specifika filbeh\u00f6righeter. Jag konfigurerar sudo restriktivt och dokumenterar varje post. Jag tilldelar uppgifter till roller och grupper och h\u00e5ller beh\u00f6righeterna p\u00e5 ett minimum. D\u00e4refter testar jag systemet under belastning och granskar loggposterna f\u00f6r ov\u00e4ntade avvisningar.<\/p>\n\n<p>En kort checklista hj\u00e4lper mig vid \u00f6verg\u00e5ngen:<\/p>\n<ul>\n  <li>Fastst\u00e4ll kraven f\u00f6r varje tj\u00e4nst skriftligen (endast det som verkligen beh\u00f6vs).<\/li>\n  <li>G\u00f6ra en inventering av befintliga s\u00e4rr\u00e4ttigheter (<code>find \/ -perm -4000<\/code>, <code>getcap -r \/<\/code>).<\/li>\n  <li>Ers\u00e4tt p\u00e5 ett m\u00e5linriktat s\u00e4tt: Avskaffa Set-UID, st\u00e4ll in filfunktioner, ta bort beh\u00f6righeter i ett tidigt skede.<\/li>\n  <li>St\u00e4nga arv: Strama upp avgr\u00e4nsningsm\u00e4ngden, minimera \u00e4rftliga\/omgivande faktorer.<\/li>\n  <li>S\u00e4kra systemd-\/containerprofiler (<code>KapabilitetBegr\u00e4nsningSet=<\/code>, <code>NoNewPrivileges=yes<\/code>).<\/li>\n  <li>Testa under belastning, granska loggar och revisionsposter, dokumentera undantag.<\/li>\n<\/ul>\n\n<h2>\u00d6vervakning, namnutrymmen och kontinuerliga granskningar<\/h2>\n\n<p>Jag \u00f6vervakar loggfiler, larm och systemanrop s\u00e5 att o\u00f6nskade \u00e5tg\u00e4rder omedelbart <strong>st\u00e5 ut<\/strong>. Jag kontrollerar regelbundet \u00e4ndringar av beh\u00f6righeter, sudo-regler och roller. N\u00e4r det \u00e4r l\u00e4mpligt separerar jag dessutom arbetsbelastningar med hj\u00e4lp av isoleringsmekanismer i k\u00e4rnan. Denna \u00f6versikt ger en bra utg\u00e5ngspunkt f\u00f6r <a href=\"https:\/\/webhosting.de\/sv\/server-sammanhang-isolering-namnrymder-cgroups-hosting-saekerhet\/\">Namnrymder och cgroups<\/a>. P\u00e5 s\u00e5 s\u00e4tt uppt\u00e4cker jag avvikelser i ett tidigt skede och h\u00e5ller omgivningen ren.<\/p>\n\n<p>I vardagen anv\u00e4nder jag enkla tester: <code>capsh --print<\/code> visar mig den aktuella upps\u00e4ttningen av f\u00e4rdigheter, <code>getpcaps<\/code> listar processuella r\u00e4ttigheter och i <code>\/proc\/\/status<\/code> jag l\u00e4ser <code>CapEff<\/code>, <code>CapPrm<\/code>, <code>CapBnd<\/code>. Med <code>auditd<\/code> f\u00f6ljer jag upp \u00e4ndringar i kapacitetsstatusen (t.ex. regel till <code>capset<\/code>), kopplar ihop h\u00e4ndelser med drifts\u00e4ttningar och st\u00e4ller in larm om omfattande beh\u00f6righeter pl\u00f6tsligt dyker upp. I knepiga fall hj\u00e4lper det mig att <code>strace -e capget,capset<\/code>, f\u00f6r att synligg\u00f6ra manipuleringar av r\u00e4ttigheter.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-capabilities-8123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Praktiska exempel p\u00e5 systemd och containrar<\/h2>\n\n<p>Jag k\u00f6r m\u00e5nga tj\u00e4nster som systemd-enheter och kapslar in beh\u00f6righeterna d\u00e4r:<\/p>\n<ul>\n  <li><code>CapabilityBoundingSet=CAP_NET_BIND_SERVICE<\/code> begr\u00e4nsar det tillg\u00e4ngliga r\u00e4ttighetsf\u00f6nstret till det absolut n\u00f6dv\u00e4ndiga.<\/li>\n  <li><code>AmbientCapabilities=CAP_NET_BIND_SERVICE<\/code> ger tj\u00e4nsten r\u00e4tt att ansluta till portarna 80\/443 utan filfunktioner.<\/li>\n  <li><code>NoNewPrivileges=yes<\/code> f\u00f6rhindrar senare utvidgningar av r\u00e4ttsomr\u00e5det.<\/li>\n  <li><code>Anv\u00e4ndare=<\/code>, <code>Grupp=<\/code>, <code>ProtectSystem=strikt<\/code>, <code>PrivateTmp=yes<\/code> kompletterar isoleringen.<\/li>\n<\/ul>\n<p>I containrar startar jag processer s\u00e5 minimalt som m\u00f6jligt: <code>docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE --read-only<\/code>. F\u00f6r tillf\u00e4lliga jobb anv\u00e4nder jag k\u00f6rningsegenskaper ist\u00e4llet f\u00f6r filegenskaper i avbildningen, s\u00e5 att byggprocesserna f\u00f6rblir reproducerbara och beh\u00f6righeterna \u00e4r knutna till milj\u00f6n.<\/p>\n\n<h2>Konkreta migreringar fr\u00e5n praktiken<\/h2>\n\n<ul>\n  <li><strong>ping utan Set-UID:<\/strong> I st\u00e4llet f\u00f6r <code>setuid root<\/code> jag s\u00e4tter <code>setcap 'cap_net_raw=+ep' \/bin\/ping<\/code>. P\u00e5 s\u00e5 s\u00e4tt kan alla anv\u00e4ndare \u00f6ppna ICMP-socklar utan fullst\u00e4ndiga root-r\u00e4ttigheter. Jag kontrollerar regelbundet med <code>getcap \/bin\/ping<\/code>, om attributet finns kvar.<\/li>\n  <li><strong>Webbtj\u00e4nst p\u00e5 port 80\/443:<\/strong> Jag k\u00f6r min tj\u00e4nst som en anv\u00e4ndare utan s\u00e4rskilda beh\u00f6righeter och anger endast <code>cap_net_bind_service<\/code>. Om tj\u00e4nsten \u00e4nd\u00e5 ligger bakom en omv\u00e4nd proxy kan jag alternativt \u00e4ven binda den till port 80\/443 d\u00e4r och anv\u00e4nda en h\u00f6g port internt \u2013 helt utan ytterligare kunskaper.<\/li>\n  <li><strong>\u00c4ndring av parter i r\u00e4tteg\u00e5ngen:<\/strong> F\u00f6r verktyg som tillf\u00e4lligt beh\u00f6ver ut\u00f6kade beh\u00f6righeter (t.ex. f\u00f6r att st\u00e4lla in nice-niv\u00e5er) st\u00e4ller jag in <code>cap_sys_nice<\/code>, utf\u00f6r \u00e5tg\u00e4rden tidigt och sl\u00e4pp sedan f\u00f6rm\u00e5gan igen. Jag undviker permanent ut\u00f6kade r\u00e4ttigheter.<\/li>\n<\/ul>\n\n<h2>Gr\u00e4nser och alternativ<\/h2>\n\n<p>Det \u00e4r inte alla anv\u00e4ndningsfall som kr\u00e4ver Capabilities. Ofta finns det s\u00e4kra alternativ med l\u00e4gre risk:<\/p>\n<ul>\n  <li><strong>Socket-aktivering:<\/strong> Init-tj\u00e4nsten (t.ex. systemd) \u00f6ppnar privilegierade socklar och \u00f6verl\u00e4mnar dem till processen. Min tj\u00e4nst beh\u00f6ver d\u00e5 inga Bind-beh\u00f6righeter.<\/li>\n  <li><strong>Portvidarebefordran:<\/strong> Med hj\u00e4lp av brandv\u00e4ggsregler omdirigerar jag 80\/443 till en h\u00f6g port. Tj\u00e4nsten f\u00f6rblir utan s\u00e4rskilda beh\u00f6righeter och systemets beteende f\u00f6r\u00e4ndras inte.<\/li>\n  <li><strong>Icke-privilegierade l\u00e5gportar:<\/strong> Om det \u00e4r l\u00e4mpligt kan jag h\u00f6ja tr\u00f6skelv\u00e4rdet f\u00f6r icke-privilegierade portar. Det ut\u00f6kar dock handlingsutrymmet f\u00f6r alla processer \u2013 jag v\u00e4ger noga mellan risk och bekv\u00e4mlighet.<\/li>\n  <li><strong>Sm\u00e5 hj\u00e4lpredor ist\u00e4llet f\u00f6r universalmaskiner:<\/strong> Hellre en liten, granskad bin\u00e4rfil med exakt en funktion \u00e4n en stor monolit med ett omfattande utbud av funktioner.<\/li>\n<\/ul>\n\n<h2>Kortfattat sammanfattat<\/h2>\n\n<p>Med <strong>Linux-funktioner<\/strong> Jag delar upp root-beh\u00f6righeter i sm\u00e5, l\u00e4tt hanterbara privilegier. Filkapaciteter ers\u00e4tter riskfyllda Set-UID-bin\u00e4rer och minskar konsekvenserna av en attack. I kombination med strikta sudo-regler, roller och MAC-profiler skapas ett skiktat skydd med tydliga gr\u00e4nser. Bounding- och Inheritable-Sets begr\u00e4nsar arv och h\u00e5ller processerna p\u00e5 r\u00e4tt sp\u00e5r. Den som till\u00e4mpar denna metod minskar attackytorna m\u00e4rkbart och h\u00e5ller administrationsb\u00f6rdan hanterbar.<\/p>","protected":false},"excerpt":{"rendered":"<p>Linux-kapaciteter delar upp root-r\u00e4ttigheter i detaljerade beh\u00f6righeter. L\u00e4r dig hur kapacitetsmodellen st\u00e4rker din servers\u00e4kerhet och m\u00f6jligg\u00f6r separering av beh\u00f6righeter p\u00e5 Linux-system.<\/p>","protected":false},"author":1,"featured_media":20277,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[794],"tags":[],"class_list":["post-20284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sicherheit-computer_und_internet"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"110","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Linux Capabilities","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20277","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/comments?post=20284"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/posts\/20284\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media\/20277"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/media?parent=20284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/categories?post=20284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/sv\/wp-json\/wp\/v2\/tags?post=20284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}