まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

mercredi, 8 septembre 2010

Serveur internet @ la maison -2-

Suite du premier épisode

Commençons cette série de billets de notes d'installation et configuration du serveur, par l'installation du LAMP (Linux/Apache/Mysql/Php)

1 - Amorçage de l'installation de GNU/Linux Debian Stable avec une clé USB :

  • La méthode facile et rapide, mais non sans danger avec la commande dd !
dd if=chemin-et-nom-de-l'iso of=/dev/sdX bs=4M; sync

Puis retirer la clé.

Attention à utiliser le nom correct pour la clé. Soyez sûr de vous, en cas d'erreur sur ce point le risque d'effacer son disque dur est probable !!!
Frileux ?? Alors préférez la méthode ci-dessous :

1.1 - Partitionner :

un périphérique USB en FAT16 ou FAT32.

1.2 - Rendre la clé bootable :

installer au préalable les paquets syslinux et mtools, et lancer :

#syslinux /dev/sdX1

Attention à utiliser le nom correct pour la clé. La partition ne doit pas être montée au lancement de syslinux. Cette procédure écrit un secteur d'amorçage sur la partition et crée le fichier ldlinux.sys qui contient le code du programme d'amorçage.

1.3 - Ajouter les fichiers de boot :

Les fichiers de boot se trouvent à cette adresse
http://www.debian.org/releases/stable/i386/ch04s02.html.fr#wherefiles
Dans le dossier hdmedia/

Montez la partition (mount /dev/sdX1 /mnt) et copier les fichiers suivants à la racine de la clé :

  • vmlinuz, noyau binaire
  • initrd.gz, image du disque virtuel initial
  • syslinux.cfg ,fichier de configuration de SYSLINUX qui doit contenir :
                                             default vmlinuz
                                             append initrd=initrd.gz

Copiez une image ISO de type « netinst ». Démontez la clé (umount /mnt) et voilà, c'est fait !

1.4 - BOOT :

Si le système refuse de s'amorcer à partir de la clé, il se peut que le secteur principal d'amorçage de la clé soit défectueux. Le corriger avec le programme installmbr qui se trouve dans le paquet mbr :

#installmbr/dev/sdX


2 - Installation du système :

- Renseigner Hostname : debianbox Domaine : mondomaine.fr
- Si besoin, pour modifier, éditer /etc/hostname => debianbox
- éditer /etc/hosts => 127.0.1.1 debianbox.mondomaine.fr debianbox
- La commande hostname -f renvoie donc debianbox.mondomaine.fr

Arrivé à l’étape du choix des logiciels, Tout décocher.

3 - Installation de logiciels utiles :

#apt-get install lmsensors opensshserver hddtemp bzip2 unzip ntpdate host pciutils vim rsync less ccze


4 - Installation d'apache, php et Mysql :

#apt-get install apache2 php5 php5mysql mysqlserver5.0 php5gd php5cli

À suivre…

lundi, 6 septembre 2010

Maintenance périodique du serveur

dsc07041.jpg Outre les sauvegardes régulières des données des sites web et les mises à jours du système, j'éteins le serveur environ tous les 6 mois pour le soumettre à un petit dépoussiérage en règle, rendant alors plus efficace le refroidissement des composants.


J'ai aussi profité de cet arrêt pour ajouter la grille de ventilation extérieure… cette pièce manquait pour achever le boitier.



dsc07042.jpg dsc07046.jpg dsc07047.jpg

mardi, 4 mai 2010

Cycle de conférences à Sciences-Po : «Qu'est-ce qu'Internet ? - N°3: Impacts sur la société, conséquences politiques»

Par Benjamin Bayart http://blog.fdn.fr/post/2010/04/12/Cycle-de-conferences-a-Science-Po
En Attendant que les p'tis gars de Sciences-Po mettent en ligne leurs enregistrements, voici mon enregistrement de ce soir.
Je ne vois pas trop ce qui leur à empêché de les mettre à disposition depuis, mais parait-'il que ça devrait plus tarder, les 3 conférences d'un coup donc, sur leur site http://www.libertesnumeriques.net… je les relaierais aussi quand elles seront prêtes.

