Δικτύωση

Γνώση Υπολογιστών >> Δικτύωση >  >> Voice Over IP

Σενάριο κελύφους για να δημιουργήσει αυτό που ακούει μια θύρα μέσω του Διαδικτύου;

Μόνο ένα απλό σενάριο κελύφους δεν μπορεί να ακούσει σε μια θύρα μέσω του Διαδικτύου. Τα σενάρια κελύφους είναι για τον έλεγχο της εκτέλεσης των εντολών. Δεν διαθέτουν τις ενσωματωμένες δυνατότητες δικτύωσης για να χειριστούν τις εισερχόμενες συνδέσεις. Χρειάζεστε ένα πρόγραμμα διακομιστή δικτύου (όπως `netcat`,` socat` ή ένας ειδικός διακομιστής ιστού όπως το Apache ή το Nginx) για αυτό. Το σενάριο κελύφους θα ξεκινήσει μόνο * και ίσως * να διαχειριστεί * τη διαδικασία του διακομιστή.

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

Παράδειγμα 1:Χρήση NetCat (εξαιρετικά ανασφαλής για χρήση παραγωγής)

Αυτό το παράδειγμα χρησιμοποιεί `netcat` για να ακούσει σε μια θύρα. Μην το χρησιμοποιείτε σε ένα περιβάλλον παραγωγής χωρίς σημαντικές βελτιώσεις ασφαλείας. Το Netcat προσφέρει ελάχιστη ασφάλεια και είναι εύκολα ευάλωτη στις επιθέσεις.

`` `bash

#!/bin/bash

θύρα =8080

echo "Ακρόαση στο λιμάνι $ Port ..."

NC -LVP $ Port

`` `

* `nc -lvp $ port` :Αυτή είναι η εντολή πυρήνα.

* `-l`:Ακούστε για εισερχόμενες συνδέσεις.

* `-v`:verbose mode (εμφανίζει λεπτομέρειες σύνδεσης).

* `-p $ port`:Καθορίζει τον αριθμό θύρας.

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

Παράδειγμα 2:Χρήση SOCAT (ελαφρώς καλύτερη, αλλά χρειάζεται ακόμα περισσότερη ασφάλεια)

Το "Socat` είναι ένα πιο ευπροσάρμοστο βοηθητικό πρόγραμμα γραμμής εντολών από το` netcat`, επιτρέποντας περισσότερες επιλογές διαμόρφωσης. Και πάλι, δεν είναι κατάλληλο για παραγωγή χωρίς σημαντικές βελτιώσεις ασφαλείας.

`` `bash

#!/bin/bash

θύρα =8080

echo "Ακρόαση στο λιμάνι $ Port ..."

Socat TCP-Listen:$ Port, Fork Exec:'Echo "Η σύνδεση που ελήφθη!"'

`` `

* `SOCAT TCP-LISTEN:$ Port, Fork Exec:'Echo' σύνδεση που ελήφθη! '':Αυτό ακούει στην καθορισμένη θύρα και πιρούνια μια νέα διαδικασία για κάθε σύνδεση. Η σύνδεση `exec:'echo' που ελήφθη! '' Το μέρος είναι μια απλή εντολή που εκτελείται για κάθε σύνδεση. Αντικαταστήστε αυτό με τον επιθυμητό χειρισμό των εντολών σας.

Σημαντικές εκτιμήσεις ασφαλείας:

* Firewall: Πρέπει να διαμορφώσετε το τείχος προστασίας σας (π.χ. `iptables 'στο Linux) για να επιτρέψετε μόνο συνδέσεις στην καθορισμένη θύρα από αξιόπιστες διευθύνσεις IP ή δίκτυα. Διαφορετικά, ο διακομιστής σας θα είναι ανοιχτός σε επιθέσεις από οποιονδήποτε στο Διαδίκτυο.

* Επαλήθευση και εξουσιοδότηση: Αυτά τα παραδείγματα δεν διαθέτουν έλεγχο ταυτότητας ή εξουσιοδότηση. Ο καθένας μπορεί να συνδεθεί. Για οτιδήποτε πέρα από τις απλές δοκιμές, χρειάζεστε κατάλληλους μηχανισμούς ελέγχου ταυτότητας (π.χ. προστασία κωδικού πρόσβασης, κρυπτογράφηση SSL/TLS).

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

* Χειρισμός σφαλμάτων: Τα σενάρια δεν διαθέτουν ισχυρό χειρισμό σφαλμάτων. Τα σενάρια έτοιμα για παραγωγή πρέπει να χειρίζονται με χαρά τα σφάλματα.

* Διαχείριση διαδικασιών: Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε έναν επόπτη διαδικασιών (όπως το SystemD ή το Supervisord) για να διαχειριστείτε τη διαδικασία του διακομιστή και να βεβαιωθείτε ότι επανεκκινείται αυτόματα εάν καταρρεύσει.

Για περιβάλλοντα παραγωγής: Χρησιμοποιήστε έναν ισχυρό διακομιστή ιστού όπως το Apache ή το NGINX με τις κατάλληλες διαμορφώσεις ασφαλείας (SSL/TLS, έλεγχος ταυτότητας, τείχη προστασίας, επικύρωση εισόδου κ.λπ.). Αυτοί οι διακομιστές έχουν σχεδιαστεί για ασφαλή και αξιόπιστη λειτουργία. Αυτά τα παραδείγματα αφορούν μόνο εκπαιδευτικούς σκοπούς και δεν πρέπει να χρησιμοποιούνται στην παραγωγή χωρίς σημαντικές βελτιώσεις στην ασφάλειά τους.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα