Μετάβαση στο περιεχόμενο

Εγκατάσταση του παράγοντα Linux

Ο παράγοντας Linux χρησιμοποιείται από την πλατφόρμα CyberElements για τον περιορισμό της πιθανής πρόσβασης στο δίκτυο από τους διακομιστές SSH στους οποίους έχουν πρόσβαση οι χρήστες (όπως ορίζονται στις πολιτικές / συμβάσεις πρόσβασης).

Προαπαιτούμενα

Για τη σωστή λειτουργία του παράγοντα απαιτούνται ορισμένα προαπαιτούμενα:

  • Συμβατά λειτουργικά συστήματα: Red Hat 9 και Debian 12
  • Παρουσία του τείχους προστασίας iptables
  • Σύνδεση με λογαριασμό διαφορετικό από τον root

Πληροφορίες

Ο παράγοντας Linux δεν ενεργεί στον χρήστη root, καθώς ο χρήστης αυτός διαθέτει πάντα επαρκή δικαιώματα για να καταργήσει οποιονδήποτε περιορισμό θα του επιβαλλόταν.

Επιπλέον, καθώς ορισμένες υπηρεσίες χρησιμοποιούν δικαιώματα root, η προσθήκη περιορισμών δικτύου θα μπορούσε να καταστήσει αυτές τις υπηρεσίες ασταθείς.

Τρόπος λειτουργίας

Ο παράγοντας Linux αποτελείται από διάφορα μέρη:

  • Μια υπηρεσία systemd με το όνομα cleanroom-filter
  • Μια λειτουργική μονάδα PAM με το όνομα pam_clr_filter
  • Μια πολιτική SELinux για Red Hat που επιτρέπει στον διακομιστή SSH να επικοινωνεί με την υπηρεσία cleanroom-filter

Η γενική λειτουργία ακολουθεί την εξής σειρά:

Περιβάλλον SaaS

Στο παρακάτω διάγραμμα, το «Mediation Controller» αντιπροσωπεύει την υπηρεσία cloud CyberElements που διαχειρίζεται η ομάδα CyberElements. Η ροή φιλτραρίσματος SSH είναι αρχιτεκτονικά ίδια σε λειτουργία SaaS.

sequenceDiagram
    autonumber
    participant MED as Mediation Controller
    participant GW_SSH as Edge Gateway<br/>Εγγραφέας SSH
    participant SSH as Στόχος SSH<br/>Διακομιστής SSH
    participant PAM as Στόχος SSH<br/>Λειτουργική μονάδα PAM pam_clr_filter
    participant svc as Στόχος SSH<br/>Υπηρεσία cleanroom-filter

    MED->>GW_SSH: Αίτημα ανοίγματος<br/>εφαρμογής SSH
    GW_SSH->>+MED: Ανάκτηση πληροφοριών φιλτραρίσματος<br/>για την περίοδο λειτουργίας
    MED->>-GW_SSH: Αποστολή πληροφοριών<br/>φιλτραρίσματος δικτύου
    GW_SSH->>+SSH: Σύνδεση SSH
    SSH-->-PAM: Δημιουργία περιόδου λειτουργίας SSH
    PAM->>+svc: Αποστολή του ονόματος χρήστη
    Note right of svc: Δημιουργία αλυσίδας iptables <br/>για τον χρήστη με όνομα clr-LOGIN
    svc->>-PAM: Αποστολή μοναδικού διακριτικού
    Note over PAM: Προσθήκη της μεταβλητής περιβάλλοντος CLR-ID<br/> με το μοναδικό διακριτικό<br/> στην περίοδο λειτουργίας του χρήστη
    GW_SSH->>svc: Αποστολή της λίστας δικτύων προς εξουσιοδότηση
    Note over svc: Δημιουργία κανόνα iptables OUTPUT<br/> για ανακατεύθυνση της κίνησης του χρήστη στην αλυσίδα iptables<br/> που δημιουργήθηκε προηγουμένως
    Note over svc: Προσθήκη αδειών στην αλυσίδα iptables<br/> που δημιουργήθηκε για τον χρήστη
    break Τέλος της περιόδου λειτουργίας SSH
        SSH->>+GW_SSH: Γνωστοποίηση τέλους περιόδου λειτουργίας
        SSH-->svc: Εντοπισμός τέλους της περιόδου λειτουργίας SSH
        Note over svc: Διαγραφή του κανόνα iptables OUTPUT<br/> που δημιουργήθηκε για τον χρήστη
        Note over svc: Διαγραφή της αλυσίδας iptables<br/> που δημιουργήθηκε για τον χρήστη
        GW_SSH->>-MED: Γνωστοποίηση τέλους της περιόδου λειτουργίας SSH<br/> του χρήστη
    end
