Veeam Backup and Replication MFA – és annak támadó felfogású kikapcsolása

A Veeam már igen régóta adós az többfaktoros authentikáció megvalósításával a termékeiben. A 12-es főverzióval a Backup and Replication termékben lehetővé is tette a használatát. Jelenleg csak authentikátoros verziót támogat, TOTP ugye. Bevezetéséhez sok dolog nem kell:

  • a Backup Server alatt szolgáló Microsoft Windows operációs rendszer órája járjon jól – mondjuk NTP-n kapjon időt egy megbízható helyről.
  • Veeam-ben a jogosultságoknál nem lehet csoport, csak felhasználó
  • amennyiben például Enterprise Manager vagy valamilyen 3rd party és API-n megvalósított kapcsolatot biztosít meg egy felhasználó, akkor arra nem lehet – mármint be lehet csak nem fog működni – az MFA-t.

A bemutatásához telepítettem egy Veeam Backup and Replication szervert és persze az immáron MS SQL Express helyett a postgreSQL opciót választottam. A kiszolgáló nem tagja domain-nek, ez már korábban is erősen javasolt volt, jobb csökkenteni a támadási felületeket.

Létrehoztam – a default Administrator – mellett két felhasználót a Windows-ban, nem tagjai az Administrator csoportnak:

  • user1
  • user2

A jogosultságok így néznek ki az MFA előtt:

Az MFA bekapcsolása egyetlen mező kiválasztásával elvégezhető, méghozzá a “Require two-factor authentication for interactive logon” segítségével. Ezek után maximum a felhasználókra egyedileg tudjuk azt kikapcsolni.

A Veeam konzol indítása után továbbra is Administrator felhasználóval lépek be.

Rögvest meg is jelenik egy ablak, hogy egy általam választott alkalmazással olvassam be a megjelenített QR-kódot vagy írjam be a string-et.

Ha készen vagyok, akkor a következő ablakban már kéri is a TOTP-t.

Bevezetni tényleg ennyire könnyű. De álljunk meg egy pillanatra, hogyan tudom egyszerűen megnézni, hogy bár én bekapcsoltam már, de ténylegesen mely felhasználók léptek már be MFA-val eddig. Félreértés ne essék, MFA nélkül nem lehet belépni, engem az érdekel, hogy mostanában léptek-e be és nem akarok naplót olvasgatni.

Nézzük meg a postgre-be! Rengeteg tábla van ami érdekes lehet, de engem első körben a “backup.security.accounts” érdekel.

Látszik is a három felhasználóm – illetve egy csoport is, bár azt törölni kellett Veeam jogosultságok közül az MFA miatt.

Az account és role összerendelést a “backup.security.roleaccounts” tábla adja meg. Azaz a “backup.security.accounts” tábla “id” mezője itt van összerendelve a “role_id” val.

A “role_id” pedig megadja melyik szerepkörről van szó.

Nézzük meg, akkor ki használta már az MFA-t, mióta kötelezővé tettük neki. Látható, hogy bizony az “Administrator” már használta, de a user1 és user2 azóta még be sem lépett. Ennek kiderítésére én a GUI-n nem találtam semmiféle módot, pedig elég hasznos.

Akkor most jöjjön az a rész, hogy letörlöm a user1 és user2-t és marad csak az Administrator. Aztán az Administrator elveszti a telefonját és nincs szinkronizálva az authenticator-a. Lényegében zárjuk ki magunkat.

Ezzel meg is vagyunk:

Ezen a ponton nem tudok belépni Veeam-be. A Backup Server alatti Microsoft Windows Server-be adminisztrátori jogosultsággal bírok, de a Veeam nem enged be. Lőjük ki hát a postgresql oldaláról. Pusztán az “is_mfa_enabled” és az “is_activated” mezőt kell átírni.

Ha ez készen van, akkor a Veeam konzol már nem is kér kódot, egyből kapcsolódik a szolgáltatáshoz, mintha sose lett volna MFA bekapcsolva. Kizártam magam, de SQL-ben átírtam és bejutottam.

Ez utóbbit olvassuk el újra. A Veeam biztonságosságához mindenképpen a teljes képet kell látni és biztosítani az alatta lévő operációs rendszer sértetlenségét és sérthetetlenségét. Ha a támadó bejut a Windows Server-re, akkor onnan a postgres felhasználóval, simán kilövi az MFA-t és már bent is van a Veeam konzolban. Ez nem a Veeam problémája, mert mit tud tenni, ha valaki mögötte átírja az általa használt adatbázist.

Általános javaslatként talán annyi, hogy inkább használjuk a Veeam Backup Server-től független PostgreSQL-t, hiszen ha ő maga telepíti – vagy mi kézzel – akkor a Windows-ban lévő Administrator felhasználó jelszavának ismeretében a postgresql-hez történő kapcsolódás is azonos jelszóval – SSO-val történik.

És gyakorlatilag ezen a ponton a bekapcsolt MFA sem ér semmit, mert simán ki lehet kapcsolni. Az operációs rendszeren implementált MFA is legalább olyan fontos mint a Veeam MFA-sítása, ugyanakkor még a külön szerveren futó postgre sem megoldás, mert ha megtörik a Veeam Backup szerver alatt az OS-t, akkor abból kinyerhető olyan információ, amivel hozzá tudunk férni a Veeam nevében az adatbázishoz és ugyanígy kilőhető az MFA. Végső soron ez csak egy tapasz, hogy el lehessen mondani van, de egyáltalán nem megoldás semmire, nemad semmi szignifikáns növekményt a mentőrendszer biztonságában, sokkal átfogóbban kell gondolkodni.