DigitalOcean – Server Administration – OwnCloud

ΑΥΤΗ Η ΔΗΜΟΣΙΕΥΣΗ ΕΧΕΙ ΓΙΝΕΙ ΠΑΝΩ ΑΠΟ ΕΝΑ ΧΡΟΝΟ ΠΡΙΝ!

Σε αυτό τον οδηγό Θα καλύψουμε ένα κάπως μεγάλο εύρος. Aπό τη δημιουργία ενός εικονικού διακομιστή, τη βασική διαχείριση, μέχρι τη βασική ασφάλεια, αλλά και το στήσιμο και εκμετάλλευση ενός περιβάλλοντος OwnCloud.
Παίρνω εδώ ως παράδειγμα το OwnCloud διότι και αρκετά γνωστό είναι, και αρκετά χρήσιμο, αλλά και σχετικά εύκολο στην αρχικοποίηση (initialization). Έτσι, δε θα σπαταλήσουμε πολλή ώρα κάνοντας αρχικές ρυθμίσεις, αλλά θα ασχοληθούμε με αυτό που μας ενδιαφέρει περισσότερο, τη διαχείριση ενός server (ή OwnCloud Server αν θέλετε). Τα βασικά βήματα τουλάχιστον. Μη ξεγελιόμαστε ότι μετά από αυτό τον οδηγό γίναμε server administrators, αλλά θα έχουμε αποκτήσει μια πρώτη εμπειρία, μια στενή επαφή (έστω και πρώτου τύπου).
Το σημαντικότερο ίσως, είναι ότι δε θα μας κοστίσει τίποτα. Τουλάχιστον για δύο μήνες, θα έχουμε ένα κανονικότατο server στα χέρια μας για να πειραματιστούμε.

ΠΕΡΙΕΧΟΜΕΝΑ

  1. Πως θα πάρουμε 10$ (ή δύο μήνες) δωρεάν στη DigitalOcean
  2. Αρχικοποίηση DigitalOcean, Εγκατάσταση Ubuntu Server και OwnCloud
  3. Βασική ασφάλεια (hardening login)
  4. Δωρεάν Domain Name
  5. Δωρεάν πιστοποιητικό με τη χρήση του Let’s Encrypt (και αυτοματοποίηση ανανέωσης-renewal)
  6. Αρχικές ρυθμίσεις και βασική ασφάλεια OwnCloud
  7. Iptables και Fail2Ban, εγκατάσταση και ρύθμιση για Apache και OwnCloud
  8. Lynis, έλεγχος ασφαλείας(post link)

Ο συγκεκριμένος οδηγός είναι διαθέσιμος και στο GitBook για όσους/ες τους βολεύει.

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

Καλό διάβασμα.


 

Δωρεάν 10$ στη DigitalOcean

Να πούμε καταρχήν ότι ο συγκεκριμένος πάροχος είναι από τους πιο γνωστούς και αξιόπιστους στο χώρο. Πάντα ισχύει, και ας μη το ξεχνάμε, το ρητό «Ότι πληρώνεις παίρνεις».
Στη συγκεκριμένη περίπτωση βέβαια δε θα πληρώσουμε κάτι, αλλά θα πάρουμε αυτά τα 10$ για να ξεκινήσουμε μέσω ενός προγράμματος referral. Ποιο Referral θα χρησιμοποιήσουμε; το δικό μου (χαχαχα).
Πέραν της πλάκας, το Referral είναι κάτι απαραίτητο. Αυτός του οποίου το Referral θα χρησιμοποιηθεί δε παίρνει τίποτα, παρά μόνο στη περίπτωση όπου αυτός που το χρησιμοποίησε ξοδέψει πάνω από 25$.
Σκοπός μας εδώ όμως δεν είναι τα δολάρια, αλλά να κάνουμε τη δουλειά μας χωρίς να χρεωθούμε κάτι. Οπότε, αν έχετε και άλλο Referral να προτείνετε.. be my guest.
Κλικ λοιπόν εδώ: https://m.do.co/c/aa51147ad3cb
και εγγραφή με κανονικό e-mail. Θέλουμε ένα γνωστό email provider, αυτά τα 10-minutes mail…κλπ μόνο προβλήματα θα μας δημιουργήσουν. Το email θα το χρησιμοποιήσουμε και αργότερα. Αν δε θέλουμε να δώσουμε κάποιο από αυτά που έχουμε, μπορούμε να δημιουργήσουμε ένα καινούριο ( 5 λεπτά υπόθεση) σε ένα γνωστό provider, Gmail, Yahoo…κλπ, γι’ αυτό το σκοπό.

