Διασφάλιση εφαρμογών Ιστού Golang με χρήση της λευκής λίστας IP

Διασφάλιση εφαρμογών Ιστού Golang με χρήση της λευκής λίστας IP
Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Στη σύγχρονη σφαίρα της τεχνολογίας του Διαδικτύου, η σημασία της διασφάλισης της ασφάλειας των διαδικτυακών εφαρμογών και των διακομιστών δεν μπορεί να υπερεκτιμηθεί καθώς η συχνότητα και η πολυπλοκότητα των επιθέσεων στον κυβερνοχώρο συνεχίζουν να αυξάνονται. Εξαιτίας αυτού, αυξάνεται επίσης η ανάγκη για ισχυρά και πρωτοποριακά μέτρα ασφαλείας για συστήματα που βασίζονται στο διαδίκτυο.





ΚΑΤΑΣΚΕΥΗ ΒΙΝΤΕΟ ΤΗΣ ΗΜΕΡΑΣ ΚΥΛΙΣΤΕ ΓΙΑ ΝΑ ΣΥΝΕΧΙΣΕΤΕ ΜΕ ΠΕΡΙΕΧΟΜΕΝΟ

Η επιτρεπόμενη λίστα διευθύνσεων IP είναι μία από τις πολλές σύγχρονες τεχνικές για την ασφάλεια εφαρμογών ιστού, διακομιστών και API. Αν και χρησιμοποιείται μόνο σε ορισμένες συγκεκριμένες περιπτώσεις, είναι ένας συνιστώμενος τρόπος για να εξασφαλιστεί ο περιορισμός της πρόσβασης σε πόρους στο διαδίκτυο όταν χρειάζεται.





Τι είναι η επιτρεπόμενη λίστα IP;

Η επιτρεπόμενη λίστα IP είναι απλώς α τύπος επιτρεπόμενης λίστας που μπορεί να αναφέρεται ως μέτρο ασφάλειας ιστού που χρησιμοποιείται για τον περιορισμό της πρόσβασης σε ένα δίκτυο ή έναν πόρο σε μια καθορισμένη διεύθυνση IP ή εύρος διευθύνσεων IP που θεωρούνται εξουσιοδοτημένες για πρόσβαση στο σύστημα.





Όταν η επιτρεπόμενη λίστα IP εφαρμόζεται σε ένα σύστημα, μόνο οι διευθύνσεις IP που προστίθενται στη λίστα επιτρεπόμενων μπορούν να έχουν πρόσβαση στο σύστημα και τους πόρους σε αυτό, ενώ άλλες διευθύνσεις IP είναι αποκλεισμένες.

Η επιτρεπόμενη λίστα IP είναι ένας πολύ κοινός τρόπος για την εξασφάλιση πολύ κρίσιμων δεδομένων που θα πρέπει να είναι διαθέσιμα μόνο σε ένα άτομο ή σε ένα δεδομένο σύνολο ατόμων και να προστατεύονται από οποιαδήποτε απόπειρα εισβολής.



είναι premiumin αξίζει τον κόπο για όσους αναζητούν εργασία

Ένα συνηθισμένο παράδειγμα επιτρεπόμενης λίστας IP είναι στο MongoDB Atlas όπου βρίσκεστε δημιουργήστε ένα σύμπλεγμα βάσεων δεδομένων Mongo στο cloud και θα σας ζητηθεί να προσθέσετε την τρέχουσα διεύθυνση IP σας σε μια λίστα, έτσι ώστε τα αιτήματα στη βάση δεδομένων ή στο σύμπλεγμα σας να επιτρέπονται μόνο όταν προέρχονται από τον υπολογιστή σας.

Πότε πρέπει να εφαρμόσετε τη Λευκή λίστα IP;

Η επιτρεπόμενη λίστα IP δεν είναι κάτι που χρειάζεται κάθε σύστημα ή εφαρμογή. Υπάρχουν περιπτώσεις όπου συνιστάται και ενδείκνυται η εφαρμογή του σε μια εφαρμογή ή σύστημα. Ακολουθούν ορισμένα παραδείγματα σεναρίων όπου θα πρέπει να εξετάσετε το ενδεχόμενο εφαρμογής μιας λευκής λίστας IP.





  • Όταν η εφαρμογή προορίζεται για χρήση μόνο από μια συγκεκριμένη ομάδα χρηστών, όπως υπάλληλοι ή πελάτες μιας συγκεκριμένης εταιρείας.
  • Όταν θέλετε η εφαρμογή να είναι προσβάσιμη μόνο από μια συγκεκριμένη τοποθεσία, μπορείτε να προσθέσετε στη λίστα επιτρεπόμενων μια σειρά από διευθύνσεις IP που αφορούν μόνο τη συγκεκριμένη τοποθεσία.
  • Όταν η εφαρμογή χρησιμοποιείται για την παροχή πρόσβασης σε εμπιστευτικές πληροφορίες ή πνευματική ιδιοκτησία, όπως μια βάση δεδομένων έρευνας ή ιδιόκτητο λογισμικό.
  • Όταν η εφαρμογή είναι ιδιωτική αλλά προσβάσιμη μέσω Διαδικτύου και πρέπει να προστατεύεται από εξωτερικές απειλές, όπως επιθέσεις DDoS ή μολύνσεις από κακόβουλο λογισμικό.
  • Όταν η εφαρμογή φιλοξενείται σε μια δημόσια πλατφόρμα cloud και πρέπει να προστατεύεται από μη εξουσιοδοτημένη πρόσβαση από άλλους ενοικιαστές ή χρήστες της πλατφόρμας.
  • Όταν η εφαρμογή χρησιμοποιείται σε έναν ρυθμιζόμενο κλάδο, όπως η υγειονομική περίθαλψη ή τα χρηματοοικονομικά, όπου απαιτείται συμμόρφωση με τα πρότυπα ασφαλείας.

