Aller au contenu principal

Sujets

Cette espace vous permet de voir toutes les Sujets réalisées par ce membre. Vous ne pouvez voir que les Sujets réalisées dans les espaces auxquels vous avez accès.

Sujets - squid-f

16
Internet, réseaux et serveurs / Blocage des vilains IP
Bonjour à toutes et tous.

En regardant le fichier error.log de mon serveur NGINX, j'ai été interpelé par le nombre de requêtes visant à tester, voire attaquer, mon serveur. J'avais bien souvent 1500 requêtes par jour générant une erreur.

En cherchant sur internet, j'ai rapidement vu que beaucoup d'adresses IP qui envoyaient ces requêtes étaient répertoriées comme des vilains !
J'ai donc bricolé un script qui permet de récupérer ces listes d'adresses IP indésirables et de les injecter dans firewalld pour les bloquer.
A tord ou à raison, je préfère voir ces requêtes bloquées par mon pare-feu que de les laisser générer une erreur par mon serveur.

Pour récupérer les listes d'adresses à bloquer j'utilise celles des sites :
https://www.spamhaus.org/
http://cinsscore.com/

A l'usage, la liste de CINS est la plus pertinente pour bloquer les requêtes indésirables.

Je suis maintenant plutôt autour de 30 erreurs de serveur NGINX par jour générées par des IP indésirables. Mais parfois, je peux trouver un pic autour des 900 !

Si vous avez une meilleure liste d’indésirables à me conseiller, je suis preneur.
Si vous avez des idées d'amélioration de mon script, je suis preneur aussi !

Merci

A+