Θέλουμε ισχυρούς κωδικούς, θέλουμε ισχυρούς κωδικούς ( να το ξαναγράψω; ), Παντού!
Ένα πρόγραμμα εύκολο, γρήγορο, αξιόπιστο και συνήθως προ-εγκατεστημένο είναι το apg. Αποθηκεύστε τον παραγόμενο κωδικό σε ένα αρχείο για να τον κάντε copy-paste. Αν έχετε σκοπό να διατηρήσετε το λογαριασμό σας στη DO, ενεργοποιείστε και το 2-Factor Authentication.

 
Παράδειγμα παραγωγής ισχυρού κωδικού με apg.

/usr/bin/apg -a 1 -n 5 -m 14 -x 16 -s 

Θα σας ζητηθεί να πληκτρολογήσετε χαρακτήρες. «Παίξτε το πιανίστας» και με κρατημένο το Shift ρίξτε μια σε όλο το πληκτρολόγιο και μετά πατήστε Enter.
Θα παραχθούν 5 κωδικοί από 14 έως 16 χαρακτήρες.

 

Αρχικές ρυθμίσεις DigitalOcean, εγκατάσταση Ubuntu Server και OwnCloud

Έχουμε δημιουργήσει το λογαριασμό μας στη DO και αν πάμε στις ρυθμίσεις(settings) θα δούμε και το υπόλοιπό μας, 10$. Εδώ εμείς θα δημιουργήσουμε ένα Droplet (έτσι τα ονομάζουν) με 5$ το μήνα, εξ ου και οι δύο μήνες που αναφέραμε παραπάνω. Για τη δουλειά που το θέλουμε, για το OwnCloud δηλαδή, οι πόροι που μας διατίθενται με 5$ το μήνα είναι μια χαρά.
Πατάμε «Create Droplet. Προεπιλεγμένο είναι το Ubuntu 14.04 LTS ως server και αυτό κρατάμε σε αυτό τον οδηγό. Ακριβώς δίπλα (με κάπως αχνά γράμματα) βλέπουμε το One-Click Apps, το επιλέγουμε και από εκεί επιλέγουμε το OwnCloud.
Παρακάτω, αλλάζουμε τη προεπιλογή σε 5$/Mo και επιλέγουμε ένα DataCenter στην Ευρώπη.
Πάμε στο Add your SSH keys και πατάμε New SSH key. Αν έχουμε ήδη κάποιο κλειδί SSH δίνουμε εκεί το (public φυσικά) κλειδί μας. Αν δεν έχουμε, πάμε να δημιουργήσουμε.

ssh-keygen -t rsa

Σώστε το κλειδί με όποιο όνομα σας αρέσει, στον κατάλογο χρήστη (στον default δηλαδή, τον κρυφό .ssh κατάλογο) και δώστε κωδικό πρόσβασης (μη τον αφήσετε κενό).
Αφού ολοκληρωθεί η διαδικασία θα δημιουργηθούν δυο κλειδιά με το όνομα που επιλέξατε (αν δεν επιλέξατε κάποιο θα έχουν ονομαστεί id_rsa και id_rsa.pub). Αυτό το .pub θέλουμε εμείς. Ανοίξτε το με έναν editor και κάντε τα περιεχόμενα copy-paste στο παράθυρο της DigitalOcean. Έτοιμοι.
Αν θέλουμε, στο Finalize μπορούμε να αλλάξουμε το hostname με κάτι δικό μας.
Πατώντας το Create περιμένουμε (συνήθως λιγότερο από 1 λεπτό) ώστε να δημιουργηθεί ο Server μας.

Τι κάναμε μέχρι τώρα:

  • Δημιουργήσαμε και ρυθμίσαμε το λογαριασμό μας στη DigitalOcean. Έχουμε και 10$ για ξόδεμα.
  • Κάναμε εγκατάσταση Ubuntu Server 14.04 LTS και OwnCloud
  • Έχουμε ήδη εγκαταστήσει LAMP (μέσω του OwnCloud)
  • Έχουμε ήδη προσθέσει το SSH κλειδί μας στο Server. Θα το δούμε στη διαδρομή : ~/.ssh/authorized_keys


 

