Table des matières
- 2026:
- 2025:
4 billet(s) pour septembre 2026
| Notes HTTP Strict Transport Security - HSTS | 2026/09/18 11:04 | Jean-Baptiste |
| Notes GNU Linux GPU carte graphiques | 2026/09/08 15:49 | Jean-Baptiste |
| Notes GNU Linux graphique | 2026/09/08 15:42 | Jean-Baptiste |
| Notes urlencoding - passer des mots de passe en HTTPS | 2026/09/03 17:58 | Jean-Baptiste |
Access SFTP sans shell
Voir :
Voir également :
- rssh
- mysecureshell
Ou pour un acces exclusif en SFTP :
#usermod -s /usr/lib/openssh/sftp-server username echo "/usr/lib/openssh/sftp-server" >> /etc/shells
Source : http://www.debian-administration.org/article/94/How_to_restrict_users_to_SFTP_only_instead_of_SSH
Comme bash figure dans /etc/shells, c'est ok
/usr/local/bin/sftp.sh
#! /bin/bash /usr/lib/openssh/sftp-server -l INFO
chmod +x /usr/local/bin/sftp.sh
Tout est log dans /var/log/auth.log
/etc/passwd
test:x:1003:1003:,,,:/home/test:/usr/local/bin/sftp.sh
Notes MySecureShell
/etc/ssh/sftp_config
<Default> #Home /home/$USER #overrite home of the user but if you want you can use # environment variable (ie: Home /home/$USER) #LimitConnection 10 #max connection for the server sftp #LimitConnectionByUser 1 #max connection for the account #LimitConnectionByIP 2 #max connection by ip for the account LimitConnection 10 #max connection for the server sftp LimitConnectionByUser 5 #max connection for the account LimitConnectionByIP 10 #max connection by ip for the account </Default>
/etc/shells
/usr/bin/mysecureshell
/etc/init.d/mysecureshell restart
usermod -s /usr/bin/mysecureshell sftpuser
# sftp-verif Verifing file rights of /usr/bin/mysecureshell [ FAILED ] Rights problems have been detected 0755 and should be 4755 Do you want to repair /usr/bin/mysecureshell file rights ? (Y/n)
Debug
Voir : /var/log/sftp-server.log
Autres
useradd sftp_download -s /sbin/nologin - passwd sftp_download mkdir /download
# override default of no subsystems
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group sftponly
ChrootDirectory /upload
X11Forwarding no
AllowTcpForwarding no
AllowAgentForwarding no
ForceCommand internal-sftp -d /%u
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
# PasswordAuthentication no
Serveur web partage de fichier en une ligne avec Python
Voir aussi :
Python2 :
python -m SimpleHTTPServer 9000
Python3 :
python3 -m http.server --bind 127.0.0.1 9000
Zabbix script python monitor unmonitor autoadd host
Ce script permet :
- l'ajout automatique d'un nouveau hôte à superviser
- La désactivation automatique de la supervision d'un hôte
Il prend comme paramètre le nom de l'hôte ou l'adresse IP.
Il servait au “cloud”, dans un contexte de création automatique de VM et destruction automatique après traitement.
zbxunmon.py
#! /usr/bin/env python3 # -*- coding: utf-8 -*- # License: GNU GPL """ Switch Zabbix status to 'Monitored' or 'Not monitored' zbxunmon.ini [SERVER] URL=https://acme.fr/zabbix USER=api PWD=P@ssw0rd """ import socket import argparse import configparser from sys import argv, exit, stderr from os import environ, path import zabbix_client ficconf=argv[0] ficconf=ficconf.replace('.py', '') ficconf=ficconf + '.ini' # Work even if this script's name isn't ended by ".py" config = configparser.ConfigParser() config.read(ficconf) zbxconf = config['SERVER'] zabbix_url = config['SERVER']['URL'] zabbix_user = zbxconf.get('USER') zabbix_pwd = zbxconf.get('PWD') try: environ['http_proxy']=environ['https_proxy']=zbxconf.get('HTTP_PROXY') except TypeError: pass # Zabbix 'status' code MONITORED='0' NOT_MONITORED='1' parser = argparse.ArgumentParser() parser.add_argument('-e', '--enable', action='store_true', help='Enable') parser.add_argument('-d', '--disable', action='store_true', help='Disable') parser.add_argument('-i', '--ip', help='IP Address') parser.add_argument('-n', '--name', help='Hostname') args = parser.parse_args() def die(exitcode, *objs): """ print on STDERR """ print(*objs, file=stderr) try: s except NameError: pass else: # If no exception occured, do : s.user.logout() exit(exitcode) if (not args.ip and not args.name) and (not args.enable and not args.disable): die(1, "{0}: missing arguments\nTry '{0} -h' for more information.".format(argv[0])) ip = args.ip hostname=args.name def zbx_ip2hostid(s, ip): hostinterface=s.hostinterface.get(filter={'ip':ip}, output=['hostid']) if len(hostinterface) == 1: hostinterface=hostinterface[0] return(hostinterface['hostid']) else: die(7, 'IP not found') def zbx_host2hostid(s, host): host=s.host.get(filter={'host':host}, output=['hostid']) if len(host) == 1: host=host[0] return(host['hostid']) else: die(6, 'Host not found') def zbx_getstatus(hostid): host=s.host.get(hostids=hostid, output=['status']) if len(host) == 1: host=host[0] return(host['status']) else: die(8, "Can't get status") s = zabbix_client.ZabbixServerProxy(zabbix_url) s.user.login(user=zabbix_user, password=zabbix_pwd) if ip: hostid=zbx_ip2hostid(s, ip) elif hostname: hostid=zbx_host2hostid(s, hostname) else: die(2, 'Fatal error, ip or hostname need to be provide !') # Change Monitor status if args.disable : s.host.update({'hostid': hostid, 'status': NOT_MONITORED}) if zbx_getstatus(hostid) != NOT_MONITORED: die(4, 'Fail to change status to NOT_MONITORED') elif args.enable : s.host.update({'hostid': hostid, 'status': MONITORED}) if zbx_getstatus(hostid) != MONITORED: die(4, 'Fail to change status to MONITORED') else: die(5, 'Fatal error, autodestruction') s.user.logout()
zbxunmon.ini
[SERVER] # If HTTP is used instead of HTTPS password will be sent in clear ! URL=https://acme.fr/zabbix USER=api PWD=P@ssw0rd # For GNU/Linux : Empty value for no proxy. Comment this line for default value (env http_proxy or https_proxy) HTTP_PROXY=
requirements.txt
zabbix-client>=0.1.1
Zabbix External Check - Script lancés coté serveur
Exemple supervision date expiration certificat
NB : pour que les modif soient prises en compte il fait attendre. Le fait de redémarer le service zabbix-server n'est pas suffisant
/etc/zabbix/zabbix_server.conf
ExternalScripts=/etc/zabbix/externalscripts
usermod -s bash zabbix mkdir /etc/zabbix/externalscripts service zabbix-server restart
/etc/zabbix/externalscripts/ssl-cert-check-zabbixwrap.sh
#! /bin/bash ssl-cert-check $* |sed -e 's/^.*days=//
Create item with key field : ssl-cert-check-zabbixwrap.sh[“-s 171.33.77.65 -p 443”]
En cas de pb
Configuration / Hosts / Items Colone “Error”, Survol de la souris pour afficher l'erreur.
et
tail -F /var/log/zabbix-server/zabbix_server.log
Yum force pb erreur le fichier de l'installation entre en conflit avec le fichier du paquet
Comment faire un yum --force en trichant un peu
Pb
le fichier /var/www de l'installation de httpd-2.4.6-40.el7.centos.1.x86_64 entre en conflit avec le fichier du paquet plop-1.8.8-2.noarch
Solution
Solution possible : Refaire proprement le package plop
ou forcer ! Nous allons utiliser yumdownloader (packet yum-utils)
yum install yum-utils
yumdownloader httpd rpm -Uvh --force httpd-2.4.6-40.el7.centos.1.x86_64.rpm
Pour que ça marche, il faut faire la même chose avec toutes les dépendances
# yumdownloader --resolve httpd-tools yumdownloader httpd-tools rpm -Uvh --force httpd-2.4.6-40.el7.centos.1.x86_64.rpm httpd-tools-2.4.6-40.el7.centos.1.x86_64.rpm
