Panagiotis_Klironomos
1c3cdb2d8e
|
4 years ago | |
---|---|---|
.. | ||
README.md | 4 years ago | |
fail2bansshconf | 4 years ago | |
lexikoright | 4 years ago | |
lexikowrong | 4 years ago | |
master.sh | 4 years ago | |
masterkeyenable.sh | 4 years ago | |
sshconfrsa | 4 years ago | |
sshdconf | 4 years ago | |
worker1.sh | 4 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
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
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