Tuto sur la sécurisation et l'exploitation des logs
Je partage aujourd'hui l'ensembles des petites astuces que pu trouvé sur la toile
Pour ceux qui serait interesé et qui ont un nom de domaine, je peux aussi vous aider à configurer des sous domaines pour vos utilisateurs, chacun aura sont sous domaine : exemple : adrien.xcid.fr ou encore des boîtes mails, etc etc
Mais venons-en au sujet du tuto :
Sécurisation et Logs
I) Serveur Mail
On va commencer par mettre en place un léger serveur mail pour avoir un retour sur ce qui se passe sur notre serveur
a) Installation de postfix
apt-get install -f postfix mailutils
Lors de l'installation, laisser la configuration par défault et dans Nom de courrier mettre le nom de votre serveur
b) Test
echo 'Salut, je suis un email.' | mail -s 'Hello world'
mail@gmail.com
c) Redirection des mails root
nano /etc/aliases
Rajouter à la fin
root: mail@gmail.com
Pour valider les changements
newaliases
Nouveau test
echo 'Salut, je suis un email.' | mail -s 'Hello world' root
On a fini de configurer le serveur pour qu'il nous envoie des mails en cas de problèmes
II) Sécurisation
a) Configuration SSH
Les principales attaques sur internet se font sur les ports 21/22 et 80
On va donc changer le port SSH et interdire la connexion en root
nano /etc/ssh/sshd_config
Modifier les valeurs, j'ai mis 2 ports en écoute vous pouvez en mettre un seul bien sur.
Port 8080
Port 443
PermitRootLogin no
AllowUsers <user> # Choix des utilisateurs autorisé a se connecter
On relance le daemon
/etc/init.d/ssh restart
On teste sa configuration
sans fermer la fenetre actuelle, en cas de probleme remettre le port 22 ou essayer avec un autre.
Vous pourrez plus vous connecter en root !
Il va falloir vous connecter directement avec votre login (<user>) et non avec root
b) Mail lors connexion root
On va mettre en place un mail lors des connexion ssh root, vous recevrez ainsi un mail a chaque connexion sur le compte root.
nano /root/.bashrc
Ajouter à la fin
echo 'Acces Shell Root le ' `date` `who` | mail -s 'Connexion serveur via root' root
c) Fail2Ban
Installation :
apt-get install -f fail2ban
Configuration :
Fichier jail.conf
nano /etc/fail2ban/jail.conf
Modifier les valeurs suivantes :
destemail = root
# Activation de fail2ban sur le ssh
[ssh-ddos] enable = true
port = 8080
port = 443
# Il faut ensuite mettre des true sur les services que vous voulez surveillez.
#Par exemple : Pam-generic
#Pour lighttpd :
[lighttpd]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/lihttpd/*error.log
maxretry = 6
[lighttpd-noscript]
enabled = true
port = http,https
filter = apache-noscript
logpath = /var/log/lighttpd/*error.log
maxretry = 6
[lighttpd-overflows]
enabled = true
port = http,https
filter = apache-overflows
logpath = /var/log/lighttpd/*error.log
maxretry = 2
# Pour vsftpd
[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
bantime = 1000
maxretry = 3
Fichier de fail2ban.conf
nano /etc/fail2ban/fail2ban.conf
Rajouter à la fin
[MAIL]
enabled = true
from = root
to = root
subject = [Fail2Ban] <section>: Banned <ip>
message = Hi,<br>
The IP <ip> has just been banned by Fail2Ban after
<failures> attempts against <section>.<br>
Regards,<br>
Fail2Ban
Et on redemarre fail2ban
/etc/init.d/fail2ban restart
Vous receverez un mail a chaque ban
d) RKHunter :
RKHunter est un programme qui essaye de détecter les rootkits, portes dérobées et exploits sur votre serveur
Installation
apt-get install -f rkhunter
Configuration
nano /etc/default/rkhunter
Modifier les valeurs :
DB_UPDATE_EMAIL="yes"
nano /etc/rkhunter.conf
Modifier les valeurs :
MAIL-ON-WARNING="root"
Test :
rkhunter -c --sk
Vous obtiendrez des faux positifs, poster les je vous aiderais à les résoudres.
Attention, suite l'utilisation de apt-get ou aptitude, il va falloir lancer la commande suivante pour mettre à jour votre base de software.
rkhunter --propupd
Ou l'automatiser :
nano /etc/apt/apt.conf.d/90rkhunter
et copier :
DPkg::Post-Invoke { "if [ -x /usr/bin/rkhunter ]; then /usr/bin/rkhunter --propupd; fi"; };
III) Lecture des logs
a) Logwatch
Logwatch est un programme qui vous envoie un récapitulatif de ce qui se passe sur votre serveur tout les jours.
Installation :
apt-get install -f logwatch
Configuration basique
nano /usr/share/logwatch/default.conf/logwatch.conf
Modifier les valeurs suivantes :
Output = mail
MailTo = root
Configuration pour lighttpd
cp /usr/share/logwatch/default.conf/logfiles/http.conf /usr/share/logwatch/default.conf/logfiles/lighttpd.conf
cp /usr/share/logwatch/default.conf/services/http.conf /usr/share/logwatch/default.conf/services/lighttpd.conf
cp /usr/share/logwatch/scripts/services/http /usr/share/logwatch/scripts/services/lighttpd
Editions des fichiers :
nano /usr/share/logwatch/default.conf/logfiles/lighttpd.conf
Modifier les valeurs
LogFile = lighttpd/*access_log
LogFile = lighttpd/*access.log.1
LogFile = lighttpd/*access.log
LogFile = lighttpd/*access.log.1
LogFile = lighttpd/*access.log
LogFile = lighttpd/*error.log.1
LogFile = lighttpd/*error.log
nano /usr/share/logwatch/default.conf/services/lighttpd.conf
Modifier les valeurs
Title = "lighttpd"
LogFile = lighttpd
On test :
logwatch
Et vous devriez recevoir un mail avec le récapitulatif

et ensuite un mail journalier
b) AWStats
AWStats est un analyseur de log web mais aussi FTP offrant des vues graphiques statiques mais aussi dynamiques des statistiques d'accès à vos serveurs web. Voir définition WIKI
Installation
apt-get install -f awstats perl liburi-perl
Configuration de lighttpd
nano /etc/lighttpd/lighttpd.conf
Ajouter à la fin
alias.url += (
"/awstatsclasses" => "/usr/local/awstats/wwwroot/classes/",
"/awstatscss" => "/usr/local/awstats/wwwroot/css/",
"/awstatsicons" => "/usr/local/awstats/wwwroot/icon/",
"/awstats" => "/usr/local/awstats/wwwroot/cgi-bin/",
"/icon/" => "/usr/local/awstats/wwwroot/icon/"
)
server.modules += ( "mod_cgi" )
$HTTP["url"] =~ "/awstats/" {
cgi.assign = (
".pl" => "/usr/bin/perl",
".cgi" => "/usr/bin/perl"
)
auth.backend = "htdigest"
auth.backend.htdigest.userfile = "/etc/lighttpd/.aw"
auth.require = ( "/awstats/" =>
(
"method" => "digest",
"realm" => "Awstats",
"require" => "valid-user"
)
}
Création de l'user et changement d'utilisateur sur le repertoire
htdigest -c /etc/lighttpd/.aw 'Awstats' <user>
chown -R www-data:www-data /usr/local/awstats/wwwroot/
Configuration des stats
cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.seedbox.net.conf
nano /etc/awstats/awstats.seedbox.net.conf
Modifier les valeurs suivantes
LogFile="/usr/local/awstats/tools/logresolvemerge.pl /var/log/lighttpd/access.log* |"
SiteDomain="seebox.net"
DirData="."
DNSLookup=1
AllowFullYearView=3
Script d'automatisation
nano /etc/cron.daily/01awstats
#!/bin/bash
# path to cgi-bin
AWS=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
# append your domain
DOMAINS="seedbox.fr"
# loop through all domains
for d in ${DOMAINS}
do
${AWS} -update -config=${d}
done
chmod +x /etc/cron.daily/01awstats
L'executer
/etc/cron.daily/01awstats
Vos stats sont maintenant disponible à l'adresse suivante :
http://ip/awstats/awstats.pl?config=seedbox.fr
Si il ya des interessé, je posterais la configuration pour avoir les stats FTP dans awstats
Voila, si vous avez des problèmes ou des demandes particulières n’hésitez pas.
Par rapport à IPTables,
J'ai essayé de le configurer correctement mais a chaque fois j'ai l'impression que rutorrent télécharge plus aussi vite une fois que c'est en place c'est pourquoi je l'ai desactiver et que je ne l'ai décris ici.
Dernière chose : Je vous conseille d'ajouter les ip de vos collegues dans :
/etc/hosts
(nano /etc/hosts)
par exemple :
88.888.88.88 adrien.fr
A++
EDIT : Suppression de portsentry, je dois me pencher dessus