You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Panagiotis_Klironomos 1c3cdb2d8e Update '2)SSH_Brute_Force_Attack/worker1.sh' 3 years ago
..
README.md Update README.md 3 years ago
fail2bansshconf Add files via upload 3 years ago
lexikoright Add files via upload 3 years ago
lexikowrong Add files via upload 3 years ago
master.sh Add files via upload 3 years ago
masterkeyenable.sh Update '2)SSH_Brute_Force_Attack/masterkeyenable.sh' 3 years ago
sshconfrsa Add files via upload 3 years ago
sshdconf Add files via upload 3 years ago
worker1.sh Update '2)SSH_Brute_Force_Attack/worker1.sh' 3 years ago

README.md

master.sh

Εδώ ο master node θα κάνει SSH Brute Force επίθεση στον worker_1 node. Το εργαλείο που χρησιμοποιείται για την επίθεση είναι το hydra.

  • Αφού γίνει εγκατάσταση του εργαλείου στον master κόμβο
    • sudo apt update
    • sudo apt upgrade -y
    • sudo apt install hydra -y
  • Και αναγνώριση της IP του worker κόμβου από τον master
    • network=$(ifconfig | grep inet | sed -n 1p | awk "{print $2}" | cut -f 1-3 -d "." | sed 's/$/.*/')
    • worker1IP=$(nmap -sP $network | grep worker_1 | awk '{print $NF}' | tr -d '()')
  • Ξεκινάει η επίθεση με το Hydra. Το hydra είναι ένα εργαλείο στο οποίο αφιερώνοντας κάποια threads (υπολογιστικούς πόρους -εδώ αφιερώνουμε 4 threads-) μπορεί να δοκιμάσει να αποκτήσει πρόσβαση σε κάποια υπηρεσία (συγκεκριμένα εδώ ssh) χρησιμοποιώντας credentials τα οποία είτε δίνονται manually είτε ως λεξικό. Συγκεκριμένα εδώ δίνουμε το σωστό username manually και τον σωστό κωδικό μέσα από ένα λεξικό που τον περιέχει
    • hydra -l docker -P lexikoright $worker1IP -t 4 ssh
  • Στην συνέχεια δοκιμάζουμε με ένα λεξικό που δεν περιέχει τον σωστό κωδικό για να δούμε ότι επίθεση δεν θα πετύχει.
    • hydra -l docker -P lexikoright $worker1IP -t 4 ssh

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

Ssh_Brute_Master_Node

asciicast

worker1.sh

Εδώ ο worker node εφαρμόζει αντίμετρα στην SSH Brute Force επίθεση που δέχεται από τον master node μέσω του εργαλείου fail2ban. Το fail2ban είναι ένα εργαλείο το οποίο κάνοντας monitor log files κάποιων υπηρεσιών εφαρμόζει τα αντίμετρα που επιλέγουμε αν ισχύει κάποια συνθήκη. Εδώ επειδή η εικόνα που χρησιμοποιούν τα docker nodes είναι η alpine απο την οποία λείπουν βασικές λειτουργίες ενός λειτουργικού συστήματος πρέπει να εγκατασταθεί και η υπηρεσία που δημιουργεί τα log files συστήματος (rsyslog).

  • Αφού γίνει εγκατάσταση του εργαλείου και του rsyslog στον worker κόμβο

    • sudo apt update
    • sudo apt upgrade -y
    • sudo apt-get install fail2ban -y
    • sudo apt install rsyslog -y
  • Το εργοστασιακό configuration file του fail2ban είναι το jail.conf αλλά για λόγους ασφαλείας αυτό πρέπει να μείνει άθικτο. Το fail2ban "διαβάζει" τις ρυθμίσεις του από το jail.local αρχείο το οποίο κάνουμε copy από το εργοστασιακό

    • sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • Εδώ κάνουμε copy ένα προετοιμασμένο αρχείο στο αρχείο ρυθμίσεων του fail2ban ώστε να κάνει monitor την υπηρεσία ssh και να κάνει τις απαραίτητες ενέργειες σε μία επίθεση brute force. Αναλυτικά ορίσαμε το bantime=1m (γραμμή 63) δηλαδή η IP του χρήστη που θα κάνει brute force να αποκλείεται για ένα λεπτό από την στιγμή της τελευταίας επίθεσης. Επίσης στις γραμμές 238 έως 249 βρίσκεται όλο το configuration που ορίσαμε για την υπηρεσία ssh.

    • sudo cp "/project/ssh brute force attack/fail2bansshconf" /etc/fail2ban/jail.loca** l**
  • Εδώ κάνουμε copy ένα προετοιμασμένο αρχείο στο αρχείο ρυθμίσεων του ssh ούτως ώστε να κρατάει η υπηρεσία ssh log files στο σύστημα ( SyslogFacility AUTH, LogLevel INFO γραμμές 26-27) .

    • sudo cp "/project/ssh brute force attack/sshdconf" /etc/ssh/sshd_config
  • Στην συνέχεια κάνουμε restart τα παραπάνω services ώστε να ισχύσουν οι νέες ρυθμίσεις .

    • sudo service ssh restart
    • sudo service rsyslog restart
    • sudo service fail2ban restart
  • Με την παρακάτω εντολή έχουμε μία εικόνα ως προς το τι απέτρεψε το εργαλείο fail2ban στην υπηρεσία ssh.

    • sudo fail2ban-client status sshd

    Ssh_Brute_Worker_Node

asciicast

masterkeyenable.sh

Εδώ ο master node κάνει τις απαραίτητες ενέργειες ώστε να μπορεί να συνδέεται στον worker χωρίς την απαίτηση κωδικού αλλά χρησιμοποιώντας κλειδιά.

  • Αφού γίνει αναγνώριση της IP του worker κόμβου από τον master
    • network=$(ifconfig | grep inet | sed -n 1p | awk "{print $2}" | cut -f 1-3 -d "." | sed 's/$/.*/')
    • worker1IP=$(nmap -sP $network | grep worker_1 | awk '{print $NF}' | tr -d '()')
  • Ο master node παράγει ένα ζεύγος κλειδιών (δημόσιο, ιδιωτικό) για να χρησιμοποιηθούν στην σύνδεση με τον worker
    • ssh-keygen -t rsa
  • Εγκαθίσταται ένα κλειδί SSH στον SSH server (worker1) ως εξουσιοδοτημένο κλειδί. Σκοπός του είναι να παρέχει πρόσβαση χωρίς να απαιτείται κωδικός πρόσβασης για κάθε σύνδεση.
    • ssh-copy-id docker@$worker1IP
  • Εδώ παίρνουμε ένα bash στον worker1 και κάνουμε copy ένα προετοιμασμένο αρχείο στο configuration ssh file του worker1 ώστε να επιτρέπει συνδέσεις με κλειδιά (γραμμή 56 PasswordAuthentication no, γραμμή 61 ChallengeResponseAuthentication no , γραμμή 84 UsePAM yes ).
    • ssh docker@$worker1IP
    • bash
    • sudo cp /project/sshdconfrsa /etc/ssh/sshd_config
  • Στην συνέχεια κάνουμε restart το ssh service ώστε να ισχύσουν οι ρυθμίσεις και πλέον μπορούμε να κάνουμε συνδέσεις ssh από τον master στον worker χωρίς κωδικό.
    • sudo service ssh restart

Ssh_KeyEnable_Master_Node

asciicast