# Συνδέστε με ασφάλεια τους Πράκτορες AI στον Διακομιστή MCP της Webship
Μια σύνδεση MCP με έναν διακομιστή ιστού δεν είναι ένα widget συνομιλίας. Είναι μια διεπαφή λειτουργιών που μπορεί να ελέγξει την κατάσταση παραγωγής, να αλλάξει τη δρομολόγηση και την πολιτική ασφαλείας, να επαναφορτώσει πιστοποιητικά, να ενεργοποιήσει στατικές εκδόσεις, να συντονίσει αλλαγές στόλου και να εγκαταστήσει μια υπογεγραμμένη ενημέρωση Webship.
Αντιμετωπίστε το αναλόγως: ως ένα προνομιακό διαχειριστικό API. Η ασφαλέστερη ρύθμιση Webship διατηρεί τον ακροατή MCP μακριά από το δημόσιο επίπεδο δεδομένων, τον συνδέει με το loopback, τον προστατεύει με TLS 1.3 και ένα ισχυρό bearer token, και έχει πρόσβαση σε αυτό μέσω ενός αυθεντικοποιημένου SSH tunnel.
Αυτός ο οδηγός δημιουργεί αυτή τη ρύθμιση, εξηγεί γιατί υπάρχει κάθε όριο και σας δίνει μια λίστα ελέγχου για να τη λειτουργείτε χωρίς να μετατρέπετε την ευκολία σε έκθεση.
Ξεκινήστε με το όριο εμπιστοσύνης
Η δημόσια κίνηση του Webship και η κίνηση του MCP χρησιμοποιούν ξεχωριστούς ακροατές. Το επίπεδο ελέγχου MCP είναι απενεργοποιημένο από προεπιλογή και δεν μοιράζεται ποτέ τον κανονικό HTTP, HTTP/2, HTTP/3 ή WebTransport ακροατή. Όταν ενεργοποιείται, παρέχει MCP μέσω ειδικής TLS 1.3 HTTP/1.1 τελικής σημεία.
Μια ασφαλής ανάπτυξη έχει τέσσερις ανεξάρτητους ελέγχους:
- Δυνατότητα προσβασιμότητας δικτύου: ο ακροατής MCP συνδέεται με το
127.0.0.1, όχι με δημόσια ή ιδιωτική διεύθυνση LAN. - Ταυτότητα μεταφοράς: ο πελάτης επαληθεύει ένα πιστοποιητικό που έχει εκδοθεί από μια Αρχή Πιστοποίησης (CA) στην οποία έχει εμπιστοσύνη.
- Επαλήθευση εφαρμογής: κάθε αίτημα φέρει ένα ισχυρό διακριτικό πρόσβασης.
- Διοικητική πρόσβαση: οι χειριστές φτάνουν στον ακροατή του loopback μέσω ενός αυθεντικοποιημένου λογαριασμού SSH και τούνελ.
Κανένας από αυτούς τους ελέγχους δεν αντικαθιστά έναν άλλο. Το TLS χωρίς ιδιωτικό δίκτυο εξακολουθεί να εκθέτει μια επιφάνεια πιστοποίησης. Ένα τούνελ χωρίς επαλήθευση πιστοποιητικού καθιστά ασαφή την ταυτότητα του τερματικού σημείου. Ένα διακριτικό κράτησης μέσα σε ένα αρχείο που μπορεί να διαβαστεί από όλους δεν είναι μυστικό.
Ετοιμάστε το πιστοποιητικό και το διακριτικό
Εκδώστε ένα αφιερωμένο πιστοποιητικό MCP από την εσωτερική σας CA. Για τη σήραγγα που φαίνεται παρακάτω, περιλάβετε τα localhost και 127.0.0.1 στα εναλλακτικά ονόματα θέματος του πιστοποιητικού και εγκαταστήστε την CA που εκδίδει το πιστοποιητικό στο κατάστημα εμπιστοσύνης του πελάτη MCP. Μην επιλύετε ένα σφάλμα εμπιστοσύνης με μια επιλογή μη ασφαλούς TLS.
Δημιουργήστε ένα μοναδικό διακριτικό με τουλάχιστον 32 εκτυπώσιμους χαρακτήρες ASCII και χωρίς κενά. Μια τυχαία τιμή 32 byte κωδικοποιημένη σε δεκαεξαδικό σας δίνει 64 ασφαλείς χαρακτήρες:
umask 077
openssl rand -hex 32Webship διαβάζει αυτήν τη στιγμή το διακριτικό MCP απευθείας από την προστατευμένη ρύθμιση TOML· το token_file δεν υποστηρίζεται. Αποθηκεύστε το αποτέλεσμα σε ένα αρχείο ρυθμίσεων που μπορεί να διαβαστεί μόνο από τον λογαριασμό υπηρεσίας Webship και την ομάδα διαχείρισής του. Μην τοποθετείτε το διακριτικό σε μια μονάδα systemd, ιστορικό κελύφους, αίτηση, μήνυμα συνομιλίας ή προτροπή που αποστέλλεται σε μοντέλο AI.
Σε έναν τυπικό κεντρικό υπολογιστή Debian:
sudo chown root:webship /etc/webship/production.toml
sudo chmod 0640 /etc/webship/production.toml
sudo chown root:webship /etc/webship/mcp-cert.pem /etc/webship/mcp-key.pem
sudo chmod 0644 /etc/webship/mcp-cert.pem
sudo chmod 0640 /etc/webship/mcp-key.pemΠροσαρμόστε τον χρήστη υπηρεσίας και την ομάδα στην εγκατάστασή σας. Το ιδιωτικό κλειδί και η διαμόρφωση πρέπει να μπορούν να διαβαστούν από το Webship, αλλά όχι από άσχετους λογαριασμούς.
Ενεργοποιήστε τον απομονωμένο ακροατή
Προσθέστε αυτή την ενότητα στη ενεργή διαμόρφωση Webship:
[security.mcp]
enabled = true
listen = "127.0.0.1:9443"
token = "replace-with-your-generated-64-character-token"
allowed_ips = []
expose_remote = false
[security.mcp.tls]
cert = "/etc/webship/mcp-cert.pem"
key = "/etc/webship/mcp-key.pem"Μια κενή λίστα allowed_ips δεν ανοίγει το endpoint. Οι πελάτες loopback παραμένουν επιτρεπτοί από προεπιλογή. Το expose_remote = false καθιστά το προοριζόμενο όριο σαφές: αν κάποιος αργότερα αλλάξει το listen σε μια διεύθυνση που δεν είναι loopback, το Webship απορρίπτει τη διαμόρφωση αντί να δημοσιεύει σιωπηλά το control plane.
Webship απορρίπτει επίσης έναν ενεργοποιημένο ακροατή MCP χωρίς TLS, χωρίς διακριτικό, με σύντομο διακριτικό ή διακριτικό που περιέχει κενά, ή με κενές διαδρομές πιστοποιητικού. Τα δημόσια διακριτικά-δείκτες απορρίπτονται πριν από την απομακρυσμένη έκθεση.
Επικυρώστε πριν την επανεκκίνηση
MCP ο ακροατής, η ταυτότητα TLS και οι αλλαγές στο διακριτικό αναδημιουργούν το επίπεδο ελέγχου, επομένως απαιτείται επανεκκίνηση της διαδικασίας. Επαληθεύστε πρώτα ολόκληρη τη διαμόρφωση:
/usr/local/bin/webship --check-config --config /etc/webship/production.toml
sudo systemctl restart webship
sudo systemctl status webship --no-pagerΕπιβεβαιώστε ότι ο ακροατής υπάρχει μόνο στο loopback:
ss -ltn | grep '127.0.0.1:9443'Μην προσθέτετε τη θύρα 9443 στους δημόσιους κανόνες τείχους προστασίας του υπολογιστή. Το επόμενο βήμα θα φτάσει σε αυτή μέσω SSH.
Δημιουργήστε τη ιδιωτική σήραγγα
Από τον υπολογιστή εργασίας του διαχειριστή, προωθήστε μια τοπική θύρα στον ακροατή βρόχου ανακατεύθυνσης του Webship:
ssh -N \
-L 127.0.0.1:19443:127.0.0.1:9443 \
webship-admin@edge.example.comΟ πελάτης MCP συνδέεται τώρα με το https://localhost:19443/mcp. Το TCP φτάνει στον διακομιστή SSH, το SSH μεταφέρει τη σύνδεση στον κεντρικό υπολογιστή, και ο κεντρικός υπολογιστής ανοίγει την τελική σύνδεση με το Webship στο loopback. Το κλείσιμο της συνεδρίας SSH αφαιρεί αμέσως αυτή την διαδρομή.
Χρησιμοποιήστε έλεγχο ταυτότητας SSH με βάση κλειδιά, περιορίστε ποιοι διαχειριστές μπορούν να ανοίξουν τη σήραγγα και εφαρμόστε τους κανονικούς ελέγχους πρόσβασης του κεντρικού υπολογιστή. Εάν απαιτείται ένας ενδιάμεσος υπολογιστής (jump host), κρατήστε τον ακροατή MCP στη διεπαφή loopback του υπολογιστή Webship και επεκτείνετε την διαδρομή SSH αντί να διευρύνετε τον ακροατή.
Διαμόρφωσε τον πελάτη MCP
Τα πρότυπα διαμόρφωσης πελατών διαφέρουν, αλλά μια τυπική εγγραφή HTTP MCP φαίνεται έτσι:
{
"mcpServers": {
"webship-production": {
"url": "https://localhost:19443/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}Χρησιμοποιήστε τον προστατευμένο μηχανισμό μυστικού του πελάτη όταν έχει. Διαφορετικά, περιορίστε τη διαμόρφωση του πελάτη στον τρέχοντα λογαριασμό λειτουργικού συστήματος. Ο HTTP πελάτης—όχι το μοντέλο—πρέπει να επισυνάψει την κεφαλίδα εξουσιοδότησης. Μην επικολλάτε ποτέ το ζωντανό διακριτικό σε μια συνομιλία.
Κρατήστε ενεργοποιημένη τη διαδικασία επαλήθευσης του πιστοποιητικού. Εάν ο πελάτης απορρίψει το πιστοποιητικό, επιδιορθώστε τα εναλλακτικά ονόματα θέματος του πιστοποιητικού ή εγκαταστήστε το σωστό εσωτερικό CA. Μην προσθέτετε μόνιμη παράκαμψη.
Κάντε την πρώτη συνεδρία μόνο για ανάγνωση
Μετά τη σύνδεση του τούνελ και του πελάτη, ξεκινήστε με την ανακάλυψη και την επιθεώρηση:
- Ζητήστε το
tools/list; η απάντησή του είναι το αυθεντικό σχήμα επιχειρημάτων για την τρέχουσα έκδοση. - Καλέστε
webship.get_configκαι καταγράψτε την τρέχουσα έκδοση διαμόρφωσης. - Επιθεωρήστε
webship.reverse_proxy.get_status,webship.security.get_status,webship.ddos.get_statusκαιwebship.tls.get_statusόπως ισχύει. - Χρησιμοποιήστε
webship.policy.explainήwebship.security.simulateπριν αλλάξετε μια πολιτική. - Επιβεβαιώστε ότι η επιστρεφόμενη διαμόρφωση αποκρύπτει τους φορείς διαπιστευτηρίων.
Μόνο τότε δοκιμάστε μια μετάλλαξη σε ένα περιβάλλον μη παραγωγής. Οι διαμορφώσεις μετάλλαξης του Webship απαιτούν το τρέχον αναγνωριστικό έκδοσης. Μια παρωχημένη εγγραφή απορρίπτεται αντί να αντικαταστήσει μια νεότερη αλλαγή. Η πολιτική υποψηφίου μπορεί να ελεγχθεί με επαλήθευση σκιάς και σενάρια traffic-lab πριν την ενεργοποίηση.
Webship επίσης αρνείται επιλεγμένες ζωντανές υποβαθμίσεις ασφαλείας. Ένα αίτημα MCP δεν μπορεί να απενεργοποιήσει ένα ενεργό WAF, στρώμα DDoS, API Shield, πρόκληση bot, πολιτική πιστοποίησης edge-auth ή στρώμα header απόκρισης. Οι αλλαγές ακροατή, πρωτοκόλλου, εργαζομένου, χρόνου εκτέλεσης και MCP-πιστοποίησης που δεσμεύονται στην διαδικασία απαιτούν σκόπιμη επανεκκίνηση.
Αυτοί οι φρουροί μειώνουν τα λάθη· δεν κάνουν κάθε εξουσιοδοτημένη ενέργεια αβλαβή. Το διακριτικό παρέχει μια ισχυρή επιφάνεια ελέγχου, περιλαμβάνοντας λειτουργίες ενημέρωσης και απελευθέρωσης. Επισκοπήστε τις προτεινόμενες κλήσεις εργαλείων ακριβώς όπως θα επισκοπούσατε μια εντολή κελύφους διαχειριστή.
Αν η απομακρυσμένη δέσμευση είναι αναπόφευκτη
Το Loopback συνδυασμένο με SSH είναι ο συνιστώμενος σχεδιασμός. Αν το περιβάλλον σας απαιτεί έναν ακροατή ιδιωτικού δικτύου, κάντε την εξαίρεση σαφή:
[security.mcp]
enabled = true
listen = "10.20.0.15:9443"
expose_remote = true
allowed_ips = ["10.20.10.0/24"]
token = "replace-with-your-generated-64-character-token"Κρατήστε το μπλοκ TLS από το προηγούμενο παράδειγμα, χρησιμοποιήστε ένα πιστοποιητικό που ταιριάζει με το ιδιωτικό όνομα DNS και επιβάλετε την ίδια εύρος προέλευσης στα τείχη προστασίας του υπολογιστή και του δικτύου. Ποτέ μη χρησιμοποιείτε 0.0.0.0/0 ή ::/0 ως λίστα επιτρεπόμενων για ευκολία. Θυμηθείτε ότι μια λίστα επιτρεπόμενων εφαρμογών βλέπει τη διεύθυνση προέλευσης που φτάνει πραγματικά στο Webship; επαληθεύστε τη συμπεριφορά όταν ένας εξισορροπιστής φορτίου, ένα NAT gateway ή ένα service mesh βρίσκεται μπροστά του.
Η απομακρυσμένη έκθεση αυξάνει την αξία των κεντρικών αρχείων καταγραφής πρόσβασης, των σύντομων λειτουργικών παραθύρων και της ταχείας εναλλαγής. Δεν απαιτείται απλώς επειδή ο πελάτης MCP εκτελείται σε άλλη μηχανή· αυτό ακριβώς επιλύει η σήραγγα SSH.
Λειτουργήστε το επίπεδο ελέγχου με πρόθεση
Χρησιμοποιήστε αυτή τη λίστα ελέγχου για την παραγωγή:
- Κρατήστε το MCP απενεργοποιημένο εκεί όπου κανένας πράκτορας ή χειριστής δεν το χρειάζεται.
- Δεσμεύστε στη διεύθυνση loopback και χρησιμοποιήστε μια σήραγγα SSH ως προεπιλογή.
- Χρησιμοποιήστε μια αφιερωμένη ταυτότητα TLS και κρατήστε ενεργοποιημένη την επαλήθευση του πιστοποιητικού.
- Δημιουργήστε ένα μοναδικό διακριτικό φορέα για κάθε περιβάλλον Webship.
- Προστατεύστε το TOML, τη διαμόρφωση πελάτη, το κλειδί TLS και τα κλειδιά SSH με δικαιώματα συστήματος αρχείων.
- Ξεχωριστά στοιχεία σύνδεσης για ανάπτυξη, δοκιμές και παραγωγή.
- Ξεκινήστε συνεδρίες με εργαλεία κατάστασης και προσομοίωσης πολιτικής πριν από τις μεταλλάξεις.
- Διατηρήστε και ελέγξτε τα γεγονότα ελέγχου ασφαλείας του Webship.
- Περιστρέψτε το διακριτικό και επανεκκινήστε το Webship μετά από υποψία έκθεσης.
- Κλείστε τις σήραγγες όταν τελειώσει η διοικητική συνεδρία.
Για την αντιμετώπιση περιστατικών, κλείστε τα ενεργά τούνελ, περιορίστε τον λογαριασμό SSH, αντικαταστήστε το διακριτικό MCP στο προστατευμένο TOML, επανεκκινήστε το Webship και αναθεωρήστε τα πρόσφατα αρχεία ελέγχου ασφάλειας και εκδόσεων διαμόρφωσης. Εάν μπορεί να έχει εκτεθεί το ιδιωτικό κλειδί TLS, εκδώστε νέο πιστοποιητικό και κλειδί ως μέρος της ίδιας επανεκκίνησης. Δοκιμάστε το παλιό διακριτικό στη συνέχεια και επιβεβαιώστε ότι απορρίπτεται.
Ένα επίπεδο ελέγχου θα πρέπει να παραμένει ένα επίπεδο ελέγχου
MCP είναι χρήσιμο γιατί ένας πράκτορας μπορεί να επιθεωρήσει την πραγματική κατάσταση και να εφαρμόσει επικυρωμένες αλλαγές χωρίς να δρομολογεί αυτές τις λειτουργίες μέσω της δημόσιας διαδρομής αιτήματος. Αυτό το πλεονέκτημα εξαφανίζεται αν ο ακροατής ελέγχου γίνει άλλο σημείο πρόσβασης στο διαδίκτυο.
Κρατήστε το όριο απλό: ένας ξεχωριστός δέκτης, δυνατότητα επανασύνδεσης loopback, επαληθευμένο TLS, ένα προστατευμένο διαπιστευτήριο φορέα, ένα αυθεντικοποιημένο τούνελ, αλλαγές με έλεγχο έκδοσης και μια διαδικασία ανθρώπινης αξιολόγησης για ισχυρές λειτουργίες. Webship παρέχει το πρωτόκολλο και τα μέτρα ασφαλείας· ο χειριστής αποφασίζει ποιος μπορεί να τα προσεγγίσει.
Ο παρών οδηγός βασίζεται στην τεκμηρίωση χειριστή Webship 1.3.1, τα παραδείγματα διαμόρφωσης που παρέχονται, τον κώδικα επικύρωσης και μεταφοράς MCP, τους μηχανισμούς προστασίας διαμόρφωσης κατά το χρόνο εκτέλεσης και τον κατάλογο εργαλείων. Εξετάστε την τρέχουσα τεκμηρίωση Webship και την απόκριση tools/list του διακομιστή που εκτελείται πριν την εφαρμόσετε σε άλλη έκδοση.