Mon script (je n'ai traduit que l'affichage lors de l’exécution). J'ai créé aussi un job cron qui l’exécute une fois par jour :
#!/bin/bash
# Thanks to many
SPAMHAUS_DROP="/usr/local/src/drop.txt"
SPAMHAUS_DROPv6="/usr/local/src/dropv6.txt"
SPAMHAUS_eDROP="/usr/local/src/edrop.txt"
URLCINS="http://cinsscore.com/list/ci-badguys.txt"
URL="https://www.spamhaus.org/drop/drop.txt"
URLv6="https://www.spamhaus.org/drop/dropv6.txt"
eURL="https://www.spamhaus.org/drop/edrop.txt"
DROP_ADD_TO_UFW="/usr/local/src/DROP2.txt"
DROPv6_ADD_TO_UFW="/usr/local/src/DROP2v6.txt"
eDROP_ADD_TO_UFW="/usr/local/src/eDROP2.txt"
CINS_ADD_TO_UFW="/usr/local/src/badguys.txt"
# Firewalld list name
CINS="cinsdrop";
SPAM="spamhausdrop";
SPAMv6="spamhausdropv6";
SPAME="spamhausedrop";
# All credits for the following BLACKLISTS goes to "The Spamhaus Project" - https://www.spamhaus.org
echo "Debut: $(date)"
echo " "
#
# Purge previous IP
#
echo "Purge anciennes firewalld DROP rules"
/usr/sbin/ipset flush $CINS
/usr/sbin/ipset flush $SPAM
/usr/sbin/ipset flush $SPAMv6
/usr/sbin/ipset flush $SPAME
firewall-cmd --permanent --remove-rich-rule='rule source ipset=cinsdrop log prefix="cins" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausdrop log prefix="spamhaus" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausdropv6 log prefix="spamhausv6" level="debug" limit value="1/h" drop'
firewall-cmd --permanent --remove-rich-rule='rule source ipset=spamhausedrop log prefix="spamEhaus" level="debug" limit value="1/h" drop'
echo "Destruction anciens ipset"
firewall-cmd --permanent --delete-ipset=$CINS
firewall-cmd --permanent --delete-ipset=$SPAM
firewall-cmd --permanent --delete-ipset=$SPAMv6
firewall-cmd --permanent --delete-ipset=$SPAME
#
# CINS
#
echo " "
echo "Telechargement liste CINS et extraction des IP"
wget -q -O - "$URLCINS" > $CINS_ADD_TO_UFW
echo "Creation ipset CINS"
firewall-cmd --permanent --new-ipset=$CINS --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec CINS list"
firewall-cmd --permanent --ipset=$CINS --add-entries-from-file=$CINS_ADD_TO_UFW
echo "Update firewalld avec CINS rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=cinsdrop log prefix="cins" level="debug" limit value="1/h" drop'
#
# DROP
#
echo " "
echo "Telechargement liste DROP et extraction des IP"
wget -q -O - "$URL" > $SPAMHAUS_DROP
grep -v '^;' $SPAMHAUS_DROP | cut -d ' ' -f 1 > $DROP_ADD_TO_UFW
echo " "
echo "Creation ipset DROP"
firewall-cmd --permanent --new-ipset=$SPAM --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec DROP list"
firewall-cmd --permanent --ipset=$SPAM --add-entries-from-file=$DROP_ADD_TO_UFW
echo "Update firewalld avec DROP rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausdrop log prefix="spamhaus" level="debug" limit value="1/h" drop'
#
# DROPv6
#
echo " "
echo "Telechargement liste DROPv6 et extraction IP"
wget -q -O - "$URLv6" > $SPAMHAUS_DROPv6
grep -v '^;' $SPAMHAUS_DROPv6 | cut -d ' ' -f 1 > $DROPv6_ADD_TO_UFW
echo " "
echo "Creation ipset DROPv6"
firewall-cmd --permanent --new-ipset=$SPAMv6 --type=hash:net --option=family=inet6 --option=hashsize=4096
echo "Update ipset avec DROPv6 list"
firewall-cmd --permanent --ipset=$SPAMv6 --add-entries-from-file=$DROPv6_ADD_TO_UFW
echo "Update firewalld avec DROPv6 rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausdropv6 log prefix="spamhausv6" level="debug" limit value="1/h" drop'
#
# eDROP
#
echo " "
echo "Telechargement liste eDROP et extraction IP"
wget -q -O - "$eURL" > $SPAMHAUS_eDROP
grep -v '^;' $SPAMHAUS_eDROP | cut -d ' ' -f 1 > $eDROP_ADD_TO_UFW
echo " "
echo "Creation ipset eDROP"
firewall-cmd --permanent --new-ipset=$SPAME --type=hash:net --option=family=inet --option=hashsize=4096
echo "Update ipset avec eDROP list"
firewall-cmd --permanent --ipset=$SPAME --add-entries-from-file=$eDROP_ADD_TO_UFW
echo "Update firewalld avec eDROP rule"
firewall-cmd --permanent --add-rich-rule='rule source ipset=spamhausedrop log prefix="spamEhaus" level="debug" limit value="1/h" drop'
#
#make new list active in memory
#
echo " "
echo "reload firewall"
firewall-cmd --reload
echo " "
echo Fin: $(date)
#
# Controls
#
systemctl status firewalld
echo " "
echo "spamhausDrop size"
/usr/sbin/ipset list spamhausdrop | wc -l
echo "spamhausDropv6 size"
/usr/sbin/ipset list spamhausdropv6 | wc -l
echo "spamhauseDrop size"
/usr/sbin/ipset list spamhausedrop | wc -l
echo "cinsdrop size"
/usr/sbin/ipset list cinsdrop | wc -l
echo " "
17
Matériel / Installation imprimante Canon I-Sensys
Bonjour à toutes et tous

J'ai une imprimante Canon I-Sensys MF633Cdw utilisant le driver UFR-II
https://www.canon.fr/support/consumer_products/products/fax__multifunctionals/laser/laserbase_mf_series/i-sensys_mf633cdw.html?type=drivers&language=fr&os=linux%20(64-bit)

Le script d'installation de Canon du pilote n'est que compatible avec les formats DEB et RPM. Je cherche donc une version pour Opensuse.
Je n'ai rien trouvé dans YasT ou en ligne dans Opensuse software.

Est-ce que quelqu'un a déjà installé ce type d'imprimante avec Opensuse ?

Merci pour vos lumières!

A+
18
Général / Tumbleweed vs Leap pour un serveur perso HTPC/Nextcloud
Bonjour à toutes et tous.

