NILFS2 är ett skottsäkert filsystem för /home

NILFS2 är ett skottsäkert filsystem för /home

Som ni vet, om problem kan hända, kommer det definitivt att hända. Förmodligen har alla haft fall då en viktig fil nyligen raderades av misstag, eller text av misstag valdes ut och förstördes i en textredigerare.

Om du är en värd eller webbplatsägare har du förmodligen stött på hacking av användarkonton eller din webbplats. I sådana fall är det viktigt att återställa kronologin, hitta metoden för inmatning och sårbarheten som angriparen använder.

Filsystemet NILFS2 är perfekt för att lösa sådana problem.

Den har funnits i Linux-kärnan sedan version 2.6.30.

Det speciella med detta filsystem är att det liknar ett versionskontrollsystem: du kan alltid rulla tillbaka systemets tillstånd och titta på hur det såg ut för en tid sedan.

För att tillhandahålla denna funktion behöver du inte konfigurera Cron-skript, ta ögonblicksbilder etc. NILFS2-filsystemet gör detta helt själv. Den skriver aldrig över gamla data och skriver alltid till nya delar av disken om det finns tillräckligt med ledigt diskutrymme. Helt i enlighet med Copy-on-Write-principen.

Faktum är att varje ändring av en fil automatiskt skapar en ny ögonblicksbild av filsystemet, så att du kan använda denna FS som en tidsmaskin och spola tillbaka tillståndet för filer.

Story

NILFS2 är ett skottsäkert filsystem för /homeNILFS2 utvecklades i djupet av Nippon Telegraph and Telephone Corporation, i själva verket det statligt ägda (det har en kontrollerande andel) och det största telekommunikationsföretaget i Japan. Mer specifikt i CyberSpace Laboratories under ledning Ryusuke Konishi.

Exakt vad den utvecklades för är okänt, men man kan anta att en sådan FS, med sin "tidsmaskin" funktionalitet, är idealisk för att lagra data som underrättelsetjänsterna kanske vill gräva i för att spela upp hela bilden av SMS, mejl osv....

NILFS2 är också potentiellt ett mycket värdefullt verktyg för interna säkerhetstjänster, eftersom det låter dig återställa alla raderade brev i e-postdatabasen, och avslöjar de anställda som senare kan försöka dölja dem genom att ta bort eller ändra deras filer.

Hur kan du spåra hela din korrespondenshistorik?På Linux-servrar (och det är här NILFS2 ska installeras för interna säkerhetssyften) används filmetoden för att lagra e-postmeddelanden mycket ofta för att lagra e-postmeddelanden. Det så kallade formatet Maildir. Tillräckligt att sätta Courier Mail Server och konfigurera e-postlagring i Maildir. Annat format mbox är en stor textfil som enkelt kan tolkas till enskilda meddelanden.

Om e-postservern använder en databas, kommer NILFS2 att göra det möjligt att återställa den exakta tidpunkten för databasändringar och möjligheten att återställa databasen vid något av dessa ögonblick. Och sedan måste du använda databasverktyg för att se vad som fanns i den vid den tidpunkten...

Något gick dock fel. Antingen ändrade den japanska regeringen uppfattning om att övervaka alla (a la Yarovaya-principen), eller så visade sig prestandan för NILFS2 på traditionella hårddiskar vara under pari, och NILFS2 släpptes under GPL-licensen och kom mycket snabbt in i Linux-kärnan, eftersom det fanns inga särskilda klagomål om koden skriven högkvalificerad japanska, utvecklarna av Linux-kärnan hade det inte.

Hur är NILFS2?

Ur användningssynpunkt: på ett versionskontrollsystem SVN. Varje FS-kontrollpunkt är en commit som görs automatiskt utan användarens vetskap när det sker någon ändring: oavsett om det är radering, ändring av innehållet i en fil eller ändring av åtkomsträttigheter. Varje commit har ett tal som ökar linjärt.

