QAS : QuickAppsServer, un script Bash basique pour vos serveurs web

Rédigé par citizenz - - Aucun commentaire
Je me suis amusé, en cette période de Noël, à me concocter un petit script Bash basique que j'utilise pour installer facilement tout ce dont j'ai besoin pour un serveur web Debian ou Ubuntu.

Ce que propose ce script :

  1. Installation de quelques appli basiques (vim, mc, screen, htop, git, curl, ntp, ntpdate, sudo, dnsutils)
  2. Installation de quelques appli web (Nginx, php-fpm, Mariadb, openssl, memcached)
  3. Installation de quelques appli pour la sécurité (ufw firewall, fail2ban)
  4. Installation de Letsencrypt certbot
  5. Ajout et configuration d'un user système (+ sudo)
  6. Configuration de /etc/hosts
  7. Configuration de /etc/hostname
  8. Reboot
Toutes les explications sont ici : https://github.com/citizenz7/QAS
Hope it helps :D

Gérez vos bases Mysql avec Adminer

Rédigé par citizenz - - Aucun commentaire
La plupart des tutos préconisent phpmyadmin pour gérer ses bases MYSQL de manière simple.
Hors, j'ai découvert une solution bien moins lourde : un seul fichier .php qui donne quasiment autant de possibilités que phpmyadmin. Oui, ca existe, ça s'appelle Adminer et c'est vachement bien.
Un fichier .php "to rule them all" on pourrait presque dire :)