Hold "Ctrl" to enable pan & zoom
  1. Ο διακομιστής Mediation Controller στέλνει πληροφορίες στο στοιχείο Edge Gateway για το άνοιγμα μιας νέας περιόδου λειτουργίας SSH.
  2. Η υπηρεσία εγγραφής SSH ζητά από τον διακομιστή Mediation Controller τις πληροφορίες φιλτραρίσματος δικτύου που πρέπει να εφαρμοστούν στην περίοδο λειτουργίας SSH.
  3. Η υπηρεσία Mediation Controller απαντά με μια λίστα επιτρεπόμενων δικτύων.
  4. Η υπηρεσία εγγραφής SSH δημιουργεί στη συνέχεια τη σύνδεση με τον διακομιστή SSH προορισμού.
  5. Η σύνδεση με τον διακομιστή SSH πυροδοτεί την ακολουθία δημιουργίας της περιόδου λειτουργίας και, επομένως, τη διέλευση από τις λειτουργικές μονάδες PAM που έχουν αντιστοιχιστεί στο sshd.
  6. Η λειτουργική μονάδα PAM pam_clr_filter του παράγοντα Linux στέλνει το όνομα χρήστη στην υπηρεσία cleanroom-filter, η οποία στη συνέχεια δημιουργεί μια νέα αλυσίδα iptables με το όνομα clr-LOGIN, όπου το LOGIN αντικαθίσταται από το όνομα χρήστη που λήφθηκε.
  7. Μετά τη δημιουργία της αλυσίδας iptables, η υπηρεσία cleanroom-filter δημιουργεί ένα τυχαίο διακριτικό και το στέλνει στη λειτουργική μονάδα PAM pam_clr_filter. Η τελευταία προσθέτει αυτό το διακριτικό στη μεταβλητή περιβάλλοντος CLR-ID του χρήστη.
  8. Η υπηρεσία εγγραφής SSH στέλνει, μέσω του εκτελέσιμου αρχείου /usr/local/ipdiva/bin/cleanroom-netfiltersession.py, τη λίστα των δικτύων που πρέπει να επιτραπούν στην υπηρεσία cleanroom-filter. Στη συνέχεια, η υπηρεσία δημιουργεί έναν κανόνα iptables OUTPUT για την ανακατεύθυνση όλης της κίνησης του χρήστη, που αναγνωρίζεται μέσω του UID, προς την αλυσίδα iptables που δημιουργήθηκε στο βήμα 6. Όλες οι ροές που πρέπει να επιτραπούν για τον χρήστη προστίθενται στην αλυσίδα iptables.
  9. Όταν προκαλείται ο τερματισμός της περιόδου λειτουργίας SSH, η πληροφορία αποστέλλεται στην υπηρεσία εγγραφής SSH του στοιχείου Edge Gateway.
  10. Η υπηρεσία cleanroom-filter εντοπίζει τον τερματισμό της περιόδου λειτουργίας του χρήστη και καθαρίζει τους κανόνες iptables που προστέθηκαν: διαγράφει την οδηγία OUTPUT που ανακατευθύνει την κίνηση του χρήστη προς μια αλυσίδα iptables και διαγράφει την ίδια την αλυσίδα.
  11. Μόλις το στοιχείο Edge Gateway λάβει τον τερματισμό της περιόδου λειτουργίας SSH, προωθεί αυτή την πληροφορία στην υπηρεσία Mediation Controller.

Εγκατάσταση

Απαιτούμενες άδειες root

Για την εγκατάσταση του παράγοντα απαιτούνται προνόμια root.

Το πακέτο .deb ή .rpm μπορεί να ληφθεί από την κονσόλα διαχείρισης:

  1. Μεταβείτε στον χώρο εργασίας «Configurations» χρησιμοποιώντας το κουμπί που βρίσκεται επάνω αριστερά:
  2. Ανοίξτε το πλακίδιο «Toolbox»
  3. Επιλέξτε το πρόγραμμα εγκατάστασης που αντιστοιχεί στο επιθυμητό λειτουργικό σύστημα στην πρώτη καρτέλα, «Integration Tools»

Μόλις ανακτήσετε το πακέτο, στείλτε το στον διακομιστή Linux, στον κατάλογο /tmp/. Στη συνέχεια, ακολουθήστε τις οδηγίες εγκατάστασης για το λειτουργικό σας σύστημα:

Εκτελέστε τις ακόλουθες εντολές με τις κατάλληλες άδειες root:

1
2
dpkg -i /tmp/cleanroom-netfilter_*_amd64.deb
sed -i "s/@include common-session/@include common-session\n\n\# Use the Cleanroom agent to limit network bounces\nsession    optional\tpam_clr_filter.so/g" /etc/pam.d/sshd

Η δεύτερη εντολή αυτοματοποιεί την προσθήκη δύο γραμμών στο αρχείο /etc/pam.d/sshd, αλλά η ενέργεια αυτή μπορεί επίσης να εκτελεστεί χειροκίνητα:

27
28
29
30
31
32
33
34
35
36
37
# Standard Un*x session setup and teardown.
@include common-session

# Use the Cleanroom agent to limit network bounces
session    optional     pam_clr_filter.so

# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

Εκτελέστε τις ακόλουθες εντολές με άδειες root:

1
2
dnf install /tmp/CleanroomFilter-*-Linux.rpm
sed -i "s/revoke$/revoke\n# Use the Cleanroom agent to limit network bounces\nsession    optional\tpam_clr_filter.so/g" /etc/pam.d/sshd

Η δεύτερη εντολή αυτοματοποιεί την προσθήκη δύο γραμμών στο αρχείο /etc/pam.d/sshd, αλλά η ενέργεια αυτή μπορεί επίσης να εκτελεστεί χειροκίνητα:

11
12
13
14
15
16
17
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
# Use the Cleanroom agent to limit network bounces
session    optional     pam_clr_filter.so
session    optional     pam_motd.so