Ur en programmerares synvinkel: en cirkulär buffert. Filsystemet ackumulerar ändringar och skriver dem i en bit lika med cirka 8 MB (2000 * 4096, där 2000 är antalet element i blocket och 4096 är storleken på minnessidan). Hela skivan är uppdelad i sådana bitar. Inspelningen fortsätter sekventiellt. När ledigt utrymme tar slut raderas de äldsta ögonblicksbilderna och bitarna skrivs över.

Grundläggande NILFS2-godsaker

  • Versionering!!!
  • Proceduren för att återställa ett filsystem efter ett fel är enkel: vid laddning söks den sista biten som har rätt kontrollsumma och ett superblock installeras på den. Detta är en nästan omedelbar operation.
  • På grund av det faktum att inspelningen alltid fortsätter linjärt, då:
    • kan visa bra resultat när du kör på en SSD med långsam slumpmässig skrivning.
    • NILFS2 sparar SSD-resurser, eftersom det nästan inte finns någon skrivmultiplikationsfaktor.
      Mer exakt är det inte mer än 2.Faktum är att när man cykliskt skriver om hela disken, kommer NILFS2 att överföra oföränderlig data till nya bitar (bitar).

      Om vi ​​har 10% oföränderlig data på disken, kommer vi att få en skrivökning på 10% med 1 fullständig omskrivning. Tja, en ökning med 50 % vid 50 % fyllighet av enheten för 1 fullständig omskrivning av disken.

      Den maximala skrivförstärkningen är 2. Detta är mycket lågt med tanke på att allt skrivs sekventiellt. I allmänhet kommer skrivanimationen att vara mindre än för ett konventionellt fragmenterat filsystem med en 4096-byte sektor. (Tänke inspirerad av kommentar).

  • Potentiell enkel implementering av replikering till en fjärransluten NILFS2 FS

NILFS2 för /hem

I Unix-liknande operativsystem finns det som regel en /home-mapp där användardata lagras. Olika program sparar sina användarspecifika inställningar i den här mappen.

Och vem, om inte användare, gör fel oftast? Därför, som de säger, beordrade Gud själv användningen av NILFS2 på /home.

Dessutom, med den utbredda användningen av SSD:er, behöver vi nu inte längre oroa oss för allvarliga neddragningar när vi använder CoW-filsystem.

Ja, vi kan skapa FS-ögonblicksbilder så ofta vi vill i ZFS och BTRFS, men det finns alltid en risk att en förlorad filändring hamnar mellan ögonblicksbilderna. Och bilderna måste fortfarande administreras: gamla måste raderas. I NILFS2 sker allt detta automatiskt, bokstavligen med några sekunders mellanrum.

Jag skapade en logisk volym med lvcreate (i volymgruppen nvme, thin pool thin). Jag rekommenderar att du skapar den på lvm-volymen, eftersom den enkelt kan utökas senare. Jag rekommenderar att ha 50 % ledigt diskutrymme med NILFS2 för anständigt versionsdjup.

lvcreate -V10G -T nvme/thin -n home

och formaterade den i NILFS2:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Efter detta måste du kopiera all data från nuvarande /home.

Jag gjorde detta direkt efter att ha startat upp datorn, innan jag loggade in på mitt konto, som root-användare. Om jag skulle logga in som min användare skulle vissa program öppna sockets och filer i min användares /home/user-mapp, vilket skulle göra en ren kopia svår. Som du vet är hemmappen för rotanvändaren vanligtvis placerad på /root-sökvägen, så inga filer öppnas på /home-partitionen.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

För sista raden, se Artikel.

Därefter redigerar vi /etc/fstab, där filsystemet för /home är monterat, till

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

alternativ noatime behövs för att förbättra prestandan så att tiden inte ändras med varje filåtkomst. Därefter startar vi om.

Typer av bilder i NILFS2.

En vanlig ögonblicksbild utan immunitet mot radering kallas en kontrollpunkt eller återställningspunkt.
En ögonblicksbild som är skyddad från automatisk radering kallas en ögonblicksbild, sedan helt enkelt en ögonblicksbild.

Visning av kontrollpunkter görs med kommandot lscp

Visa ögonblicksbilder lscp -s

Vi kan skapa ögonblicksbilder och kontrollpunkter själva när som helst med hjälp av:

mkcp [-s] устройство