Pour un serveur, la logique veut d'utiliser un système stable. C'est pour cela que j'utilise Leap pour mon serveur familiale HTPC et Nextcloud.
En testant Tumbleweed en VM récemment, je me demande si les risques resteraient finalement limités si je l'utilisais pour ce serveur.
En terme de perte de données, j'ai une stratégie un peu "parano" avec 5 copies sur 5 disques différents et 3 machines. Comme c'est un usage familiale, il n'y a que 4 utilisateurs de Nextcloud. Donc, même si le serveur plante, on pourra toujours travailler. Par contre, il faut pouvoir remettre le serveur d'aplomb sous quelques jours quand même.
Pour confirmer mon analyse, j'ai les questions suivantes :

  • Par expérience, à la grosse, combien de fois par an avez-vous eu Tumbleweed inutilisable après une mise à jour ? Je suis intéressé plus par des cas d'utilisations autres que tests de développeurs qui peuvent augmenter les risques de plantage.
  • Est-ce que snapper a prouvé être fiable pour retrouver une machine utilisable à nouveau en revenant à l'état système de juste avant la mise à jour ?
  • Un problème potentiel que j'ai en tête est de pouvoir rester sur la même branche PHP. A ce jour, PHP7 est en version 7.4 pour Tumbleweed et il faudrait que je reste en 7.3. Il semble qu'il y ait un dépôt spécifique 7.3 (devel:languages:php:php73) mais je n'ai pas trouvé de dépôt similaire pour les extensions (php7-apcu, php7-redis,...). Les extensions qui sont dans le dépôt server:php:extensions:php7 ne sont plus compatible avec PHP7.3 fourni par le dépôt spécifique. Est-ce possible ?
  • Est-ce que vous avez des stratégies de mise à jour pour limiter le risque de plantage (comme test sur une VM soeur avant ou attendre 10 jours après la sortie de l'update) ?
  • Autre chose que j'oublie ?

Grand merci pour votre retour d'expérience.

A+
19
Internet, réseaux et serveurs / Comprendre le log de firewalld
Bonjour à toutes et tous

J'ai enfin réussi à avoir plus d'information sur l'activité de firewalld dans son log (modification de la ligne LogDenied=all dans /etc/firewalld/firewalld.conf). Il était vraiment très peu loquace !

Je vois qu'il y a beaucoup d'activités qui ne semblent pas liées à la machine en elle-même ; soit je ne comprends pas l'information dans le log soit je ne comprends pas ce qui se passe sur mon réseau.

Voici un exemple d'activité enregistrée dans le log de firewalld et que je ne comprends pas :
2020-01-14T19:14:43.464607+01:00 linux-q3fi kernel: [  658.678849] FINAL_REJECT: IN=eth0 OUT= MAC=01:00:5e:00:00:fb:80:82:23:7d:8d:e1:08:00 SRC=192.168.0.31 DST=224.0.0.251 LEN=32 TOS=0x00 PREC=0x00 TTL=1 ID=50574 PROTO=2 

Ma compréhension : la source (192.168.0.31), qui est mon téléphone, essaye de contacter 224.0.0.251 (je ne sais pas qui sait mais ce n'est pas sur mon réseau et encore moins la machine dont le log du pare-feu est issu) et c'est rejeté par le pare-feu de mon serveur HTPC qui n'est pas une de ces adresses.

Où est-ce que je rate une étape ?

Merci pour vos lumières.

A+
20
Général / Logrotate pour batch de backup
Bonjour à toutes et tous.

Tout d'abord, j'ai eu du mal à estimer dans quelle rubrique poster. Donc, si ce n'est pas la meilleure, n'hésitez pas à bouger ce post !

J'ai des scripts de sauvegarde de mon serveur qui tournent par cron. Ils créent des fichiers log dans /var/log et pour éviter de saturer mon disque, je compte sur le service logrotate.

Pour l'instant, je n'ai rien changé par rapport à logrotate ; j'essaye juste de voir s'il est actif.

En fouillant dans les log, j'ai trouvé les erreurs suivantes qui se rapportent à logrotate :
2020-01-11T00:00:03.338571+01:00 linux-q3fi systemd[1]: logrotate.service: Main process exited, code=exited, status=1/FAILURE
2020-01-11T00:00:03.338871+01:00 linux-q3fi systemd[1]: Failed to start Rotate log files.
2020-01-11T00:00:03.339029+01:00 linux-q3fi systemd[1]: logrotate.service: Unit entered failed state.
2020-01-11T00:00:03.339128+01:00 linux-q3fi systemd[1]: logrotate.service: Failed with result 'exit-code'.

Qu'en pensez-vous ? Comment aller plus loin dans l'analyse ?

Merci

A+
21
Internet, réseaux et serveurs / Perfectionnement NGINX
Bonjour à toutes et tous

Maintenant que j'ai réussi à faire un serveur NEXTCLOUD sous NGINX, j'aimerais me perfectionner à l'utilisation de NGINX pour, par exemple, installer un serveur de document ONLYOFFICE ou héberger un petit site Web sur la même machine que mon serveur NEXTCLOUD.

Est-ce que vous auriez un bouquin à conseiller, abordable pour un autodidacte ?

Merci!

A+
22
Présentations / Squid-f
Bonjour à toutes et à tous.

Je n’aime pas bien parler de moi mais cela semble être l’usage de se présenter, voire même, une valeur liée à la solidarité et le contact humain de ce forum / association (in fine, cela fera toujours notre différence par rapport à nos machine, j’espère).

J’ai toujours été passionné par la technologie et l’innovation ; soif d’apprendre et de découvrir des choses nouvelles par moi-même.
Je suis arrivé à Linux au tout début des années 2000. Je voulais arrêter de jouer avec les anti-virus et j’en avais ras le bol de restaurer Windows et de voir ses registres se remplir sans jamais se vider (l’entropie est pour Microsoft une notion bien exploitée).
J’ai complètement basculé mon PC vers Linux à la naissance de ma fille en 2003. On sortait moins cette année là !   :D
En fait, le plus long a été de faire en sorte que le bureau ne soit pas trop perturbant pour mon épouse. Il fallait aussi que les logiciels de bureautique puissent suffisamment rivaliser avec ceux de Microsoft.

J’ai commencé par déployer Ubuntu pendant quelques années. Puis j’ai eu des soucis de compatibilités de carte wifi au fil des versions et avec l’agrandissement du parc informatique de la famille (quelle aubaine l’arrivée des portables abordables pour le chiffre d’affaire des fabricants !).

Je suis passé par Fedora puis j’ai découvert OpenSuse en 2013. J’ai eu un peu de mal à l’époque avec des versions de logiciels en décalage avec les dernières moutures. Je n’ai pas réussi à m’habituer à KDE et mon épouse avait du mal avec Gnome.
Du coup, on est passé à Linux Mint. Je dois reconnaître que je trouve beaucoup d’avantage au bureau Cinnamon.
Que j’ai  regretté Alionet par contre !

Il y a quelques mois, une régression lors de la mise à jour du noyau de Linux Mint m’a obligé à réinstaller mon serveur Nextcloud ; galère d’autant que je n’avais pas beaucoup de temps à y consacrer.
De plus, l’intégration perfectible de gnome calendar dans Linux Mint m’empêchait de déployer Nextcloud pour toute la famille (challenge personnel de sortir Google de la maison après avoir chassé Microsoft).
J’ai donc décidé un grand ménage : Opensuse pour mon serveurs HTPC/nextcloud et Manjaro Gnome pour le PC de bureau.

Et j’apprécie par l’occasion de revenir sur Alionet que je fréquentais régulièrement à une époque. J’apprécie votre ouverture, votre disponibilité et votre contribution aux logiciels libres. J’essayerai de mettre ma pierre (ou une humble petite brique) de temps à autre.

À bientôt donc.

Christian
23
Internet, réseaux et serveurs / Tuto d'installation serveur Nextcloud sous Leap 15.1
Bonjour à toutes et à tous.

Grâce à l’aide reçue sur ce forum, j’ai pu finaliser l’installation de mon serveur Nextcloud.
En fait, il y a beaucoup de tutos pour ubuntu mais très peu pour Opensuse. D’ailleurs, je n’ai rien trouvé pour Leap 15.x
Donc, sans prétentions, je poste ce tuto car j’ai passé beaucoup de temps à adapter les tutos des autres distributions à Opensuse (je ne suis pas un pro!). Si cela peut aider d’autres personnes, j’en serai ravi.
De plus, si les experts de ce forum ont des idées d’améliorations ou si j’ai fait des choses qui exposent mon serveur à la malveillance, je suis preneur de toute remarque.

Avant de commencer, voici les sources qui m’ont bien aidé :
https://www.c-rieger.de/nextcloud-installation-guide-ubuntu-18-04/
https://decatec.de/home-server/nextcloud-auf-ubuntu-server-18-04-lts-mit-nginx-mariadb-php-lets-encrypt-redis-und-fail2ban/
https://www.howtoforge.com/tutorial/owncloud-nginx-opensuse-leap-42.1/
https://nextcloud.com/support/
et notre cher sogal sur Alionet !

Installation de NGINX et PHP
J’ai choisi d’installer une autre version de php-fpm que celle d’origine de Leap 15.1 car le module password de Nextcloud ne va bientôt plus supporter php-fpm7.2.
La version 7.3 sera installée grâce à (php7-apcu et imagick sont dans extensions) :
zypper addrepo https://download.opensuse.org/repositories/devel:languages:php:php73/openSUSE_Leap_15.1/devel:languages:php:php73.repo
zypper addrepo https://download.opensuse.org/repositories/server:php:extensions:php7/php7_openSUSE_Leap_15.1/server:php:extensions:php7.repo
zypper refresh

Je garde les versions par défaut de nginx et mariadb car, d’après sogal, Opensuse Leap recevra les mises à jour de sécurité.

Installation de nginx
zypper in nginx 

Installation de PHP
En disséquant la documentation de Nextcloud, j’ai abouti à la liste et l’installation des modules suivants :
sudo zypper in php7 php7-APCu php7-bz2 php7-ctype php7-curl php7-dom php7-exif php7-fileinfo php7-fpm php7-gd php7-gmp php7-iconv php7-imagick php7-intl php7-json php7-ldap php7-mbstring php7-mysql php7-opcache php7-openssl php7-pcntl php7-pdo php7-posix php7-tokenizer php7-xmlreader php7-xmlwriter php7-zip  php7-zlib ffmpeg-3 

Tests initiaux NGINX et PHP-FPM
Test de NGINX
Créer  /srv/www/htdocs/index.html avec
<html>
<body>
<h1> NGINX fonctionne </h1>
</body>
</html>

Modifier /etc/nginx/nginx.conf
Ajouter index.php dans la ligne ci-dessous vers le début du fichier :
        
index  index.html index.htm index.php;

enlever les symboles # de commentaire pour la bloc ci-dessous :
location ~ \.php$ {
    root           /srv/www/htdocs/;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
 }

Tester la syntaxe des modifications avec la commande ci-dessous qui ne doit pas renvoyer d’erreur :
sudo nginx -t
Démarrer le service
sudo systemctl enable nginx
sudo systemctl start nginx

Dans navigateur taper : localhost et le message « NGINX fonctionne » doit apparaître

Test PHP-FPM
 Créer /srv/www/htdocs/info.php avec
<?php
phpinfo();
?>

Initialiser les fichiers de configuration
sudo cp /etc/php7/fpm/php-fpm.conf.default  /etc/php7/fpm/php-fpm.conf
sudo cp /etc/php7/fpm/php-fpm/php-fpm.d/www.conf.default /etc/php7/fpm/php-fpm/php-fpm.d/www.conf

modifier php-fpm.conf en enlevant le symbole # de la ligne ci-dessous :
error_log = log/php-fpm.log

modifier www.conf  comme ci-dessous, en changeant user et group, et en enlevant le symbole de commentaire qui est cette fois ; pour d’autres:
user = nginx
group = nginx

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

pour améliorer la performance, modifier www.conf de façon à écouter un socket et non un port. Pour cela, commenter la ligne listen = 127.0.0.1:9000 et ajouter une ligne pour pointer vers un socket :
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

Revenir sur /etc/nginx/nginx.conf et modifier comme suit le bloc location ~ \.php$ en ajoutant la ligne fastcgi_pass pointant le même socket que dans www.conf :
 location ~ \.php$ {
             root           /srv/www/htdocs/;
             #fastcgi_pass   127.0.0.1:9000;
             fastcgi_pass   unix:/var/run/php-fpm.sock;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
             include        fastcgi_params;
         }

Initialiser le service :
sudo systemctl enable php-fpm
sudo systemctl start php-fpm

Taper localhost/info.php pour avoir des informations sur la configuration php installée.
https://www.alionet.org/index.php?action=dlattach;sa=tmpattach;attach=post_tmp_33_2337f2e0a91756b5c1bf10c2d55698d9;topic=0

Maintenant que nous nous sommes assurés que NGINX et PHP-FPM fonctionnent, nous allons avancer dans leur optimisation et finir l’installation de NEXTCLOUD

Optimisation de NGINX

Modification du fichier /etc/nginx/nginx.conf
    • user : utilisateur du serveur web : nginx
    • worker_processes : nombre de coeurs du CPU : auto
    • pid : j’ai décommenté la ligne mais je n’ai pas trouvé d’explication. Je suis preneur d’information !
    • server_tokens : mettre à off pour la sécurité en limitant les informations fournies par nginx.
    • TCP_NOPUCH, TCP_NODELAY, SENDFILE : en les combinant on peut gagner jusqu’à 0,2s lors de l’envoi des données.

En repartant du fichier nginx.conf juste modifié, ajuster les lignes comme suit :
user  nginx;
worker_processes  auto;

pid        /var/run/nginx.pid;

tcp_nopush     on;
tcp_nodelay     on;

server_tokens off;

Test & Restart NGINX
sudo nginx -t 
sudo systemctl restart nginx

Optimisation de PHP
Modification de /etc/php7/fpm/php-fpm.d/www.conf

J’ai limité pm.max_children à 150 en utilisant la formule ci-dessous :
Total Max Processes = (Total Ram - (Used Ram + Buffer)) / (Memory per php process)
En allouant 5Go de ram à mon serveur et avec une taille de 35Mo par requête PHP, cela donne : (1024*5) / 35 = 146.
    • user / group : à mettre en consistence avec le serveur = nginx
    • Listen : pointer vers le même socket que les autres fichiers = /run/php/php-fpm.sock
    • Environment Variables: NEXTCLOUD à besoin de ces variables = bloc à décommenter.
    • Prévention d’un timeout de nextcloud à l’installation avec request_terminate_timeout = 300
     
Ajuster les lignes du fichier comme suit :
user = nginx
group = nginx

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

pm.max_children = 150

pm.start_servers = 20

pm.min_spare_servers = 10

pm.max_spare_servers = 20

pm.max_requests = 500

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

;ajout de la ligne ci-dessous
request_terminate_timeout = 300

modification de /etc/php7/cli/php.ini
    • cgi.fix_pathinfo : pour améliorer la sécurité = 0
    • expose_php = off évite d’avoir accès à la version de php depuis l’extérieur
    • Plus d’autres paramètres d’optimisation de fonctionnement (memory_limit = 512M est demandé par NEXTCLOUD).

Le fichier php.ini existe déjà dans le répertoire /etc/php7/cli ; ajuster les lignes du fichier comme suit :
 
implicit_flush = Off

expose_php = Off

max_execution_time = 1800

max_input_time = 3600
 
memory_limit = 512M
 
html_errors = On
 
register_argc_argv = Off

post_max_size = 10240M
 
cgi.fix_pathinfo=0
 
upload_max_filesize = 10240M
 
max_file_uploads = 100
 
date.timezone = Europe/Paris

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1


Création de /etc/php7/fpm/php.ini
A l’installation, ce fichier n’existe pas. J’ai donc juste copié le fichier php.ini du répertoire /etc/php7/cli que nous venons de modifier.
sudo cp /etc/php7/cli/php.ini /etc/php7/fpm

Modification de /etc/php7/fpm/php-fpm.conf
Pour faire redémarrer FPM en cas d’erreurs répétées dans un laps de temps.
Ajuster les lignes du fichier comme suit :
pid = /var/run/php-fpm.pid

error_log = /var/log/php-fpm.log
 
emergency_restart_threshold = 10
 
emergency_restart_interval = 1m
 
process_control_timeout = 10s

Mise à jour permission
Important car a empêché la connexion dans Nextcloud malgré les bons nom d’utilisateur et mot de passe.
sudo chown nginx:nginx /var/lib/php7

Création hôte virtuel Nextcloud dans NGINX
A noter que mon serveur nextcloud sera appelé par un sous-répertoire de mon nom domaine : https://mon_domaine/nextcloud
Mon fournisseur internet (free) me permet de créer gratuitement un nom de domaine (avec extension hd.free.fr) qui pointe vers mon serveur. Il ne faudra pas oublier sur la freebox de faire un transfert de port vers l’adresse IP de la machine qui sert de serveur.
Créer le fichier /etc/nginx/vhosts.d/nextcloud.conf (c’est une version sans certificat SSL car certbot s’en chargera ensuite) comme suit et en modifiant mon_domaine par votre nom de domaine :

https://www.alionet.org/index.php?action=dlattach;sa=tmpattach;attach=post_tmp_33_83030c2fc6f295c1024556022389228a;topic=0

Pare-feu
Avec Yast, autoriser http et https

Install Letsencrypt avec Certbot
On peut obtenir un certificat SSL gratuitement grâce à Let’s Encrypt.
Installation du client certbot conseillé par Let’s Encrypt. J’installe aussi le plugin nginx qui fera la modification du fichier nextcloud.conf
sudo zypper in python3-certbot-nginx

Pour obtenir le certificat, lancer la commande suivante et en remplaçant mon_email et mon_domaine par les vôtres :
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email[color=red] mon_email[/color] -d [color=red]mon_domaine[/color] --rsa-key-size 4096

Modification du ficher SSL créé par CERTBOT
Recommendation de sites comme SSLAB d’arrêter d’utiliser TLSv1
sudo nano /etc/letsencrypt/options-ssl-nginx.conf

remplacer :
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
par :
ssl_protocols TLSv1.3 TLSv1.2;

cron de renouvellement des certificats
En effet, au bout de 3 mois le certificat expire. Il faut le renouveler et pour cela un script cron est créé (source : sogal)
Créer script cron certbot à placer dans /etc/cron.weekly/

sudo nano /etc/cron.weekly/certbot

#!/bin/sh
# Stop nginx first
systemctl stop nginx
# Renew certs
certbot --standalone renew
# Restart nginx
systemctl start nginx

Penser à le rendre exécutable:
chmod +x /etc/cron.weekly/certbot

MariaDB

Installation par :
zypper in mariadb

puis initialiser par :
sudo rcmysql start

Securisation de MariaDB
sudo mysql_secure_installation
Vous allez devoir répondre aux questions comme suit :
Switch to unix_socket authentication [Y/n] N
Enter current password for root (enter for none): <ENTER>
Set root password? [Y/n] Y
[i]Entrer votre mot de passe et s’en rappeler[color=red][/color][/i]
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Création de la base de données
    • Nom de la base de données : nextcloud
    • Son administrateur nextcloud_admin
    • le mot de passe associé admin_password

sudo mysql -uroot -p
> CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER nextcloud_admin@localhost IDENTIFIED BY 'admin_password'; GRANT ALL PRIVILEGES on nextcloud.* to nextcloud_admin@localhost; FLUSH privileges; quit;

Installation serveur Nextcloud
    • Télécharger l’archive depuis le site de Nextcloud et la décompresser
    • Copier le répertoire nextcloud dans /srv/www (ATTENTION : l’archive décompressée contient un sous-répertoire avant celui de nextcloud…)
    • Puis donner le bon propriétaire (nginx) :
       
chown -R nginx:nginx /var/www/nextcloud

J’ai placé la base de données nextcloud dans un répertoire en-dehors de /srv/www/nextcloud
J’ai créé le répertoire /data/nextcloud_data   pour cela :
sudo mkdir /data/nextcloud_data
puis   
sudo chown -R nginx:nginx /data/nextcloud_data

Lancer ensuite un navigateur internet (firefox par exemple) et taper l’adresse : https://mon_domaine/nextcloud

Vous obtiendrez l’interface de configuration de nextcloud.
Il faut créer l’utilisateur administrateur et entrer les informations de la configuration de la base de données mysql créée précédemment dans la section mariadb.

Ajout d’un cronjob pour Nextcloud
   
su -
crontab -u nginx -e
et taper :
*/5 * * * * php -f /srv/www/nextcloud/cron.php > /dev/null 2>&1

APCU cache pour Nextcloud
Pour améliorer les performances, ajouter dans le fichier /srv/nextcloud/config/config.php :
'memcache.local' => '\OC\Memcache\APCu',

FAIL2BAN
C’est pour bannir les adresses IP de personnes malveillantes qui tenteraient de s’identifier sur le serveur.
Au bout de 3 tentatives infructueuses de connexion, l’adresse IP sera bannie.

Installation de fail2ban :
zypper in fail2ban

(7 paquets d'installés :  ed fail2ban libgamin-1-0 python2-pyinotify python2-systemd python-gamin whois)

Ajouter des lignes suivantes dans /etc/fail2ban/filter.d/nextcloud.conf

[Definition]
failregex=^{"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}$
            ^{"reqId":".*","level":2,"time":".*","remoteAddr":".*","app":"core".*","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)".*}$
            ^.*\"remoteAddr\":\"<HOST>\".*Trusted domain error.*$

Création d’un nouveau fichier prison pour nextcloud :
nano /etc/fail2ban/jail.d/nextcloud.local

et y copier les lignes suivantes :
[nextcloud]
backend = auto
enabled = true
port = 80,443
protocol = tcp
filter = nextcloud
maxretry = 3
bantime = 36000
findtime = 36000
logpath = /data/nextcloud_data/nextcloud.log
[nginx-http-auth]
enabled = true 

Redémarrer fail2ban-service et vérifier son statut :
sudo systemclt restart fail2ban
sudo fail2ban-client status nextcloud
Qui donne le résultat suivant :
Status for the jail: nextcloud
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list: /data/nextcloud_data/nextcloud.log
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list:

Pour contrôler les IP bannies
sudo fail2ban-client status nextcloud 

Pour autoriser à nouveau une IP
sudo fail2ban-client set nextcloud unbanip ip_address

Vous pouvez aussi par la suite faire en sorte que fail2ban vous envoie un email en cas de blocage (configurer postfix pour cela).

Et voilà. Pour moi cela fonctionne du tonnerre.  8)
J’espère que cela pourra aider quelqu’un à se lancer !
N’oublier pas de faire des sauvegardes régulières de vos données et serveurs (voir documentation sur nextcloud.com).
Bien entendu, comme dit la maxime de nos jours, je me dois de décliner toute responsabilité en cas de perte de données ou de réinstallation du système...

A bientôt !

Christian
24
Internet, réseaux et serveurs / Projet Spamhaus
Bonjour à toutes et à tous

Que pensez-vous du projet SPAMHAUS et de sa liste d'adresse IP réputées novices qu'il faudrait bloquer ?

Je pose la question car j'ai un serveur Nextcloud ouvert sur l'extérieur et je me demande si c'est une sécurité intéressante à installer (via iptable du firewall, si j'ai bien compris).

Lien (en anglais car la version française est vraiment très succincte) : Spamhaus_wikipedia

Merci à vous!
25
Internet, réseaux et serveurs / Mise à jour de Leap 15.1 vers PHP7.3.11
Bonjour

J'ai fini l'installation de mon serveur Nextcloud sous Leap 15.1
J'ai utilisé la version d'origine de PHP : PHP 7.2.5 puis j'ai vu une alerte de sécurité sur le forum de Nextcloud recommandant de mettre à jour vers PHP7.2.24 ou 7.3.11
Tant qu'à faire, j'ai voulu passer en 7.3 qui a eu durée de vie plus longue mais j'ai quelques soucis que voici.

Tout d'abord, j'ai ajouté le dépôt : home:illuusio:php-next  
Puis j'ai lancé la mise à jour de PHP7 sous YAST. J'ai alors plein de mise à jour de modules complémentaires (7.2.5 vers 7.3.11).
Le redémarrage du service php-fpm se passe sans erreur dans la console (sudo systemctl restart php-fpm).
J'ai aussi redémarré le serveur nginx sans erreur (sudo systemctl restart nginx).

Par contre, en me connectant à mon serveur nextcloud, j'obtiens un message : Internal server error.

En fouinant un peu dans les logs de nextcloud, je trouve des alertes liées aux modules php7-apcu et php7-imagick.

D'ailleurs, bien qu'il n'y ait pas eu d'erreur au démarrage du service php-fpm, la commande php -v renvoie un message intéressant :
Kris@linux-arpr:~> php -v
PHP Warning:  PHP Startup: Unable to load dynamic library 'apcu.so' (tried: /usr/lib64/php7/extensions/apcu.so (/usr/lib64/php7/extensions/apcu.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/apcu.so.so (/usr/lib64/php7/extensions/apcu.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/lib64/php7/extensions/imagick.so (/usr/lib64/php7/extensions/imagick.so: undefined symbol: _zval_ptr_dtor), /usr/lib64/php7/extensions/imagick.so.so (/usr/lib64/php7/extensions/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.3.11 (cli) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.11, Copyright (c) 1998-2018 Zend Technologies

En regardant les mises à jour, il semble effectivement que les modules php7-apcu et php7-imagick n'aient pas été mis à jour. J'ai essayé de les mettre à jour spécifiquement en cherchant dans les dépots communautaires mais cela n'a rien changé.

Est-ce que quelqu'un a déjà essayé de mettre à jour Leap 15.1 avec PHP7.3.1 ?

Pour info, j'ai finalement mis à jour en 7.2.24 grâce au dépot : home:ecsos:server:Sabre et c'est passé comme une lettre à la poste. 8)
Par contre, j'ai l'application Passwords de Nextcloud qui ne supportera plus PHP7.2 en début 2020 et je reste fortement intéressé par passer en 7.3

Merci pour votre aide!
26
Internet, réseaux et serveurs / [RESOLU]cronjob pour renouveler certificat CERTBOT
Bonjour à vous

Super clean ce nouveau forum. Merci!

Par contre, j'avais gardé précieusement un post dans lequel sogal donnait un exemple de cronjob pour renouveler automatiquement mon certificat créé par CERTBOT pour mon serveur NEXTCLOUD  (j'ai installé python3-certbot et son plugin NGINX). J'ai voulu faire cela aujourd'hui mais je ne le retrouve pas.

Est-ce qu'il y a un moyen de retrouver ce post de l'ancien forum ou est-ce que sogal pourrait avoir la gentillesse de me redonner la recette ?

Merci bien!