Využijte rámec Go’s Gin k zabezpečení svých webových aplikací pomocí seznamu povolených IP adres.

V moderní sféře internetových technologií je důležité zajistit bezpečnost webových aplikací a servery nelze přeceňovat, protože frekvence a sofistikovanost kybernetických útoků stále roste zvýšit. Z tohoto důvodu také roste potřeba robustních a špičkových bezpečnostních opatření pro webové systémy.

Whitelisting IP adres je jednou z mnoha moderních technik pro zabezpečení webových aplikací, serverů a API. Ačkoli je používá se pouze v některých specifických případech, je to doporučený způsob, jak zajistit omezení přístupu ke zdrojům na internetu, když potřeboval.

Co je seznam povolených IP adres?

IP whitelisting je prostě a typ bílé listiny které lze označit jako webové bezpečnostní opatření používané k omezení přístupu k síti nebo prostředku na definovanou IP adresu nebo rozsah IP adres považovaných za oprávněné pro přístup do systému.

Když je v systému implementován seznam povolených IP adres, mají k systému a zdrojům v něm přístup pouze adresy IP, které jsou přidány do seznamu povolených, zatímco ostatní adresy IP jsou blokovány.

instagram viewer

Seznam povolených IP adres je velmi běžný způsob zabezpečení velmi důležitých dat, která by měla být dostupná pouze jednotlivci nebo určité skupině lidí a měla by být chráněna před jakýmkoli pokusem o hackování.

Běžným příkladem whitelistingu IP je v MongoDB Atlas, kde jste nastavit databázový cluster Mongo v cloudu a budete vyzváni k přidání vaší aktuální IP adresy do seznamu, takže požadavky na vaši databázi nebo cluster budou povoleny pouze tehdy, když pocházejí z vašeho počítače.

Kdy byste měli implementovat seznam povolených IP adres?

Seznam povolených IP adres není něco, co potřebuje každý systém nebo aplikace. Existují případy, kdy je doporučeno a vhodné jej implementovat do aplikace nebo systému. Následuje několik příkladů scénářů, kdy byste měli zvážit implementaci seznamu povolených IP adres.

  • Když je aplikace určena pouze pro použití určitou skupinou uživatelů, jako jsou zaměstnanci nebo zákazníci konkrétní společnosti.
  • Pokud chcete, aby byla aplikace přístupná pouze z určitého umístění, můžete přidat na seznam povolených rozsah adres IP specifických pouze pro toto umístění.
  • Když se aplikace používá k poskytování přístupu k důvěrným informacím nebo duševnímu vlastnictví, jako je výzkumná databáze nebo proprietární software.
  • Když je aplikace soukromá, ale přístupná přes internet a potřebuje být chráněna před vnějšími hrozbami, jako jsou DDoS útoky nebo infekce malwarem.
  • Když je aplikace hostována na veřejné cloudové platformě a musí být chráněna před neoprávněným přístupem ostatních nájemců nebo uživatelů platformy.
  • Když je aplikace používána v regulovaném odvětví, jako je zdravotnictví nebo finance, kde je vyžadována shoda s bezpečnostními standardy.

Existuje mnohem více případů, ale v zásadě, kdykoli má aplikace některou z výše uvedených vlastností, měli byste zvážit implementaci seznamu povolených IP adres.

Jak implementovat IP Whitelisting v Go

Go je populární moderní programovací jazyk pro tvorbu webových serverů a API dodávané se vším, co potřebujete k vytvoření standardní a zabezpečené webové aplikace.

Tato část ukazuje použití rámce Go’s Gin k implementaci ukázkového serveru a logiky whitelistingu IP, což je funkce middlewaru. Rámec Gin můžete nainstalovat do projektu spuštěním následujícího příkazu.

přejděte na github.com/gin-gonic/gin

Po instalaci rámce Gin můžete nyní přistoupit k implementaci middlewaru IP whitelisting. Nový soubor middlewaru můžete vytvořit kdekoli v projektu v závislosti na architektuře projektu. Zde je implementace funkce middlewaru:

balík middleware

import (
"github.com/gin-gonic/gin"
"net/http"
)