Mauvais éclairage et compression à mort pour ce 3iéme et dernier volet (cherchez pas le premier, je n'ai pu y assister), le plus important c'est l'audio ;

Et la séance de question suivante :

samedi, 24 avril 2010

Fail2Ban, ça marche !!

Que faire lorsqu'en matant nonchalamment ses logs apache ou mail, on aperçoit des activités suspectes et inquiétantes ?

Apr  1 03:59:06 debianbox postfix/smtpd[23214]: warning: 112.104.64.66: hostname 112-104-64-66.adsl.dynamic.seed.net.tw verification failed: Name or service not known
Apr  1 03:59:06 debianbox postfix/smtpd[23214]: connect from unknown[112.104.64.66]
Apr  1 03:59:07 debianbox postfix/smtpd[23214]: NOQUEUE: reject: RCPT from unknown[112.104.64.66] 554 5.7.1 <vbibiorm@gmail.com>: Relay access denied; from=<wendy67510@gmail.com> to=<vbibiorm@gmail.com> proto=SMTP helo=<212.198.153.217>
Apr  1 03:59:07 debianbox postfix/smtpd[23214]: lost connection after RCPT from unknown[112.104.64.66]
Apr  1 03:59:07 debianbox postfix/smtpd[23214]: disconnect from unknown[112.104.64.66]
Apr  1 04:02:27 debianbox postfix/anvil[23217]: statistics: max connection rate 1/60s for (smtp:112.104.64.66) at Apr  1 03:59:06
Apr  1 04:02:27 debianbox postfix/anvil[23217]: statistics: max connection count 1 for (smtp:112.104.64.66) at Apr  1 03:59:06
Apr  6 13:53:43 debianbox postfix/smtpd[11331]: warning: 117.93.116.180: hostname 180.116.93.117.broad.yc.js.dynamic.163data.com.cn verification failed: Name or service not known
Apr  6 13:53:43 debianbox postfix/smtpd[11331]: connect from unknown[117.93.116.180]
Apr  6 13:53:44 debianbox postfix/smtpd[11331]: lost connection after AUTH from unknown[117.93.116.180]
Apr  6 13:53:44 debianbox postfix/smtpd[11331]: disconnect from unknown[117.93.116.180]
Apr  7 17:02:13 debianbox postfix/smtpd[19164]: connect from 123-205-233-194.adsl.dynamic.seed.net.tw[123.205.233.194]
Apr  7 17:02:14 debianbox postfix/smtpd[19164]: NOQUEUE: reject: RCPT from 123-205-233-194.adsl.dynamic.seed.net.tw[123.205.233.194] 554 5.7.1 <vbibiorm@gmail.com>: Relay access denied; from=<wendy67510@gmail.com> to=<vbibiorm@gmail.com> proto=SMTP helo=<212.198.153.217>
Apr  7 17:02:14 debianbox postfix/smtpd[19164]: lost connection after RCPT from 123-205-233-194.adsl.dynamic.seed.net.tw[123.205.233.194]
Apr  7 17:02:14 debianbox postfix/smtpd[19164]: disconnect from 123-205-233-194.adsl.dynamic.seed.net.tw[123.205.233.194]
Apr  8 13:08:00 debianbox postfix/smtpd[10575]: connect from 118-166-210-124.dynamic.hinet.net[118.166.210.124]
Apr  8 13:08:00 debianbox postfix/smtpd[10575]: lost connection after CONNECT from 118-166-210-124.dynamic.hinet.net[118.166.210.124]
Apr  8 13:08:00 debianbox postfix/smtpd[10575]: disconnect from 118-166-210-124.dynamic.hinet.net[118.166.210.124]
Apr  9 22:56:46 debianbox postfix/smtpd[8262]: connect from 118-166-208-126.dynamic.hinet.net[118.166.208.126]
Apr  9 22:56:47 debianbox postfix/smtpd[8262]: NOQUEUE: reject: RCPT from 118-166-208-126.dynamic.hinet.net[118.166.208.126] 554 5.7.1 <vkihwpdh@yahoo.com.tw>: Relay access denied; from=<z2007tw@yahoo.com.tw> to=<vkihwpdh@yahoo.com.tw> proto=SMTP helo=<212.198.153.217>
Apr  9 22:56:47 debianbox postfix/smtpd[8262]: lost connection after RCPT from 118-166-208-126.dynamic.hinet.net[118.166.208.126]
Apr  9 22:56:47 debianbox postfix/smtpd[8262]: disconnect from 118-166-208-126.dynamic.hinet.net[118.166.208.126]

Rien pourrait'-on se dire, «les ports sont ouverts» :(
Et pourtant il est possible de bannir pour un temps donné ces malotrus !!

«yaka» installer Fail2Ban (nécessite iptables pour NetFilter)

#apt-get install fail2ban


Vérifier le fichier de configuration : /etc/fail2ban/fail2ban.conf

      [Definition]
      loglevel = 1
      logtarget = /var/log/fail2ban.log
      socket = /var/run/fail2ban/fail2ban.sock

Et il va donc nous faire ça !! du moins c'est ce qu'on croit…

En effet des filtres sont chargés de repérer les IP des malandrins, pour ensuite les transférer à la prison.
C'est donc valable pour les filtres donnés par défaut, mais en cas d'autres activités suspectes, il va falloir créer ses propres filtres !

On crée donc un fichier «.conf» à l'emplacement prévu ! attention , ne pas utiliser de majuscules !

#vi /etc/fail2ban/filter.d/dynamicseed.conf

et on le remplit avec ça :

[Definition]
failregex = warning: <HOST>: hostname *.* verification failed
            NOQUEUE: reject: RCPT from unknown[[]<HOST>[]] *.* Relay access denied
            NOQUEUE: reject: RCPT from *.*[[]<HOST>[]] *.* Relay access denied
            connect from *.*dynamic*.*[[]<HOST>[]]
            disconnect from *.*dynamic*.*[[]<HOST>[]]
ignoreregex =

«Ça», ça tombe pas du ciel, c'est basé sur l'observation des log précédents.

Le but du jeux, c'est de copier une partie du log qui contient l'adresse IP et de la remplacer par <HOST>
Attention cependant, la syntaxe est spécifique quand l'IP est encadrée dans le log

[118.166.208.126] devient [[]<HOST>[]]

De même, si un espace est présent, il faut aussi le respecter !
La où il faut être malin, c'est qu'il faut mettre des *.* aux endroits où le texte change au fil des log.
En effet, même si le filtre fonctionne à l'instant T, il risque de ne plus rien filtrer la fois suivante, alors que la forme du log aura changé…
Donc, plus on a d'attaques, plus on peut affiner la syntaxe du filtre et petit à petit l'étau se resserre, pour que le filtre choppe à tous les coups niark!
D'autant plus qu'on peut mettre plusieurs lignes contenant l'IP…

Il faut maintenant tester ce filtre avant de l'indiquer à la prison.
Pour ce faire, on inscrit en premier le chemin du log qu'on veut filtrer et ensuite le chemin du filtre

#fail2ban-regex /var/log/mail.log /etc/fail2ban/filter.d/dynamicseed.conf

Donne :

Running tests
=============

Use regex file : /etc/fail2ban/filter.d/dynamicseed.conf
Use log file   : /var/log/mail.log


Results
=======

Failregex
|- Regular expressions:
|  [1] warning: <HOST>: hostname *.* verification failed
|  [2] NOQUEUE: reject: RCPT from unknown[[]<HOST>[]] *.* Relay access denied
|  [3] NOQUEUE: reject: RCPT from *.*[[]<HOST>[]] *.* Relay access denied
|  [4] connect from *.*dynamic*.*[[]<HOST>[]]
|  [5] disconnect from *.*dynamic*.*[[]<HOST>[]]
|
`- Number of matches:
   [1] 1 match(es)
   [2] 1 match(es)
   [3] 7 match(es)
   [4] 2 match(es)
   [5] 1 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    66.11.228.136 (Thu Apr 22 10:18:43 2010)
[2]
    205.209.161.50 (Thu Apr 22 12:25:27 2010)
[3]
    123.204.200.199 (Wed Apr 21 03:38:08 2010)
    205.209.161.50 (Thu Apr 22 12:25:27 2010) (already matched)
    64.57.183.77 (Sat Apr 24 14:28:37 2010)
    64.57.183.77 (Sat Apr 24 14:28:37 2010)
    64.57.183.77 (Sat Apr 24 14:28:37 2010)
    64.57.183.77 (Sat Apr 24 14:28:38 2010)
    64.57.183.77 (Sat Apr 24 14:28:38 2010)
[4]
    123.204.200.199 (Wed Apr 21 03:38:07 2010)
    123.204.200.199 (Wed Apr 21 03:38:09 2010)
[5]
    123.204.200.199 (Wed Apr 21 03:38:09 2010) (already matched)

Date template hits:
764442 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601

Success, the total number of match is 12

Ça marche !!! les adresses ont été trouvées

Maintenant, on va ajouter le filtre au fichier prison

#vi /etc/fail2ban/jail.conf

En ajoutant ça à la fin

[dynamicseed]

enabled = true
bantime = 3600000
filter = dynamicseed
action   = iptables[name=dynamicseed, port=smtp]
          sendmail-whois[name=dynamicseed, dest=xxxx@mondomaine.net]
logpath = /var/log/mail.log
maxretry = 1

Respectivement :

  • On active le filtre.
  • Pour une durée de 41 jours (en secondes).
  • Le nom du filtre, qui correspond au nom du fichier sans .conf. ! attention , ne pas utiliser de majuscules !
  • Les deux lignes action vont permettre d'indiquer le port et l'envoie d'un mail pour prévenir en cas d'activation de la prison.
  • Donner le chemin du fichier log à surveiller.
  • Et enfin, le nombre de fois au bout duquel on coffre le suspect.


Et pour finir on va, soit recharger les prisons :

#fail2ban-client reload

Soit redémarrer fail2ban :

#/etc/init.d/fail2ban restart


Et Vérifier qu'il n'y ait pas d'erreur… parfois je ne sais pourquoi, certaines prisons ne se lancent pas, et il est nécessaire de relancer à nouveau le démon.

#tail -f /var/log/fail2ban.log


«yapuka» attendre… jusqu'au jour ou on reçoit un mail

Objet 	[Fail2Ban] dynamicseed: banned 205.209.161.50
De 	Fail2Ban         À 	xxxx@mondomaine.net
Date 	Jeu 11:25

Hi,

The IP 205.209.161.50 has just been banned by Fail2Ban after
1 attempts against dynamicseed. […]


On peut alors aller voir les adresses bloquées

#iptables -L
Chain fail2ban-dynamicseed (1 references)
target     prot opt source               destination
DROP       all  --  205.209.161.50       anywhere
DROP       all  --  66-11-228-136.managemyvps.com  anywhere
DROP       all  --  123-204-200-199.adsl.dynamic.seed.net.tw  anywhere
RETURN     all  --  anywhere             anywhere


Voici une version modifiée de la prison, pour pouvoir bloquer les adresse IP sur plusieurs port à la fois

[dynamicseed]

enabled = true
bantime = 3600000
filter = dynamicseed
action = iptables-multiport[name=dynamicseed, port="smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s"]
         sendmail-whois[name=dynamicseed, dest=xxxx@mondomaine.net]
logpath = /var/log/mail.log
maxretry = 1

- page 4 de 8 -