server.main
- Adresse du serveur
- Pré
- DNS
- Installer packages
- Firewall/iptables
- SSL
- Upgrade certbot
- FTP
- rights, chmod and stuff
- PHP
- Configuration Nginx
- Todo
- installer gitlab
- Ressources
- Site qui tombe (ip ne répond plus)
- Le problème des IP chinoises qui attaquent en tentant de se connecter en root
- Cozy Cloud
- Migration
- Cache optimization
- Lister les ip locales du serveur
- Contrôler les logs
- Redémarrer le serveur
Adresse du serveur
Pré
Ouvertures des ports sur la box. Le principe, c’est de définir un bail DHCP statique pour la machine (là, 192.168.1.23), puis de rediriger les ports vers cette machine.
On n’ouvre pas les ports pour toutes les machines, d’où l’importance de définir la machine au préalable.
Ports à ouvrir >
80 (http)
443 (https)
25 (smtp)
22 (ssh)
21 (ftp)
DNS
w/ ovh
$TTL 3600
@ IN SOA dns113.ovh.net. tech.ovh.net. (2018113003 86400 3600 3600000 300)
IN NS dns113.ovh.net.
IN NS ns113.ovh.net.
IN MX 10 thomasguesnon.net.
IN A 213.186.33.5
IN TXT "1|www.thomasguesnon.net"
_xmpp-client._tcp 3600 IN SRV 0 5 5222 thomasguesnon.net.
_xmpp-server._tcp IN SRV 0 5 5269 thomasguesnon.net.
www IN A 86.229.178.71
www IN TXT "3|welcome"
www IN TXT "l|fr"
Comparer avec les entrées de la zone DNS de thomasguesnon.fr
Installer packages
PHP > https://olange.developpez.com/articles/debian/installation-serveur-dedie/?page=page_2
smtp : postfix imap : dovecot antispam : rspamnd
créer des users mails SMTP + port 25 > https://yunohost.org/#/isp_orange_fr
https://www.tictech.info/post/mail_postfixadmin
Installation de postfixadmin
Postfixadmin s’installe dans /usr/share/postfixadmin
Problème avec le setup https://github.com/postfixadmin/postfixadmin/issues/69
Si mail: command not found
sudo apt-get install mailutils
aliases
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-postfix-e-mail-server-with-dovecot
There are a few mail accounts you should set up in your alias config that are important. For example the SMTP RFC mandates that any publicly accessible mailserver that accepts any mail at all must also accept mail to the ‘postmaster’ account, and some people might expect “hostmaster”, “abuse”, “webmaster”, and other mailboxes to be present. You can either redirect those mail addresses to root, or to a specific user. Here is a sane default for /etc/aliases, presuming that you check email for root:
mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
If you want to redirect all of that to a specific local user, say, “yourname” just add
root: yourname
Postfix will resolve the entire chain of aliases for you and forward all those mail addresses to “yourname”. (This is done by the local daemon using the aliases specification.)
As “aliases” says, after updating the /etc/aliases file, you have to run
newaliases
to compile the file into the database Postfix uses for fast lookup.
Problème pour envoyer les mails (SMTP, Orange)
- https://duckduckgo.com/?q=postfix+smtp+orange&t=lm&ia=web
- https://communaute.orange.fr/t5/mon-mail-Orange/configuration-serveur-postfix-pour-envoir-de-mail/td-p/1426918
- une piste là, pour s’authentifier sur le smtp avec dovecot https://blog.moncoindunet.fr/open-source/postfix/authentification-smtp-avec-postfix-et-dovecot-sasl/
- une autre explication pour smtp w/ dovecot https://www.digitalocean.com/community/tutorials/how-to-set-up-a-postfix-e-mail-server-with-dovecot
- https://blog.microlinux.fr/dovecot-centos/
Voir (05/03/2019)
- http://arobaseinformatique.eklablog.com/configurer-postfix-pour-le-smtp-authentifie-orange-a128181854
- https://forum.ubuntu-fr.org/viewtopic.php?id=427341
- un essai pour s’auth/smtp avec postfix > https://unix.stackexchange.com/questions/36982/can-i-set-up-system-mail-to-use-an-external-smtp-server#37061
Dernière chance…
J’ai tenté l’essai, pour finir, avec ssmtp
. https://doc.ubuntu-fr.org/ssmtp#configuration_de_revaliases
Firewall/iptables
Ban IP adresses : https://www.cyberciti.biz/faq/linux-howto-check-ip-blocked-against-iptables/
Comment utiliser iptables
- Les règles sont dans
/etc/iptables.rules
- Pour les appliquer :
iptables-restore < /etc/iptables.rules
- Pour les rendre permanentes :
SSL
Il faut un certificat par sous-domaine : thomasguesnon.net www.thomasguesnon.net rss.thomasguesnon.net voir.thomasguesnon.net git.thomasguesnon.net
- Générer certificat avec Let’s Encrypt https://letsencrypt.org/getting-started/
- Plus particulièrment w/ Certbot > https://certbot.eff.org/lets-encrypt/debianstretch-apache
- Pour re-créer des certificats > https://certbot.eff.org/docs/using.html#re-creating-and-updating-existing-certificates
Si je change d’Apache vers NGinx, il faudra à nouveau générer un certificat.
certbot --apache -d thomasguesnon.net -d www.thomasguesnon.net
Avec plusieurs sous et sous-sous-domaines
ex. on veut casier.thomasguesnon.net
, et aussi home.casier.thomasguesnon.net
et settings.casier.thomasguesnon.net
On laisse toujours une conf apache, ouverte en :80
(non-sécurisé), pour que certbot puisse trouver le passage et certifier. On ajoute notre sous-sous-domaine en alias
ServerName casier.thomasguesnon.net
ServerAlias new.casier.thomasguesnon.net
sudo service apache2 restart
Quand on veut ajouter un sous-sous-domaine, on refait les certificats pour tout le sous-domaine
$ certbot -d casier.thomasguesnon.net -d home.casier.thomasguesnon.net -d settings.casier.thomasguesnon.net -d new.casier.thomasguesnon.net
Copier-coller pur CozyCloud (lorsqu’on veut ajouter un certificat, on renouvelle tous les sous-sous-domaines de casier.thoamsguesnon.net
certbot -d casier.thomasguesnon.net -d onboarding.casier.thomasguesnon.net -d home.casier.thomasguesnon.net -d store.casier.thomasguesnon.net -d settings.casier.thomasguesnon.net -d drive.casier.thomasguesnon.net -d photos.casier.thomasguesnon.net -d banks.casier.thomasguesnon.net -d contacts.casier.thomasguesnon.net
Renouveler le certificat
certbot renew
https://certbot.eff.org/docs/using.html#renewing-certificates
Plus sûrement, pour renouveler un domaine e.g. utiliser certonly
certbot certonly -d www.domain.com --webroot /var/www/domain.com # l'option webroot fout moins le bordel pour un renew, que l'option apache
Puis on redémarre Apache sudo service apache2 restart
pour que les renouvellement soient pris en compte.
Autre manière
certbot renew --d www.domain.com --cert-name www.domain.com
Puis on redémarre Apache sudo service apache2 restart
.
Obtenir les informations sur les certificats en cours
Les certificats sont dans /etc/letsencrypt/live/$domain
Ou faire
certbot certificates
On voit quelque chose comme ça :
Certificate Name: voir.thomasguesnon.net
Domains: voir.thomasguesnon.net
Expiry Date: 2019-06-02 19:51:33+00:00 (VALID: 50 days)
Certificate Path: /etc/letsencrypt/live/voir.thomasguesnon.net/fullchain.pem
Private Key Path: /etc/letsencrypt/live/voir.thomasguesnon.net/privkey.pem
Upgrade certbot
user@webserver:~$ wget https://dl.eff.org/certbot-auto
user@webserver:~$ chmod a+x ./certbot-auto
user@webserver:~$ ./certbot-auto --hel
FTP
- https://www.thomas-krenn.com/en/wiki/Setup_FTP_Server_under_Debian#Troubleshooting_if_connection_issues_occur
- install
- tls certificat
- users, group. Home paths (/etc/passwd)
proftpd.conf
+ custom confs >/conf.d/*
- passive ports (explication) > http://slacksite.com/other/ftp.html
- add passive ports ton config file + “” + “” > http://www.linuxweblog.com/blogs/sandip/20090612/configure-passive-ports-range-proftpd
Essayé avec proftpd. Impossible de récupérer le contenu du dossier du côté client (Filezilla).
À la place, j’ai essayé sftp/ssh, avec ce tuto > https://devtidbits.com/2011/06/29/implement-a-sftp-service-for-ubuntudebian-with-a-chrooted-isolated-file-directory/ ça marche.
Il faut bien penser à créer un utilisateur:groupe pour pouvoir accéder au dossier par le ftp
Pour modifier la conf :
sudo emacs /etc/ssh/sshd_config
sudo /etc/init.d/ssh restart # puis on redémarre le service
rights, chmod and stuff
drwx-wx-wx 2 root root 4096 déc. 3 12:41 test_noaccess # accès fermé de l'extérieur
drwxr-xr-x 2 root root 4096 déc. 3 12:39 test_readonly # accès en lecture seule
drwxrwxr-x 2 root sftponly 4096 déc. 3 12:40 test_readwrite # accès ftp autorisé
PHP
Plusieurs version de PHP disponibles https://pehapkari.cz/blog/2017/03/27/multiple-php-versions-the-easy-way/
Pour switcher : https://pehapkari.cz/blog/2017/03/27/multiple-php-versions-the-easy-way/
, et taper le numéro de la version qu’on souhaite utiliser sur le serveur
Configuration Nginx
objectif : diriger thomasguesnon.net
vers le sous domaine www.thomasguesnon.net
(et non pas vers thomasguesnon.net.yunohost/sso
https://www.binarytides.com/install-nginx-php-fpm-mariadb-debian/
Todo
installer git (https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server)
installer gitlab
- https://kevingoedecke.me/2015/09/17/setup-gitlab-on-debian-7-with-existing-apache-webserver/
- https://stackoverflow.com/questions/41040867/gitlab-on-apache2-with-ssl
- https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache
- https://ryansechrest.com/2015/08/use-apache-instead-of-built-in-nginx-in-gitlab-ce/
If you get the “502 Whoops, GitLab is taking too much time to respond” message, first thing to try is
sudo gitlab-ctl restart
IF the restart doesn’t help then try
sudo gitlab-ctl reconfigure
Typically one of the two will fix the problem.
J’ai fini par lâcher l’affaire, gitlab est trop gourmand pour ma petite machine.
–
run jekyll et build automatiquement les articles
run node apps
installer piwik
gérer backup
Ressources
- http://wiki.auto-hebergement.fr/fournisseurs/fai#d%C3%A9tail_des_fai
Site qui tombe (ip ne répond plus)
d’abord, je pinge. Rien
ping 86.229.178.71
From 80.10.237.157 icmp_seq=1 Destination Host Unreachable
L’IP de la box avait changé !
Points à modifier :
- Pointage DNS chez registar
- Gitlab : Dans la partie SSH du CI/CD, modifier les valeurs de l’ancienne IP par la nouvelle
- modifier les IP dans les fichiers
gitlab-cy.yml
des repos concernés
Le problème des IP chinoises qui attaquent en tentant de se connecter en root
https://security.stackexchange.com/questions/111659/blocking-chinese-ip-addresses
Installer fail2ban
apt-get install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Et
sudo emacs /etc/fail2ban/jail.local
[DEFAULT]
# “ignoreip” can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 172.31.0.0/24 10.10.0.0/24 192.168.0.0/24
bantime = 86400
maxretry = 5
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=you@mail.com, sender=fail2ban@mail.com]
logpath = /var/log/auth.log
maxretry = 5
logpath=/var/log/secure (for RedHat,CentOS,Fedora)
/etc/init.d/fail2ban restart # C'est sur la doc du lien plus-haut
sudo fail2ban-client start # Sur Debian, j'ai plutôt fait ça
iptables -L # check iptables
Là, on doit avoir toutes les ips bloquées, lu dans les logs d’Apache, et qui ont montré des signes de malveillance
Cozy Cloud
J’ai installé, mais n’ai jamais réussi à faire fonctionner l’envoi de mails sur le serveur. Sauf que CozyCloud en a besoin, afin d’envoyer le lien d’activation.
toutefois, on peut récupérer le lien d’activation en faisant comme ça > https://forum.cozy.io/t/welcome-your-cozy-has-not-been-yet-activated/5063/2
On fait
cozy-stack instances show casier.thomasguesnon.net
Password:******** # on rentre le mdp créé au moment de l'install
{
"id": "26865dd225b98beb087aed4a330005ac",
"meta": {
"rev": "1-3e2edbd09c6a237d576f5ddf61c70d3a"
},
"attributes": {
"domain": "casier.thomasguesnon.net",
"prefix": "cozy5cbf7e91dd710a64dbfceec243141088",
"locale": "en",
"onboarding_finished": false,
"indexes_version": 20,
"swift_cluster": 1,
"passphrase_reset_token": null,
"passphrase_reset_time": "0001-01-01T00:00:00Z",
"register_token": "7nYgXCd7optYnn6pPMVqbQ=="
}
}
On récupère la valeur de la clé register_token
, et on la décode
$ /etc/apache2/sites-enabled# echo -n "7nYgXCd7optYnn6pPMVqbQ==" | base64 -d | xxd -p
ee76205c277ba29b589e7ea93cc56a6d # le résultat
Là, on va sur http://casier.thomasguesnon.net/?registerToken=ee76205c277ba29b589e7ea93cc56a6d
, avec notre token en valeur au paramètre registerToken
Migration
Éléments à sauvegarder pour la migration
- config postfix
/etc/postfix
- config dovecot
/etc/dovecot
- conf apache
etc/apache2
Cache optimization
Avant tout, installer
cd /etc/apache2/mods-available
sudo a2enmod headers
/etc/init.d/apache2 restart
Pour mettre les ressources en cache.
Dans le .htaccess
, mettre
Header set Cache-Control "max-age=31536000"
Ou dans /etc/apache2/sites-enabled/{site}.conf
<IfModule mod_headers.c>
Header set Cache-Control "public max-age=31536000"
</IfModule>
Puis, dans le index.html
<meta http-equiv="Cache-control" content="public">
Lister les ip locales du serveur
netstat -pln
Contrôler les logs
cd /var/log/apache2 # on regarde les logs d'un site apache
tail -f site-error.log # on checke les logs, qui se rafraichissent à chaque action sur le site
Redémarrer le serveur
- arrêter nginx
sudo service nginx stop
- démarrer apache
sudo service apache2 restart
- démarrer mongodb
sudo service mongod start
- lancer les apps node w/ pm2 (buxid + time)
- lancer les containers docker.