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
Répondre…