Υπάρχουν πολλές περισσότερες περιπτώσεις, αλλά ουσιαστικά, κάθε φορά που μια εφαρμογή έχει κάποια από τις ιδιότητες που αναφέρονται παραπάνω, τότε θα πρέπει να σκεφτείτε να εφαρμόσετε μια λευκή λίστα IP.

Πώς να εφαρμόσετε τη Λευκή λίστα IP στο Go

Η Go είναι μια δημοφιλής σύγχρονη γλώσσα προγραμματισμού για την κατασκευή διακομιστών Ιστού και API σε πακέτο με όλα όσα χρειάζεστε για να δημιουργήσετε μια τυπική και ασφαλή εφαρμογή Ιστού.





Αυτή η ενότητα δείχνει τη χρήση του πλαισίου Go's Gin για την υλοποίηση του δείγματος διακομιστή και της λογικής επιτρεπόμενης λίστας IP που είναι μια λειτουργία ενδιάμεσου λογισμικού. Μπορείτε να εγκαταστήσετε το πλαίσιο Gin σε ένα έργο εκτελώντας την ακόλουθη εντολή.

 go get github.com/gin-gonic/gin 

Μετά την εγκατάσταση του πλαισίου Gin, μπορείτε τώρα να προχωρήσετε στην εφαρμογή του ενδιάμεσου λογισμικού της λίστας επιτρεπόμενων IP. Μπορείτε να δημιουργήσετε ένα νέο αρχείο ενδιάμεσου λογισμικού οπουδήποτε στο έργο σας, ανάλογα με την αρχιτεκτονική του έργου σας. Ακολουθεί η υλοποίηση της συνάρτησης ενδιάμεσου λογισμικού:

 package middlewares 

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

func IPWhiteListMiddleware(whitelist map[string]bool) gin.HandlerFunc {
    return func(c *gin.Context) {
        userIP := c.ClientIP()

        if !whitelist[userIP] {
            c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
                "error": "You are not authorized to access this resource!",
            })
        } else {
            c.Next()
        }
    }
}

Στον παραπάνω κώδικα, το IPWhiteListMiddleware Η συνάρτηση έχει οριστεί για να δέχεται μια καθορισμένη λίστα επιτρεπόμενων διευθύνσεων IP ως όρισμα. Η λίστα επιτρεπόμενων υλοποιείται ως δομή δεδομένων χάρτη, έτσι ώστε να μπορούν εύκολα να εκχωρηθούν τιμές στις διευθύνσεις IP αληθής και ψευδής για να υποδείξουν την προσβασιμότητά τους.

Στη συνέχεια, η συνάρτηση χρησιμοποιεί το πλαίσιο του Gin ClientIP λειτουργία για να πάρει την τρέχουσα διεύθυνση IP του χρήστη που προσπαθεί να υποβάλει το αίτημα και ελέγχει εάν υπάρχει στη λίστα επιτρεπόμενων και με αληθής αξία. Αν δεν βρεθεί ή αν βρεθεί ότι έχει τιμή ψευδής , το ενδιάμεσο λογισμικό ματαιώνει το αίτημα και επιστρέφει ένα σφάλμα 403 (Απαγορευμένο).

Ένα δείγμα τελικού σημείου για τη δοκιμή αυτής της λειτουργικότητας μπορεί να εφαρμοστεί για να δείτε πώς λειτουργεί η λίστα επιτρεπόμενων IP. Ο παρακάτω κώδικας είναι ένα πρόγραμμα που ορίζει μια λίστα επιτρεπόμενων και υλοποιεί δύο τελικά σημεία (ένα περιορισμένο και ένα μη περιορισμένο).

 package main 

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

var IPWhitelist = map[string]bool{
    "127.0.0.1": true,
    "111.2.3.4": true,
    "::1": true,
}

func main() {
    router := gin.Default()

    router.GET("/index", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "Welcome to my secure application!",
        })
    })

    restrictedPage := router.Group("/")
    restrictedPage.Use(middlewares.IPWhiteListMiddleware(IPWhitelist))

    restrictedPage.GET("/adminZone", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "This endpoint is secured with IP whitelisting!",
        })
    })

    router.Run(":3333")
}

Όταν η εφαρμογή εκτελείται με πήγαινε τρέξε main.go , ο διακομιστής ξεκινά στη θύρα 3333 και μπορείτε να εκτελέσετε δοκιμαστικά αιτήματα στη θύρα /adminZone τελικό σημείο, για να δείτε πώς λειτουργεί το ενδιάμεσο λογισμικό. Μπορείτε επίσης να αλλάξετε την τιμή της IP του localhost στη λίστα επιτρεπόμενων μεταξύ αληθής και ψευδής .

Ακολουθεί ένα δείγμα αιτήματος που δείχνει πότε η διεύθυνση IP δεν είναι στη λίστα επιτρεπόμενων ή πότε η τιμή της στη λίστα επιτρεπόμενων έχει οριστεί σε ψευδής :

  Αίτημα δοκιμής για το πότε η διεύθυνση IP δεν είναι στη λίστα επιτρεπόμενων

Ακολουθεί ένα άλλο αίτημα για το πότε η διεύθυνση IP είναι παρούσα στη λίστα επιτρεπόμενων IP με την τιμή της να έχει οριστεί σε αληθής :

  Αίτημα δοκιμής για το πότε η διεύθυνση IP είναι στη λίστα επιτρεπόμενων