Vi återställer data.

NILFS tillåter oss att montera så många gamla snapshots som vi vill parallellt med att arbeta med FS-huvudgrenen. Men bara i läsläge.

Allt är ordnat så här. Vanliga kontrollpunkter som NILFS2 gör kan automatiskt raderas när som helst (när diskutrymmet tar slut eller enligt nilfs_cleanerd-reglerna), så innan installationen måste vi konvertera kontrollpunkten till en ögonblicksbild eller, på rysktalande, ta ögonblicksbilden.

chcp ss номер_чекпоинта

Efter det kan vi montera ögonblicksbilden, till exempel så här:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

Därefter kopierar vi de återställda filerna från ögonblicksbilden till /home.
Och därefter tar vi bort den oraderbara flaggan från ögonblicksbilden så att den automatiska sophämtaren i framtiden kan ta bort föråldrad data:

chcp cp номер_чекпоинта

Verktyg för NILFS2

Men detta är problemet. Ja, naturligtvis, vi kan skapa ett filsystem, ändra dess storlek online, se listan med utmaningspunkter, skapa och ta bort dem. Nilfs2-utils-paketet ger en minimal gentleman's set.

Eftersom NTT har minskat sin finansiering finns det inga snabba lågnivåverktyg som låter dig visa historiken för filändringar eller göra skillnad mellan ögonblicksbilder.

Mitt n2u-verktyg

För att fylla detta vakuum skrev jag ditt n2u-verktyg, som kan visa historiken för ändringar av en specifik fil/katalog:

n2u log filename

Utgången är ungefär så här:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

Det fungerar ganska snabbt för den valda implementeringsmetoden: den letar efter skillnader mellan filer med hjälp av bisektionsmetoden, snabbt monterar och jämför filen/katalogen i olika ögonblicksbilder.

Du kan ställa in ett antal kontrollpunkter med knappen -cp CP1:CP2 eller -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Du kan också se skillnaden mellan kontrollpunkter för en specifik fil eller katalog:

n2u diff -r cp1:cp2 filename

Du kan visa hela kronologin av ändringar: alla skillnader mellan kontrollpunkterna för en specifik fil/katalog:

n2u blame [-r cp1:cp2] filename

Datumintervall i detta kommando stöds också.

Ett rop till utvecklarna

Det finns många specialister på Habré. Vänligen avsluta NILFS2. Gör replikering, snabb skillnad på låg nivå mellan revisioner, återlänk och andra godsaker!

referenser

Officiell NILFS-webbplats.

Förvaringsplatser:
NILFS2.
NILFS2 verktyg och moduler.

Nyhetsbrev:
E-postnyhetsbrev för NILFS2-utvecklare. ID för linux-nilfs-prenumeration.
Nyhetsbrevsarkiv.

nilfs_cleanerd installationsguide.
Benchmarking EXT4, Btrfs, XFS & NILFS2 prestandatester.

Tack:

  • NILFS2-utvecklare: Ryusuke Konishi, Koji Sato, Naruhiko Kamimura, Seiji Kihara, Yoshiji Amagai, Hisashi Hifumi och Satoshi Moriai. Andra stora bidragsgivare är: Andreas Rohner, Dan McGee, David Arendt, David Smid, dexen deVries, Dmitry Smirnov, Eric Sandeen, Jiro SEKIBA, Matteo Frigo, Hitoshi Mitake, Takashi Iwai, Vyacheslav Dubeyko.
  • Till Amblin Entertainment och Universal Pictures för en underbar serie filmer. "Tillbaka till framtiden". Den första bilden på inlägget är tagen från filmen "Back to the Future 3".
  • företaget RUVDS för stöd och möjlighet att publicera på din blogg på Habré.

PS Vänligen skicka eventuella fel du märker i ett privat meddelande. Jag ökar min karma för detta.

Du kan experimentera med NILFS2 genom att beställa en virtuell maskin från RUVDS med kupongen nedan. För alla nya kunder finns en gratis provperiod på 3 dagar.

NILFS2 är ett skottsäkert filsystem för /home

Källa: will.com

Lägg en kommentar