CloudLinux SecureLinks avbryter Symlink-Attacker på delade servrar genom att följa osäkra symboliska länkar till Kärnan-nivå. På så sätt skyddar jag känsliga filer, eftersom processer endast får följa länkar om ägaren till länken och målfilen är densamma.
Centrala punkter
- Kärnskydd förhindrar att länkar följs mellan främmande användare.
- Ägarprövning kopplar samman symlänken och målfilen på ett strikt sätt.
- Spärrning av hårda länkar Förhindra länkar till externa filer.
- Delad hosting förblir isolerad och motståndskraftig.
- Enkel Aktivering via sysctl-parametrar.
Vad som gör symlink-attacker så farliga inom delad hosting
En symlänksattack tvingar Tjänster som Apache, PHP-FPM eller filhanteraren, att öppna en extern fil via en symbolisk länk, vilket resulterar i Konton avslöjar information över gränserna. I blandade miljöer med många konton ser jag ofta komplexa katalogstrukturer, vilket gör att felaktiga behörigheter snabbt kan leda till att kritiska data exponeras. Angripare placerar då länkar till konfigurationsfiler, inloggningsuppgifter eller tillfälliga filer som tillhör andra användare. Utan skydd följer processer den manipulerade sökvägen och läser innehåll som de aldrig borde få se. Det är just denna lucka som en strikt länkkontroll täcker, och därmed minskar jag avsevärt risken för dataläckage och oavsiktlig kompromettering av konton.
Hur CloudLinux SecureLinks fungerar på kärnnivå
SecureLinks kontrollerar om filsystem-nivå, om ägaren av en symbolisk länk stämmer överens med måldokumentet, och nekar åtkomst om tillhörigheten inte stämmer, vilket gör att jag kritiska Stigar tillförlitlig blockering. Denna metod ligger på en djupare nivå än applikationsfilter och försvårar knep som utförs via PHP, WebDAV eller FTP-klienter. Även om en webbapp uppvisar svagheter behåller kärnan kontrollen över länkföljningen. Jag utnyttjar denna fördel framför allt på hårt belastade delade servrar där många instanser körs parallellt. För en mer ingående beskrivning hänvisar jag till en utförlig översikt, som beskriver den grundläggande logiken och skyddsgränserna.
Systemkrav och kompatibilitet
I praktiken är det framför allt viktigt för mig hur väl SecureLinks fungerar tillsammans med vanliga konfigurationer. På moderna versioner av CloudLinux fungerar mekanismen stabilt med ext4 och XFS; i blandade miljöer med nätverksfilsystem (t.ex. NFS) testar jag särskilt noggrant, eftersom fjärrfilsystem kan uppvisa olika ägarsemantiker beroende på exportinställningarna. Virtualiseringslager som KVM eller VMware är inte kritiska, eftersom skyddet i gästsystemet gäller på kärnnivå. Viktigt: äldre kärnor kan benämna de skyddade länkswitcharna på ett annat sätt eller inte stödja dem fullt ut. Jag kontrollerar därför i god tid om de önskade parametrarna finns och om alla berörda tjänster (webbserver, PHP-FPM, Cron, skanner) arbetar med lokala sökvägar eller har tydligt definierade gränser via mount-alternativ.
Avgränsning och samverkan med andra skyddsåtgärder
SecureLinks utgör ingen konkurrens till mekanismer som SELinux eller . AppArmor, utan kompletterar dem. Medan MAC-policyer begränsar åtkomsten utifrån sammanhanget förhindrar SecureLinks specifikt att man klickar på „främmande“ länkar. På webbservernivå använder jag dessutom SymLinksIfOwnerMatch och inaktivera FollowSymLinks överallt där det är lämpligt. Dessa applikationspolicyer stoppar redan många attacker, men förlitar sig på att applikationerna är korrekt konfigurerade. Kernel-kontrollen förblir däremot oberoende av vHost- eller .htaccess-regler. Sammantaget skapas en robust kedja: CageFS isolerar kataloger, SecureLinks blockerar missbruk av länkar, webbservern tvingar fram korrekta sökvägsupplösningar och SELinux/AppArmor håller processerna inom sina gränser.
Viktiga kärnparametrar och lämpliga standardvärden
I praktiken använder jag riktade Sysctl-knappar som styr ägarkontrollen och skapandet av länkar, vilket gör att jag Åtkomstfel förhindrar systemomfattande. Särskilt relevanta är fs.enforce_symlinksifowner och fs.symlinkown_gid för strikt tillämpning av ägarmatchning. Dessutom begränsar jag skapandet av hårdlänkar och symboliska länkar med hjälp av särskilda protected-alternativ. Denna kombination stoppar typiska angreppsvägar tidigt i hanteringen av sökvägar. Följande översikt visar vanliga parametrar och deras effekt i praktiken.
| Parametrar | Syfte | Typiskt värde | Effekt |
|---|---|---|---|
| fs.enforce_symlinksifowner | Tvinga en ägarkontroll vid spårning av symboliska länkar | 1 | Processen får endast spåra länkar om länkens och målsidans ägare är samma person |
| fs.symlinkown_gid | Definiera GID:er som styr det strikta beteendet | typiskt: webbserverns GID | Begränsning av vilka grupper som omfattas av den strikta granskningen |
| fs.protected_symlinks_create | Förhindra skapandet av främmande symboliska länkar | 1 | Användare utan särskilda behörigheter får inte skapa symboliska länkar till filer som tillhör andra ägare |
| fs.protected_hardlinks_create | Blockera skapandet av främmande hårda länkar | 1 | Hardlink-baserade kringgåenden blockeras |
I praktiken: säkra standardvägar och sessioner
Många läckor uppstår i gemensamma kataloger. Därför separerar jag session.save_path, upload_tmp_dir och tillfälliga arbetskataloger per konto. Jag ställer in globalt skrivbara platser till ”strikt” med hjälp av sticky-bit (chmod 1777) och montera dem helst med nosuid,nodev,noexec, så att ingen kod körs även vid felaktig användning. Program som använder symboliska länkar för utgåvor (t.ex. ett current -> releases/xyz), fungerar fortfarande så länge länken och målet tillhör samma ägare. Däremot är teamkataloger, där flera användare skriver via en grupp, problematiska; här planerar jag att använda dedikerade GID:er och klargör för vilka GID:er SecureLinks ska kontrollera strikt. På så sätt förhindrar jag att legitima arbetsflöden misslyckas på grund av ägarkontrollen, utan att kompromissa med säkerheten.
Steg för steg: Aktivering och tester
I praktiken matar jag in parametrarna i Sysctl-konfigurationer, ladda dem med sysctl -p och kontrollera omedelbart Logg-Beteende vid teståtkomst. En snabb kontroll: Två användare, en testfil i målkontot, en symbolisk länk i angriparkontot – läsningen måste misslyckas. Parallellt kontrollerar jag webbserver-workers, PHP-FPM-pooler och filhanterare för att se om de avvisar åtkomsten som förväntat. Vid falska larm tittar jag på GID-tilldelningar och processidentiteter, eftersom felaktiga grupper kan omintetgöra matchningen. Först när testerna är reproducerbara utvidgar jag inställningen till en bredare skala.
Lanseringsstrategi och reservplan
Jag aktiverar aldrig SecureLinks „Big Bang“, utan stegvis: först i Revisionsläge (endast logganalys, om sådan finns tillgänglig) eller i testmiljöer, därefter på utvalda produktionsnoder under noggrann övervakning. Vid avvikelser kan jag via sysctl -w justerar inställningarna i realtid och återställer dem snabbt vid behov. Parallellt dokumenterar jag berörda sökvägar och GID:er så att jag kan skapa tydliga undantag. Konfigurationshantering (t.ex. via Ansible) säkerställer att identiska standardinställningar tillämpas överallt och att avvikelser undviks. Under underhållsfönstren planerar jag in korta omstarter av appen för att säkert genomföra gruppbyten i arbetsprocesserna.
Samverkan med CageFS och webbplatsisolering
SecureLinks förhindrar Missbruk av länkar, medan CageFS kapslar in kataloger per konto, vilket gör att jag kan ha flera Skikt Säkerhet upprätthålls. Denna kombination minskar sidledsrörelser drastiskt i miljöer med flera användare. Jag sätter först isolering och därefter länkskydd, så att båda nivåerna fungerar som de ska. För mer information om filsystemskapsling kan den kortfattade introduktionen till CageFS-isolering. Dessutom håller jag användarrättigheterna och PHP-hanterarna så restriktiva som möjligt.
Vanliga felaktiga inställningar och hur jag undviker dem
De vanligaste felen gäller felaktiga Grupper-ID:n, oklara ägarförhållanden i distributioner och inkonsekventa Symlink-Mål i skript. Därför kontrollerar jag innan aktivering om webbservern och PHP-poolerna körs med förväntade GID:er. Bygg- eller släppprocesser bör inte skapa kopplingar mellan användarkonton. Dessutom kontrollerar jag att säkerhetskopierings- och skadlig kod-skannrar fortfarande får utföra legitima åtkomstförsök. En tydlig plan för filägare förhindrar senare problem vid felsökning.
Handbok för felsökning och diagnoskommandon
Om något fastnar litar jag på kontroller som går att upprepa. Med namei -lx /sökväg/till/länken ser jag hela kedjan av upplösningar inklusive ägarförhållandena. stat ger mig ägare och läge för länken och målet. Via ps -o användare,grupp,kommando -p PID kontrollerar jag under vilken identitet en process faktiskt körs; avvikelser mellan föräldra- och arbetsprocesser är en vanlig orsak till överraskningar. Jag identifierar kärnmeddelanden i dmesg eller i loggfilen; ”Deny”-posterna innehåller vanligtvis sökvägen och UID/GID, vilket underlättar kopplingen till kontot. För mer ingående forensisk analys integrerar jag auditd och registrera filsystemets systemanrop kring de berörda sökvägarna för att skilja falska larm från verkliga attackförsök.
Prestanda- och kompatibilitetsaspekter
Den extra Kontrollera för ägaren medför endast små kostnader, som i förhållande till säkerhetsvinsten knappt i Vikten minskar. I miljöer med hög belastning observerar jag stabilt låga latenser. Det är fortfarande viktigt att testa specialiserade arbetsbelastningar som avsiktligt använder delade kataloger. För ökad selektivitet använder jag värdkoncept som separerar webbplatsinstanser ännu tydligare; tips om detta sammanfattas i artikeln om Fördelar med webbplatsisolering. Kompatibilitetsproblem uppstår oftast endast på grund av gamla skript som förlitar sig på osäkra länkar.
Övervakning, loggning och incidenthantering
Efter lanseringen kopplar jag samman Kärnan-Loggfiler med SIEM-regler, så att avvisningar vid länkföljningar omedelbart blir synliga, vilket Angrepp kan upptäckas snabbt. Användbara mätvärden är avvisade länkåtkomster per konto, frekvens per process och tidsfönster. Avvikelser tyder på exploateringsförsök eller felaktiga driftsättningar. När det gäller åtgärder har playbooks visat sig vara effektiva: spärra kontot tillfälligt, säkerhetskopiera artefakter, analysera sökvägar och korrigera behörigheter. Avslutningsvis dokumenterar jag orsaken och justerar konfigurationerna så att mönstret inte upprepas.
Integration med cPanel, Plesk och vanliga stackar
I den dagliga driften av webbhotell körs webbservrar, PHP och stödtjänster ofta med egna tjänstanvändare (apache, nginx, lshttpd) och gruppbaserade pool-ID:n. Jag lägger till fs.symlinkown_gid så strikt att webbserveranvändaren och kundernas FPM-arbetare omfattas av den strikta kontrollen. Vid PHP-FPM per användare eller LSAPI per konto uppstår sällan konflikter, eftersom arbetarna ändå körs under respektive kundkonto. Mer kritiska är globala skannrar, säkerhetskopior eller cacher (Composer, NPM) som skriver centralt; här planerar jag undantag på ett målinriktat sätt eller flyttar artefakter till kataloger per konto. I kontrollpaneler som cPanel eller Plesk kontrollerar jag dessutom valet av PHP-hanterare (suEXEC, FPM, LSAPI) och ser till att ingen „global“ hanterare oavsiktligt får läsa främmande filer.
Vanliga frågor från praktiken
Många administratörer undrar om SecureLinks alla Symlänkar blockerade – det stämmer inte, eftersom delade länkar inom en Konton fortsätter att fungera. Det avgörande är att länkens och filens ägare stämmer överens. En annan vanlig fråga: Räcker det med app-nivå? Mitt svar är ett klart nej, eftersom kärnkontroller förhindrar kringgående via webb- eller skriptlogik. Kombinationen av isolering, minimala behörigheter och SecureLinks höjer tröskeln för angripare märkbart.
Särskilda fall och bästa praxis för team och driftsättningar
I team med delade repositorier och byggsystem ser jag till att releaser sker inom samma konto. Symlink-strukturer av Capistrano-typ är inga problem så länge de förblir en enda användares egendom. Jag förbjuder strikt länkar mellan konton och ersätter dem med väldefinierade gränssnitt (API, HTTP, meddelandeköer). För grupparbetskataloger använder jag dedikerade projekt-GID:er, tydliga umask-värden och kontrollera om den strikta SecureLinks-kontrollen ska tillämpas för dessa GID:er eller inte. På så sätt upprätthålls balansen mellan samarbete och säkerhet. Vid lagring via NFS väljer jag exportalternativ som säkerställer ägarkonsistens (inga anonymiserade mappningar för produktiva sökvägar) och testar om länkkontrollerna fungerar som förväntat. För containerarbetsbelastningar dokumenterar jag monteringsvägarna noggrant så att inga oönskade genvägar uppstår mellan hyresgästerna.
Bedömning och sammanfattning
CloudLinux SecureLinks ger mig en klar Skydd mot missbruk av symlänkar och hårdlänkar, eftersom kärnan fattar det slutgiltiga beslutet om åtkomst till sökvägar och därmed Olika sätt att angripa tillförlitligt blockerade. I delade webbhotellsmiljöer med många konton ger denna kontroll omedelbar nytta. Genomtänkta standardinställningar, tydliga ägarstrategier och tester säkerställer den dagliga driften. Tillsammans med CageFS, strikta PHP-hanterare och loggövervakning skapas ett flerlagrigt skydd som avsevärt minskar risken för driftstopp och dataläckor. Den som ansvarar för webbhotell bör helst betrakta SecureLinks som en fast del av grundsäkerheten och därmed på ett hållbart sätt öka förtroendet, tillgängligheten och anseendet.


