Χρησιμοποιήστε το πλαίσιο Go's Gin για να προστατεύσετε τις εφαρμογές ιστού σας με τη λίστα επιτρεπόμενων IP.

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

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

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

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

instagram viewer

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

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

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

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

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

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

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

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

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

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

πηγαίνετε να πάρετε το github.com/gin-gonic/gin

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

πακέτο ενδιάμεσα προϊόντα

εισαγωγή (
"github.com/gin-gonic/gin"
"net/http"
)

funcIPWhiteListMiddleware(Λίστα λευκών χάρτης[σειρά]bool)τζιν.HandlerFunc {
ΕΠΙΣΤΡΟΦΗfunc(γ *τζιν. Συμφραζόμενα) {
userIP := γ. ClientIP()

αν !whitelist[userIP] {
ντο. AbortWithStatusJSON(http. StatusForbidden, τζιν. H{
"λάθος": "Δεν έχετε εξουσιοδότηση πρόσβασης σε αυτόν τον πόρο!",
})
} αλλού {
ντο. Επόμενο()
}
}
}

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

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

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

πακέτο κύριος

εισαγωγή (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middleware"
"net/http"
)

var IPWhitelist = χάρτης[σειρά]bool{
"127.0.0.1": αληθής,
"111.2.3.4": αληθής,
"::1": αληθής,
}

funcκύριος() {
router := τζιν. Προκαθορισμένο()

δρομολογητή. ΠΑΙΡΝΩ("/δείκτης", func(γ *τζιν. Συμφραζόμενα) {
ντο. JSON(http. StatusOK, τζιν. H{
"μήνυμα": "Καλώς ήρθατε στην ασφαλή μου εφαρμογή!",
})
})

limitedPage := δρομολογητής. Ομάδα("/")
περιορισμένη σελίδα. Χρήση (μεσαία είδη. IPWhiteListMiddleware (IPWhitelist))

περιορισμένη σελίδα. ΠΑΙΡΝΩ("/adminZone", func(γ *τζιν. Συμφραζόμενα) {
ντο. JSON(http. StatusOK, τζιν. H{
"μήνυμα": "Αυτό το τελικό σημείο είναι ασφαλισμένο με τη λίστα επιτρεπόμενων IP!",
})
})

δρομολογητή. Τρέξιμο(":3333")
}

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

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

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

Ενδέχεται να λάβετε μια απάντηση σφάλματος 403 (Απαγορευμένο) εάν δοκιμάσετε το πρόγραμμα τοποθετώντας στη λίστα επιτρεπόμενων τη γενική διεύθυνση IP του localhost (127.0.0.1). Η διεύθυνση IP που πιθανότατα θα λειτουργήσει τοπικά είναι ::1 που είναι το ισοδύναμο IPv6 του 127.0.0.1 (Ipv4). Δοκιμάστε να προσθέσετε στη λίστα επιτρεπόμενων ::1 εάν το 127.0.0.1 αρνηθεί να λειτουργήσει και μπορείτε επίσης να προσπαθήσετε να καταγράψετε το userIP μεταβλητή στην κονσόλα για να δείτε την ακριβή διεύθυνση που χρησιμοποιείται.

Προστασία εφαρμογών Ιστού με Λευκή λίστα IP

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

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