funcIPWhiteListMiddleware(bílá listina mapa[tětiva]bool)gin.HandlerFunc {
vrátit sefunc(c *gin. Kontext) {
userIP := c. ClientIP()

-li !whitelist[userIP] {
C. AbortWithStatusJSON(http. StavZakázáno, gin. H{
"chyba": "Nemáte oprávnění k přístupu k tomuto zdroji!",
})
} jiný {
C. Další()
}
}
}

Ve výše uvedeném kódu je IPWhiteListMiddleware funkce je definována tak, aby akceptovala definovaný seznam povolených IP adres jako argument. Whitelist je implementován jako struktura mapových dat, takže IP adresám lze snadno přiřadit hodnoty skutečný a Nepravdivé k označení jejich přístupnosti.

Poté funkce používá rámec Gin ClientIP funkce pro získání aktuální IP adresy uživatele, který se pokouší provést požadavek, a zkontroluje, zda je přítomna na seznamu povolených a pomocí skutečný hodnota. Pokud není nalezen, nebo se zjistí, že má hodnotu Nepravdivémiddleware přeruší požadavek a vrátí chybu 403 (Zakázáno).

Je možné implementovat ukázkový koncový bod pro testování této funkce, abyste viděli, jak funguje seznam povolených IP adres. Následující kód je program, který definuje whitelist a implementuje dva koncové body (omezený a neomezený).

balík hlavní

import (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middlewares"
"net/http"
)

var IPWhitelist = mapa[tětiva]bool{
"127.0.0.1": skutečný,
"111.2.3.4": skutečný,
"::1": skutečný,
}

funchlavní() {
router := gin. Výchozí()

router. DOSTAT("/index", func(c *gin. Kontext) {
C. JSON(http. Stav OK, gin. H{
"zpráva": "Vítejte v mé zabezpečené aplikaci!",
})
})

limitedPage := router. Skupina("/")
omezená stránka. Použití (middleware. IPWhiteListMiddleware (IPWhitelist))

omezená stránka. DOSTAT("/adminZone", func(c *gin. Kontext) {
C. JSON(http. Stav OK, gin. H{
"zpráva": "Tento koncový bod je zabezpečen pomocí IP whitelisting!",
})
})

router. Běh(":3333")
}

Když je aplikace spuštěna s běž spustit main.go, server se spustí na portu 3333 a můžete spouštět testovací požadavky na /adminZone koncový bod, abyste viděli, jak middleware funguje. Můžete také přepínat hodnotu IP localhost v seznamu povolených mezi skutečný a Nepravdivé.

Zde je ukázkový požadavek, který ukáže, kdy IP adresa není na seznamu povolených nebo kdy je její hodnota v seznamu povolených nastavena na Nepravdivé:

Zde je další požadavek na to, kdy je IP adresa přítomna v seznamu povolených IP s hodnotou nastavenou na skutečný:

Pokud program otestujete přidáním obecné IP adresy localhost (127.0.0.1), můžete obdržet chybovou odpověď 403 (Zakázáno). Adresa IP, která bude s největší pravděpodobností fungovat lokálně, je ::1 což je ekvivalent IPv6 k 127.0.0.1 (Ipv4). Zkuste přidat na seznam povolených ::1 pokud 127.0.0.1 odmítne fungovat, a můžete se také pokusit přihlásit userIP proměnnou v konzole, abyste viděli přesnou používanou adresu.

Zabezpečení webových aplikací pomocí seznamu povolených IP adres

V dnešním světě je bezpečnost webových aplikací a systémů nanejvýš důležitá, protože technologie se neustále vyvíjejí. Seznam povolených IP adres je velmi jednoduchý a účinný způsob, jak omezit přístup ke zdrojům na internetu pouze na důvěryhodné zdroje.

Až dosud v tomto článku byl koncept whitelistingu IP adres podrobně popsán, kdy jej implementovat a jak jej implementovat v Go pomocí frameworku Gin. Doporučuje se implementovat IP whitelisting pouze tam, kde je to vhodné, aby se předešlo zbytečným technickým nákladům.