Catégorie: linux

Emplacemment historique awstats

Arf que de galères ridicules.
J’avais mal configurer awstats et ce cette manière il me faisais des stats sur tout les sites du serveur et pas seulement celui voulu.
Une fois ceci corrigé, je relance le script de génération html mais la merdouile, il conserve l’histoique et incremente juste en faite les stats.

Donc pour effacer l’historique/cache ancien de awstats, allez jeter un oeil dans:

/var/lib/awstats/

Les fichier sont de la forme:
awstats_DATE_._Nom-du-site_.txt

++

Linux rechercher fichiers en fonction de leur taille

Si comme moi vous chercher une commande linux pour voir tout les fichiers sur votre disque dur qui dépassent une certaine taille, utilisez:

find / -size +1024k -print

Sachant que 1024k est la taille en kilo-octet (1 mega)

Utile, pour ma part pour voir (en plus des log ftp) si je n’heberge pas des fichiers pour une board ftp à mon insu 😀

++

Empecher affichage version apache

Dans un soucis de sécurité, il est conseillé de ne pas afficher votre version d’apache et tout ce qui va avec (mod-ssl …)

On peut pas dire non plus que ce soit super secure mais c’est toujours un plus 😉

Il suffit d’editer votre fichier /etc/apache2/apache2.conf
nano /etc/apache2/apache2.conf

Et rajouter ensuite ces lignes toutes simples:

# ServerTokens : masque les version de produits dans les headers affiche simplement Apache
ServerTokens Prod
# ServerSignature : masque les version de produits dans les pages générées par Apache
ServerSignature Off
# Options -Indexes : empèche la génération automatique des index de répertoires (listing pâr Apache des fichier d'un répertoire lorsque index n'est pas présent)
Options -Indexes

Personnelement, je commente la dernière ligne, car je me sert de l’indexation automatique.

Script de backup sauvegarde mysql par ftp

Voici un petit script pour sauvegarder toutes vos bases de données mysql puis les envoyé sur un ftp.
Le tout en gardant seulement un certains nombre de jours de backup.

J’utilise yafc pour le ftp, si vous ne l’avez pas:

Aptitude install yafc

Ensuite voici le script:

mkdir /cron
nano /cron/script_backup_mysql.sh

Le script en lui même !

#!/bin/bash
#Backup mysql par ftp
Mysql_User="root" 
Mysql_Paswd="password-sql" 
Mysql_host="localhost"
# Emplacemment des different prog utilisé, laisser tel quel si vous n'avez rien bidouillé
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

# Emplacemment du dossier de backup local
DEST="/home/archives/backup/"

#Rep ou on fou le sql
DEST_mysql="$DEST/mysql"

#Date du jour
NOW="$(date +"%d-%m-%Y")"

# Databases a ne pas sauvegarder separer par des espaces
IGGY=""

# On initialise les variables
FILE=""
DBS=""

#on cree le rep
[ ! -d $DEST_mysql ] && mkdir -p $DEST_mysql || :

#On limite l'acces au root uniquemment
#$CHOWN 0.0 -R $DEST_mysql
#$CHMOD 0600 $DEST_mysql

# On liste les bases de donnees
DBS="$($MYSQL -u $Mysql_User -h $Mysql_host -p$Mysql_Paswd -Bse 'show databases')"

for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
        for i in $IGGY
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi

    if [ "$skipdb" == "-1" ] ; then
        FILE="$DEST_mysql/$db.$NOW.gz"
        # On boucle, et on dump toutes les bases et on les compresse
        $MYSQLDUMP -u $Mysql_User -h $Mysql_host -p$Mysql_Paswd $db | $GZIP -9 > $FILE
    fi
done


#BACKUP des bases mysql par FTP
#nbre de jour de backup a conserver
j=7
j_a_delete=$(date +%d-%m-%Y --date "$j days ago")

## Conf des rep de backup pour le ftp
DIR_BACKUP_mysql=$DEST_mysql
DIR_DIST_BACKUP_mysql='/BACKUP/mysql/'

#Configuration de pass ftp
loginftp="login"
motdepassftp="pass"
host_ftp="dedibackup.dedibox.fr"

## Upload sur le ftp
yafc $loginftp:$motdepassftp@$host_ftp <<**
cd $DIR_DIST_BACKUP_mysql
lcd $DIR_BACKUP_mysql
mkdir $NOW
cd $NOW
put -r *
cd ..
rm -r $j_a_delete
bye
**

#On delete tout
cd $DEST_mysql
rm -r *

Enregistrez ensuite le fichier et donnez lui des droits d'execution:

chmod u+x /cron/script_backup_mysql.sh

Et voila, il ne vous reste plus qu'a mettre ceci dans une tache cron