Βασική ασφάλεια (hardening login)

Πάμε να κάνουμε το πρώτο μας login στον server. Θα χρησιμοποιήσουμε το ssh κλειδί μας.

ssh root@ip-address

Την ip-address θα τη δούμε στη καρτέλα Droplets.
DO-IP
Θα μας ζητηθεί ο κωδικός για το κλειδί SSH, δίνοντάς τον σωστά είμαστε πλέον συνδεδεμένοι στο server μας.
Δε χρειάζεται να κάνουμε updates, για τώρα. Τα updates έχουν γίνει κατά τη διάρκεια της δημιουργίας του server. Πάμε ευθείς αμέσως να απενεργοποιήσουμε το root login με κωδικό (μιας και έχουμε το ssh κλειδί μας και δουλεύει σωστά), ώστε να αποφύγουμε επιθέσεις τύπου brute force.

nano /etc/ssh/sshd_config

και αλλάζουμε το PermitRootLogin yes σε PermitRootLogin without-password , αποθηκεύουμε το αρχείο και κάνουμε μια επανεκκίνηση του SSH

service ssh restart

Εάν δεν γνωρίζετε πως να χρησιμοποιήσετε έναν CLI Editor, πρέπει να μάθετε. Γραφικό περιβάλλον εδώ δεν έχει. Για αρχή ρίξτε μια ματιά εδώ για τον nano.
Έτσι δυσκολέψαμε το login στον server, μιας και για να μπει κάποιος τώρα θα πρέπει να έχει το private ssh κλειδί μας, αλλά να ξέρει και τον κωδικό (του SSH κλειδιού). Brute force attacks θα συνεχίσουν να γίνονται βέβαια, χωρίς ουσία όμως.
Έχουν ήδη αρχίσει σχεδόν από το πρώτο λεπτό που ο server μας πήρε «σάρκα και οστά». Αν δε με πιστεύετε ρίξτε μια ματιά στο /var/log/auth.log . Τα bots είναι πάντα σε αναμονή.

Θεωρείται ακόμη πιο ασφαλές να απενεργοποιήσουμε το login ως root εντελώς. Πρέπει όμως πρώτα να δημιουργήσουμε έναν απλό χρήστη, ο οποίος θα έχει δικαιώματα sudo βέβαια. Αφού δοκιμάσουμε ότι λειτουργούν όλα εντάξει, θέτουμε το PermitRootLogin σε no.
Έτσι, ακόμη και αν κάποιος καταφέρει να μπει στο server, θα έχει άλλον έναν κωδικό να μαντέψει πριν αποκτήσει δικαιώματα root.
Πάμε να το κάνουμε (στον server είμαστε τώρα, ως root)

adduser username

όπου username δίνουμε το επιθυμητό. Θα ρωτήσει διάφορα πράγματα στα οποία απαντάμε. Αν δε θέλουμε να απαντήσουμε, απλά πατάμε Enter. Σε αυτά που πρέπει σίγουρα να απαντήσουμε είναι ο κωδικός πρόσβασης και το όνομα χρήστη.

gpasswd -a username sudo

για να προσθέσουμε το χρήστη στο group sudo ώστε να έχει δικαιώματα διαχειριστή. Πάμε να χρησιμοποιήσουμε επιτόπου το ίδιο SSH κλειδί.

mkdir /home/username/.ssh
cp ~/.ssh/authorized_keys /home/username/.ssh/
chown -R username:username /home/username/.ssh
chmod 700 /home/username/.ssh
chmod 600 /home/username/.ssh/authorized_keys

Κάνουμε ένα logout από το server και προσπαθούμε να συνδεθούμε με ssh username@ip-address. Δουλεύει; πρέπει να δουλεύει.
Για να δοκιμάσουμε τώρα και τα root privileges.

sudo apt-get update

Δουλεύει; πρέπει να δουλεύει. Τότε μπορούμε να απενεργοποιήσουμε το root login εντελώς.

sudo nano /etc/ssh/ssh_config

αλλάζοντας το PermitRootLogin σε no. Αποθηκεύουμε και κάνουμε μια επανεκκίνηση του SSH.

sudo service ssh restart

