Adresse du serveur

86.229.179.47

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)

dhcp

natpat

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

Email

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
  • https://doc.ubuntu-fr.org/postfix#bridage_smtp

  • 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 https://wiki.debian.org/iptables

Les règles sont dans /etc/iptables.rules Pour les appliquer : iptables-restore < /etc/iptables.rules Pour les rendre permanentes :

SSH

Configuration : https://www.memoinfo.fr/tutoriels-linux/configurer-serveur-ssh/ https://stackoverflow.com/questions/20840012/ssh-remote-host-identification-has-changed#23150466 Setup keys https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/ se connecter avec root : root@86.229.178.71 plutôt que admin@86.229.178.71

SSL

Il faut un certificat par sous-domaine : thomasguesnon.net www.thomasguesnon.net rss.thomasguesnon.net voir.thomasguesnon.net git.thomasguesnon.net

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 enouveler 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 pour que les renouvellement soient pris en compte.

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 http://www.proftpd.org/docs/howto/ConfigFile.html

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

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

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é ! C’est devenu 2.10.99.136

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