crontab -e

Puis ajoutez ceci

34 06 * * * /cron/backup-mysql-ftp.sh >> /cron/save-mysql.log

Pour que votre script soit executé chaque jour à 6h34, et le log sauvé dans /cron/save-mysql.log ( à créer) 😉

Linux effacer tous sauf un dossier ou un fichier

Juste une petite commande pour laquelle j’ai bien galerer:

find . -maxdepth 1 -not -name celui_la_on_efface_pas -exec rm -rf ‘{}’ \;

Biensur remplacer celui_la_on_efface_pas par le dossier ou le fichier que vous voulez garder 😉

Log ssh et bruteforce, iptables, interdire root

L’emplacemment de vox log ssh est /var/log/auth.log.

Pour avoir une petite analyse, faites un petit

nano /var/log/auth.log

Si comme moi vous avez de jolis log du genre:

Sep 3 16:19:29 sd-4145 sshd[23909]: Illegal user aleksandra from 88.191.11.198
Sep 3 16:19:29 sd-4145 sshd[23911]: Illegal user aleksandra from 88.191.11.198
Sep 3 16:19:29 sd-4145 sshd[23913]: Illegal user aleksandra from 88.191.11.198
Sep 3 16:19:30 sd-4145 sshd[23929]: Illegal user alenka from 88.191.11.198
Sep 3 16:19:30 sd-4145 sshd[23931]: Illegal user alenka from 88.191.11.198
Sep 3 16:19:30 sd-4145 sshd[23933]: Illegal user alenka from 88.191.11.198

Ba inquietez vous, on essai de vous brutforcer, donc dans ce cas, un petit abuse est de rigueure pour l’ip en question.

On peut aussi parer à ce genre d’attaque par une petit regle iptables:

iptables -I INPUT -s 88.191.11.198 -j DROP

ou:

iptables -A INPUT -p tcp –dport ssh -m recent –update –seconds 60 –hitcount 4 –name SSH -j DROP
iptables -A INPUT -p tcp –dport ssh -m recent –set –name SSH
iptables -A INPUT -p tcp –dport ssh -j ACCEPT

Qui bloque celui qui tente de se connecter plus de 4 fois en 60 sec en ssh 😉

Une autre très bonne solution est de changer le port de ssh

nano /etc/ssh/sshd_config

Et changer la ligne port 22
et relancez ssh:

/etc/init.d/ssh reload

Il y a aussi les trucs du genre failtoban.

Sans oublier biensur de ne pas autoriser l’acces ssh par root :
dans /etc/ssh/sshd_config

PermitRootLogin no  #changez yes en no

et relancez ssh:

/etc/init.d/ssh reload

Voila 😉

Encodage mysql interclassement, points d’interrogations …

Pas forcemment jolis les points d’interrogations dans un losange noir que vous affiche firefox à la place de tous les accents et des caractères speciaux.

Souvent ça nous arrive à la suite d’une exportation/importation toute bète via phpmyadmin.

Pour ma part, ça m’est arrivé lors du passage de mysql4 à mysql5, j’avais donc d’abord exporté via phpmyadmin, mais au moment d’importer, deja j’avais un couac pour selectionner l’interclassement 🙂

Pour bien faire, il faut selectionner interclassement: latin1_swedish_ci pour la base de données et utf8_general_ci pour l’Interclassement pour la connection MySQL

Mais ça ne suffit pas, surtout il faut lors de l’importation avec phpmyadmin de séléctionner l’encodage latin1:
encodage mysql importation

Et voila en principe tout passe en douceure sans les petits points d’interrogations 😉

Dedibox online

Ca y est, je me suis enfin décidé 😉

Bon ça reste un investissement puisque 36€/mois mais bon, c’est surtout aussi un plaisir 😀
Un serveur dedié, depuis le temps que j’en voulais un. Et puis bon ba 100mbits de BP, ba c’est plutot cool :-p

Ma dedibox

Vous pouvez voir les graph mrtg et voir que pour le moment je ne m’en sert pas encor beaucoup (cf graph cpu) sauf pour la Bande Passante, je tourne souvent a 4-5 mo/s et en gros une trentaine de personne sur le ftp.

Pour le moment, il n’y a qu’un serveur de fichiers pour tuto-fr.com qui vous permet de dl toutes distrib whax, backtrack troppix …

Bref de quoi vous faire plaisir et dl à plein régime.

La box tourne sous debian sarge.

C’est mes debut en linux et je pense vous faire quelques post un peu con con pour le linuxien mais pas pour le debutant que je suis :-).

Pour le moment, tout tourne bien, en espérant que ca dure.

D’ailleur il se peut que le blog migre vu que ca rame un peu ici (pack .info 1&1)