Κάνοντας αποσύνδεση από το server και πηγαίνοντας να συνδεθούμε με ssh root@ip-address θα δούμε ότι μας ζητά πλέον κωδικό. Δεν υπάρχει όμως κωδικός, «μαϊμού» η υπόθεση. Ότι και να δώσουμε θα το απορρίψει.
Δε πάμε να τον κλειδώσουμε και τελείως να ξεμπερδεύουμε;

sudo passwd -l root

και βλέπουμε με

sudo passwd -S root

αυτό το κεφαλαίο L το οποίο υποδηλώνει ότι ο χρήστης root έχει πλέον κλειδωθεί. Αν θέλουμε να αποφύγουμε τη sudo για κάποιο λόγο και να λειτουργούμε ως root, θα πρέπει να δώσουμε

sudo su

Τι κάναμε:

  • Συνδεθήκαμε στο server μας για πρώτη φορά, μέσω SSH
  • Δυσκολέψαμε τη σύνδεση απενεργοποιώντας το login με χρήση κωδικού
  • Για περισσότερη ασφάλεια δημιουργήσαμε έναν απλό χρήση και απενεργοποιήσαμε εντελώς το root login
  • Κλειδώσαμε εντελώς το χρήστη root (bye,bye)


 

Δωρεάν Domain Name

Για τις ανάγκες που το θέλουμε εμείς, ένα δωρεάν Domain είναι ότι πρέπει. Αν βέβαια διαθέτουμε ήδη δικό μας, μπορούμε να χρησιμοποιήσουμε αυτό. Μην επαφίεστε όμως σε δωρεάν Domains αν πρόκειται να στήσετε κάποια σελίδα ή blog.
Για τη login screen του OwnCloud μια χαρά είναι, αλλά όπως είπαμε και προηγουμένως ισχύει πάντα το «ότι πληρώνεις παίρνεις», οπότε θα προτείνω ένα επί πληρωμή Domain για περισσότερα πράγματα.
Πάμε στη διεύθυνση: http://www.freenom.com και δημιουργούμε ένα δωρεάν Domain. Δίνουμε το email μας για επιβεβαίωση (θα σταλεί email επιβεβαίωσης που πρέπει να πιστοποιήσουμε).
Αφού ολοκληρωθεί και αυτό, κάνουμε login και πάμε στις ρυθμίσεις και κάνουμε κλικ στο DNS Records. Εκεί κάνουμε copy-paste την ip του server μας.
freenom-dns

Τι κάναμε:

  • Δημιουργήσαμε ένα δωρεάν Domain Name
  • Ρυθμίσαμε τα DNS records ώστε να αντιστοιχούν σε εκείνα του server μας


 

Δωρεάν πιστοποιητικό με τη χρήση του Let’s Encrypt

Πριν ξεκινήσουμε με το HTTPS, πάμε να κάνουμε δυο ρυθμίσεις

sudo nano /etc/apache2/sites-available/owncloud-ssl.conf 

και προσθέτουμε στο ServerName το δικό μας domain

ServerName DOMAIN

Έπειτα

sudo nano /etc/apache2/sites-available/000-owncloud.conf

και στην αρχή του κειμένου προθέτουμε τις δυο παρακάτω γραμμές

ServerName DOMAIN
ServerAlias www.DOMAIN
sudo service apache2 restart

Πάμε να ετοιμάσουμε και το HTTPS μας τώρα.

sudo su
git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

σε περίπτωση που λείπει το git, το κάνουμε εγκατάσταση με
sudo apt-get install git.

cd /opt/letsencrypt
./letsencrypt-auto --apache -d DOMAIN

όπου DOMAIN το αντικαθιστούμε με το δικό μας.
Θα μας ρωτήσει σε κάποια στιγμή για το αν θέλουμε να ενεργοποιήσουμε μόνιμα το https και αυτό θα επιλέξουμε. Συνήθως είναι η δεύτερη(κάτω) επιλογή από τις δυο που θα βγάλει.
Πλέον το https μας είναι έτοιμο και μπορούμε να συνδεθούμε με ασφάλεια. Το http δε το θέλουμε καθόλου και θα απενεργοποιηθεί εντελώς.
Για την ανανέωση του πιστοποιητικού θα χρησιμοποιήσουμε ένα script σε cron job. Τα πιστοποιητικά του Let’s Encrypt έχουν διάρκεια περί τις 90 ημέρες (περίπου).
Ως root δίνουμε