Pour l'installer : rien de plus simple.
Mettez vous dans le répertoire web souhaité (par exemple, j'ai l'habitude d'utiliser /var/www/sql.monsite.fr/web).
Vous aurez pris soin de créer un fichier vhost (pour votre Apache ou Nginx) avec la gestion php. Rien de plus.
Vous téléchargez le fichier Adminer :
$ sudo wget https://github.com/vrana/adminer/releases/download/v4.4.0/adminer-4.4.0.php
On le renomme :
$ sudo mv adminer-4.4.0.php index.php
On lui donne les bons droits :
$ sudo chown www-data:www-data index.php
Et roulez jeunesse ! Rendez-vous sur la page de votre virtual host (exemple : https://sql.monsite.fr)


On peut faire autant de choses avec Adminer que sous phpmyadmin : importer et exporter des bases, voir, modifier, insérer, vider, supprimer, etc.
Je trouve même que c'est plus claire, plus clean, plus simple.
A vous de voir !


WebDAV, Nginx et XFCE : accéder à ses médias en ligne facilement

Rédigé par citizenz - - 2 commentaires

WebDAV c'est quoi ? Laissons faire les présentations par le Wiki Ubuntu :

WebDAV, en entier : Web-based Distributed Authoring and Versioning, est un protocole déjà ancien (1996) et curieusement peu connu. Il permet pourtant une chose essentielle : écrire sur le Web, au lieu de seulement surfer (c'est-à-dire seulement lire).
C'est un protocole ouvert, le W3C (organisme qui "normalise le web") en a confié le développement à l'IETF qui avait déjà normalisé HTTP.
Pour résumer, WebDAV est une extension du HTTP. Au delà des GET et POST bien connus, WebDAV rajoute les verbes PUT, DELETE, COPY, PROPFIND, etc. Pour les curieux, la norme est là : http://tools.ietf.org/html/rfc2518. Étant une simple extension au protocole HTTP, WebDAV fonctionne dans à peu près toutes les situations où la navigation n'est pas bloquée.

Ceci étant dit, j'avais besoin de configurer un accès web pour les fichiers vidéos situés sur mon serveur. Il existe pléthore de solutions de streaming etc. mais ça n'est pas ce que je souhaitais. L'idéal ? Ouvrir tous mes médias directement depuis mon "Explorateur de fichiers", Thunar en l’occurrence puisque je suis sous XFCE.

Je n'ai pas été chercher bien loin et je me suis souvenu de WebDAV, que j'avais déjà utilisé "rapidement" il y a quelques temps.

Objectifs ? Configurer Nginx avec WebDAV et pouvoir accéder tranquillement à mes fichiers depuis mon bureau. C'est parti.

NGINX

Pour configurer Nginx rien de bien compliqué. Il vous faut néanmoins et avant tout installer un nouveau paquet sur votre serveur afin d'utiliser WebDAV:

$ sudo apt install nginx-extras

Puis il faut créer l'hôte virtuel Nginx. J'ai choisi d'utiliser un domaine du type media.mondomaine.fr pour l'exemple. On va donc créer un fichier comme suit :

$ sudo vim /etc/nginx/conf.d/media.mondomaine.fr.conf

Dans ce fichier, nous allons placer les éléments suivants :

server {
        listen 80;
        server_name media.mondomaine.fr;
        root /CHEMIN/MONREPERTOIRE/FICHIERS; # ----> A CHANGER avec le bon chemin de votre répertoire
        index index.php index.html index.htm;
        access_log /var/log/media-access.log combined;
        error_log /var/log/media-error.log error;

        location / {
                try_files $uri $uri/ /index.html;
                client_body_temp_path   /temp;
                dav_methods             PUT DELETE MKCOL COPY MOVE;
                dav_ext_methods         PROPFIND OPTIONS;
                create_full_put_path    on;
                dav_access              user:rw group:rw all:rw;
                autoindex               on;
                auth_basic "Mot de passe :";
                auth_basic_user_file "/etc/nginx/passwd/media_pass";
}

        # PARTIE HTTPS
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/media.mondomaine.fr/fullchain.pem; # managed by Certbot ---> MONDOMAINE.FR A CHANGER
        ssl_certificate_key /etc/letsencrypt/live/media.mondomaine.fr/privkey.pem; # managed by Certbot ---> MONDOMAINE.FR A CHANGER
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

        if ($scheme != "https") {
                return 301 https://$host$request_uri;
        } # managed by Certbot

}

La première partie du fichier est "traditionnelle...

La deuxième partie Location / est plus spécifique. On peut y voir la configuration propre à WebDAV : dav_methods, dav_ext_methods, dav_access , ...

J'ai de plus protégé l'accès à mon répertoire avec un accès restreint, tout simple et très traditionnel, en créant premièrement un nouveau répertoire /et/nginx/passwd :

$ sudo mkdir -p /etc/nginx/passwd

... puis :

$ sudo htpasswd -c /etc/nginx/passwd/media_pass mumbly

Il n'y a plus qu'à rentrer le mot de passe associé à l'utilisateur mumbly. Si httpasswd ne fonctionne pas, installer le paquet suivant :

$ sudo apt install apache2-utils

Puis j'ai configuré une partie HTTPS avec certbot et le plugin --nginx. Je vous renvoie à mon post à ce sujet .

Une fois fait, on teste d'abord la config de Nginx avec :

$ nginx -t
Si tout est ok, on redémarre Nginx :
$ sudo /etc/init.d/nginx restart

Reste la partie "Bureau" sous XFCE et Thunar et ici rien de difficile. J'ai configuré cet accès sur un PC équipé de Xubuntu. Peut-être y aura t-il une "autre config" sous un autre système, je n'ai pas testé ailleurs.

Avec Thunar, on peut rentrer directement - dans la barre d'adresse - l'adresse de notre répertoire WebDAV de la manière suivante :

davs://mumbly@media.mondomaine.fr/FICHIERS # à adapter avec votre VRAI chemin ...

Voila ce que ça donne en "réel" sur mon PC :

BBClone : les stats faciles pour son site web

Rédigé par citizenz - - 6 commentaires
Il est souvent pratique et utile d'avoir une idée de la fréquentation de son site web. Soit par simple curiosité, soit pour en apprendre un peu plus sur le public qui visite le site, son "origine" (géographique ou referer), quelles pages ont le plus été visitées, etc.

Il existe bon nombre de scripts pour mettre en place des statistiques pour son site.
J'ai personnellement toujours privilégié l'aspect visuel et pratique ... voire simple(iste ?). Et cela fait des années que j'utilise BBClone .

BBclone est un compteur web écrit en PHP qui donne une vue détaillée des visiteurs de votre site web en affichant les n derniers utilisateurs (et les données qu'ils ont fournies, comme leur IP, navigateur, etc.) : très pratique pour les webmasters qui veulent voir qui visite ses sites, ce que les navigateurs utilisent, d'où ils proviennent !
Pour chaque visiteur, BBClone peut afficher : adresse IP, le nom d’hôte, l'OS, le navigateur, l'URL d'origine (referer), l'heure de la visite, la page visitée, etc .

Relativement simple à mettre en place, vous pouvez en avoir un aperçu ici : https://bbclone.de/demo /

Le guide d'installation  est très bien fait mais en anglais, aussi voici un court résumé de la démarche d'installation.

1 - Téléchargez BBClone à cette adresse : http://bbclone.de/download.php
2 - Uploadez le répertoire complet BBClone sur votre serveur... Un bon endroit pour mettre BBClone reste à la racine de votre site ce qui donnera : http://www.example.com/bbclone/
3 - Donnez les bons droits aux fichiers. Tous les fichiers "importants" se trouvent dans le répertoire var/. Aussi donnez les droits 666 (chmod 666) aux fichiers suivants : counter[0-15].inc, access.php, last.php et .htalock
4 - Fichier de conf : dans le répertoire conf/ vous trouverez le fichier de config de BBClone (config.php). Peu de choses à faire si ce n'est changer la langue par défaut (mettez fr pour le français) et la ligne $BBC_DETAILED_STAT_FIELDS où vous pouvez ordonner les colonnes qui seront affichées et ajouter ou enlever des colonnes. Moi j'ai choisi cette présentation : $BBC_DETAILED_STAT_FIELDS = "id, time, ext, ip, dns, visits, os, browser, page, search, referer";
5 - Activiez l'option de debug : $BBC_DEBUG = 1; ... cela peut-être utilise si vous avez une erreur...
6 - Ajoutez le code d'activation sur toutes vos pages.

La partie 6 est la partie la plus "compliquée". Vous devez ajouter un code pour toutes les pages que vous souhaitez "monitorer". Il va falloir indiquer le bon PATH et le bon endroit pour mettre ce code. Si vous ne voulez pas indiquer le code à la main sur chaque page, deux solutions s'offrent à vous :
- soit utiliser un fichier .htaccess si vous utiliser un serveur Apache ou configurer votre fichier vhost avec un serveur Nginx
- soit inclure un fichier .php (que nous pouvons nommer bbclone.php) dans le header.php de votre thème, par exemple...

J'ai choisi la deuxième solution. Voici mon fichier bbclone.php placé à la racine du site :
[MAJ : 16/08/17, 21h20] : le code suivant permet l'affiche du nom complet des pages visitées
<?php
$url = $_SERVER['REQUEST_URI'];
define("_BBC_PAGE_NAME", "$url");
define("_BBCLONE_DIR", "bbclone/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>

J'ai indiqué le chemin complet où se trouve le répertoire BBClone sur mon serveur. A changer chez vous en fonction de votre configuration.
Il ne me reste plus qu'à inclure ce fichier dans le header de mon thème pluXML : 
<?php include 'bbclone.php'; ?>


Que vous soyez propulsé par Apache ou Nginx, vous souhaiterez certainement protéger l'accès à ces statistiques à l'aide de votre fichier .htaccess (Apache) ou en configurant votre fichier de conf Nginx.

Voici un exemple pour Nginx :
## Protection répertoire BBClone
location /bbclone {
auth_basic "stats";
auth_basic_user_file "/etc/nginx/passwd/stats_passwd";
}
Il vous faut bien évidemment créer le fichier stats_passwd avec votre pseudo + un mot de passe à l'aide de l'utilitaire apache2-utils (sous Debian, Ubuntu, ...) en rentrant :
$ sudo htpasswd -c stats_passwd

Au final, voici un petit aperçu des stats fournies par BBClone en action sur mon site :





Bloquer les spams facilement avec Nginx

Rédigé par citizenz - - 8 commentaires
Vous pouvez facilement bloquer une partie des spams qui viennent polluer votre site web (vos commentaires, etc.) avec quelques lignes dans votre fichier de conf Nginx. Je peux vous certifier que c'est assez efficace.
Dans votre block server {  }, mettez les lignes suivantes :

## Block spam
set $block_spam 0;
if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {
    set $block_spam 1;
}
if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {
    set $block_spam 1;
}
if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {
    set $block_spam 1;
}
if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {
    set $block_spam 1;
}
if ($block_spam = 1) {
    return 403;
}

Sources : Korben , Howtoforge

UPDATE 15/08/17 - 15:36 :
Fil RSS des articles de ce mot clé