Οδηγός εγκατάστασης Virtualmin σε Debian

Όπως έχουμε μιλήσει και στο παρελθόν, το Virtualmin είναι ένα πλήρες διαχειριστικό panel. Θα ασχοληθούμε με την αρχική εγκατάσταση βήμα προς βήμα και θα αναλύσουμε κάποια σημεία σχετικά με την ασφάλεια.

Υποθέτωντας ότι έχουμε έτοιμη μια εγκατάσταση του βασικού λειτουργικού μας συστήματος σε έναν VPS ή Dedicated Server οι πρώτες εντολές που θα θέλουμε να τρέξουμε είναι φυσικά του update. Στο παράδειγμά μας θα εγκαταστήσουμε το πρόγραμμα screen και στην συνέχεια θα κάνουμε reboot.

Απαραίτητα βήματα εγκατάστασης

Κάποια βήματα όπως πχ της ρύθμισης της ώρας δεν είναι απαραίτητα αλλά είναι προτιμότερο να ακολουθηθούν πριν την εγκατάσταση του virtualmin.

apt-get update && apt-get -y dist-upgrade && apt-get install screen && apt-get --purge autoremove && apt-get autoclean && reboot

Έπειτα μπορούμε να προχωρήσουμε σε κάποια βασικά configurations σχετικά με την γλώσσα και την ώρα του server.

Τρέχουμε το εργαλείο ρύθμισης των γλωσσών:

dpkg-reconfigure locales

Κι επιλέγουμε "en_US.UTF-8 UTF-8" αν δεν είναι ήδη επιλεγμένο και στην συνέχεια βάζουμε ώρα Ελλάδος στο σύστημά μας, ένας από τους τρόπους είναι ο παρακάτω:

ln -sf /usr/share/zoneinfo/Europe/Athens /etc/localtime
export TZ=Europe/Athens
apt-get install -y ntp ntpdate

Έπειτα μπορούμε να εγκαταστήσουμε το Virtualmin, σημειώστε ότι το τρέχουμε σε screen, καθώς αποτελεί γενικά καλή τακτική εργασίες που παίρνουν κάποια ώρα να τρέχουν σε screen.

screen
cd /root
wget http://software.virtualmin.com/gpl/scripts/install.sh
/bin/sh install.sh

Εγκατάσταση PHP extensions και Apache modules. Εγκαθίστανται ήδη τα βασικά, αλλά για λόγους πληρότητας παρουσιάζουμε μία ενδεικτική λίστα, μπορείτε να την προσαρμόσετε φυσικά ανάλογα με τις ανάγκες σας.

apt-get install -y php5-memcache php5-memcached memcached php-apc php-pear php-auth php5-mcrypt mcrypt php5-gd php5-imagick imagemagick php5-curl php5-intl php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
apt-get install -y mod-security-common
a2enmod expires
a2enmod rewrite
a2enmod deflate

Προεραιτικά βήματα και ασφάλεια:

Δημιουργία ασφαλούς /tmp mount

Υπάρχουν διάφορες τεχνικές και πρακτικές σχετικά με το συγκεκριμένο θέμα, ενδεικτικά δημιουργούμε ένα αρχείο 512MB για χρήση /tmp partition:

dd if=/dev/zero of=/tmp_block_file bs=1024 count=524288
mke2fs j /var/tmp_block_file
mv  /tmp /tmp_backup
mkdir /tmp
mount -o loop,noexec,nosuid,rw /tmp_block_file /tmp
chmod 1777 /tmp
cp -R /tmp_backup/* /tmp/
rm -rf /tmp_backup
mv  /var/tmp /var/tmp_backup
ln -s /tmp /var/tmp
cp -R /var/tmp_backup/* /var/tmp/
rm -rf /var/tmp_backup

Αλλαγή πόρτας SSH

Μπορούμε να αλλάξουμε την πόρτα SSH ώστε να αποφευχθεί ένα σεβαστό ποσό προσπαθειών πρόσβασης από αυτοματοποιημένες επιθέσεις. Στο παράδειγμα την αλλάζουμε από 22 σε 10022 και απενεργοποιούμε το DNS lookup που σε κάποιες περιπτώσεις μπορεί να καθυστερήσει αρκετά την αρχική σύνδεση.

sed -i 's/Port 22/Port 10022/g' /etc/ssh/sshd_config
echo UseDNS no >> /etc/ssh/sshd_config
service ssh restart

"Jail" FTP users

Μπορούμε να ορίσουμε οι χρήστες FTP να έχουν πρόσβαση μόνο στο home directory τους από την διαδρομή: Limits and Validation > FTP Directory Restrictions > Active - Users' home directories κι επιλέγοντας στον κανόνα Active
(Πρώτη εικόνα)

Mail Username format

Από την διαδρομή: System Settings > Server Templates > Mail for domain > Format for usernames that include domain >
μπορούμε να επιλέξουμε το πιο ευανάγνωστο username@domain
(Δεύτερη εικόνα)

Προσθήκη RBL στον Postfix

sed -i 's/reject_unauth_destination/reject_unauth_destination reject_rbl_client zen.spamhaus.org/g' /etc/postfix/main.cf
service postfix restart

Εγκατάσταση fail2ban

apt-get install fail2ban

Και κάνουμε enable θέτωντας "enabled = true" τα επιμέρους "jails", ενδεικτικά κάποια που μπορούν να ενεργοποιηθούν για επιπλέον ασφάλεια:

  • [ssh-ddos]
  • [apache]
  • [apache-noscript]
  • [apache-overflows]
  • [proftpd]
  • [postfix]
  • [sasl]

Σημείωση: Στην περίπτωση που έχουμε αλλάξει SSH port, θα χρειαστεί να προσθέσουμε ένα extra override των default ρυθμίσεων του fail2ban για το SSH μέσω του αρχείου /etc/fail2ban/jail.local που εδώ υποθέτουμε ότι δεν υπάρχει.

touch /etc/fail2ban/jail.local
echo '[ssh]' >>  /etc/fail2ban/jail.local
echo 'enabled  = true' >>  /etc/fail2ban/jail.local
echo 'port     = 10022' >>  /etc/fail2ban/jail.local
service fail2ban restart

Δείτε επίσης:

Screenshots: 
screenshot ενεργοποίησης jail για FTP users στο Virtualmin
screenshot επιλογής e-mail username στο Virtualmin