crontab -e

και συμπληρώνουμε μέσα τα παρακάτω

30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

αποθηκεύουμε και πλέον ο έλεγχος και η ανανέωση θα γίνεται αυτόματα και τα αποτελέσματα θα αναγράφονται στο /var/log/le-renew.log.

Τι κάναμε:

  • Δημιουργήσαμε έγκυρο πιστοποιητικό ασφαλούς σύνδεσης (https)
  • Ρυθμίσαμε την αυτόματη ανανέωση του πιστοποιητικού μας


 

Αρχικές ρυθμίσεις και ασφάλεια OwnCloud

Πριν πάμε να συνδεθούμε στο OwnCloud μέσω web interface, πρέπει να κάνουμε μια ρύθμιση. Ανοίγουμε το αρχείο

sudo nano /var/www/owncloud/config/config.php

και στο κομμάτι που αναφέρει trusted domains , γράφουμε το δικό μας. Παρακάτω το αναγράφω ως DOMAIN.

 'trusted_domains' =>
  array (
    0 => 'DOMAIN',
  ),

Αποθηκεύουμε το αρχείο και κάνουμε μια επανεκκίνηση τον apache.

sudo service apache2 restart

Τώρα πηγαίνουμε στο domain μας μέσω ενός περιηγητή (στον τοπικό μας υπολογιστή εννοείται) και μέσα από μια ασφαλή πλέον σύνδεση, γράφουμε το όνομα χρήστη (admin) και τον κωδικό. Ο κωδικός μας έχει δοθεί από τη πρώτη στιγμή που στήσαμε το server. Αν για κάποιο λόγο δε τον σημειώσαμε, βρίσκεται στο αρχείο /etc/motd.tail .
Το motd είναι ένα αρχείο που εμφανίζει ότι μήνυμα του γράψουμε εμείς κάθε φορά που συνδεόμαστε στο server. Εκεί έχουν αποθηκευτεί κάποιες πληροφορίες για το OwnCloud, μέσα σε αυτές και το όνομα χρήστη και ο κωδικός. Για να μην εμφανιστεί ξανά αυτό το μήνυμα το μόνο που έχουμε να κάνουμε είναι να διαγράψουμε το αρχείο. Το motd είναι αρχικά του message of the day.

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

Τι κάναμε:

  • Ρυθμίσαμε το trusted domains στο config.php
  • Συνδεθήκαμε για πρώτη φορά στο OwnCloud και αλλάξαμε το κωδικό διαχειριστή


 

Iptables και Fail2Ban, εγκατάσταση και ρύθμιση για Apache και OwnCloud

Πάμε να ασφαλίσουμε λίγο περισσότερο το server μας.
Τα εργαλεία Iptables και Fail2Ban είναι ευρέως γνωστά και χρησιμοποιούνται αρκετά σε server συστήματα. Αν θέλουμε να ασχοληθούμε εις βάθος και σοβαρά, υπάρχουν αρκετοί οδηγοί στο Web που μπορούμε να διαβάσουμε.
Εδώ, θα κάνουμε κάποιες αρχικές ρυθμίσεις για τη βασική ασφάλεια του server μας.
Πάμε όμως πρώτα να τα εγκαταστήσουμε.

sudo apt-get install fail2ban iptables-persitent

Εγκαθιστούμε εδώ το πακέτο iptables-peristent ώστε να μας δίνεται η δυνατότητα να αποθηκεύουμε τις ρυθμίσεις μας εύκολα και αυτές να διατηρούνται κατά τη διάρκεια μιας επανεκκίνησης.
Πάμε να ρυθμίσουμε το iptables πρώτα.

sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -j DROP

Δε θα αναλύσω τι σημαίνουν τα παραπάνω, χονδρικά θα πω ότι:
αποδεχόμαστε τις υπάρχουσες συνδέσεις (RELATED, ESTABLISHED),
αποδεχόμαστε συνδέσεις μέσω SSH και HTTPS,
ενώ απορρίπτουμε όλες τις υπόλοιπες.
Για να δούμε τους κανόνες που εισάγαμε, δίνουμε

sudo iptables -S

Αν θέλουμε να διαγράψουμε τους κανόνες,

sudo iptables -F

Αν θέλουμε να διαγράψουμε ένα συγκεκριμένο κανόνα

sudo iptables -D INPUT -j DROP

Πάμε να ρυθμίσουμε και το Fail2Ban.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Μέσα στο αρχείο βρίσκουμε την ενότητα για apache και το αλλάζουμε σε true, ενώ θέτουμε το maxentry σε 3.

[apache]
enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 3

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

[owncloud]
enabled = true
filter  = owncloud
maxretry = 3
port    =  http,https
logpath = /var/www/owncloud/data/owncloud.log

Αποθηκεύουμε το αρχείο και συνεχίζουμε με ένα άλλο αρχείο.

sudo nano /etc/fail2ban/filter.d/owncloud.conf

Το αρχείο αυτό είναι κενό κι εκεί προσθέτουμε τα παρακάτω

[Definition]
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: ''\)","level":2,"time":".*"}

ignoreregex =

Αποθηκεύουμε το αρχείο.

Ρυθμίσεις ώρας
Πριν δοκιμάσουμε κατά πόσον οι κανόνες που φτιάξαμε λειτουργούν σωστά, θα πρέπει να ρυθμίσουμε την ώρα.

sudo dpkg-reconfigure tzdata

και ρυθμίζουμε σε Europe/Athens.

sudo nano /etc/php5/cli/php.ini

βρίσκουμε την επιλογή για date.timezone , αφαιρούμε από μπροστά το ερωτηματικό (semi colon) και συμπληρώνουμε Europe/Athens.
Η γραμμή δηλαδή να γίνει έτσι

date.timezone = Europe/Athens

Το επόμενο αρχείο είναι

sudo nano /var/www/owncloud/config/config.php

στο οποίο αλλάζουμε κι εκεί το αντίστοιχο logtimezone σε Europe/Athens

'logtimezone' => 'Europe/Athens',

Κάνουμε επανεκκίνηση όλες τις υπηρεσίες και έπειτα αποθηκεύουμε τις ρυθμίσεις του iptables.

sudo service apache2 restart && sudo service fail2ban restart
sudo invoke-rc.d iptables-persistent save

Δίνοντας πλέον

sudo iptables -S

θα δούμε κάποιους πρόσθετους κανόνες που έχουν παραχθεί από το fail2ban.

N fail2ban-apache
-N fail2ban-owncloud
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-owncloud
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache
- A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-apache -j RETURN
-A fail2ban-owncloud -j RETURN

Πάμε να δοκιμάσουμε και αν δουλεύει;
Πηγαίνουμε στο domain μας και πληκτρολογούμε 3 φορές λάθος κωδικό. Μετά τις 3 φορές θα πρέπει το site να φαίνεται ως unreachable.
Αν όλα δούλεψαν σωστά, έχουμε κάνει ban τον εαυτό μας. Συγχαρητήρια.
Βλέπουμε στο log του fail2ban την αντίστοιχη αναφορά

cat /var/log/fail2ban.log
fail2ban.actions: WARNING [owncloud] Ban IP-ADDRESS

όπου IP-ADDRESS θα είναι η δική μας.
Έχει ήδη δημιουργηθεί ένας κανόνας στο iptables γι’ αυτό που έγινε, για το ban δηλαδή. Οπότε, για να κάνουμε unban, βλέπουμε τον κανόνα με

sudo iptables -S

ο οποίος θα είναι της μορφής

-A fail2ban-ownlcoud-s IP-ADDRESS -j REJECT --reject-with icmp-port-unreachable

και τον αφαιρούμε με -D.

Κατά καιρούς θα δούμε πολλές αναφορές και σε ssh ban, μιας και το SSH, αν και δεν το αναφέραμε παραπάνω, είναι από προ-επιλογή ενεργοποιημένο στο fail2ban.

Επίλογος

Με αυτά τα βασικά μπορεί να ξεκινήσει κάποιος/α να ασχολείται με servers. Έτσι για αρχή. Θυμηθείτε εξάλλου ότι δεν θα σας κοστίσει κάτι, θα έχετε δυο μήνες να εξασκηθείτε και να δείτε στη πράξη πως είναι.
Αν τυχόν και σας συμφέρει, εσείς ξέρετε, μπορείτε να κρατήσετε και το OwnCloud , 20GB με 5$/mo.

One thought on “DigitalOcean – Server Administration – OwnCloud

Συμβάλετε κι εσείς με ένα σχόλιο

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s