Auteur Sujet: http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https  (Lu 50440 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #60 le: 22 janvier 2017 à 12:50:41 »
La suppression du mod http/2 de Apache 2.4.18 n'est pas un oubli: c'est une suppression volontaire (je n'ai pas compris pourquoi)

    - Don't build experimental http2 module for LTS:
      + debian/control: removed libnghttp2-dev Build-Depends (in universe).
      + debian/config-dir/mods-available/http2.load: removed.


Source : https://launchpad.net/ubuntu/xenial/+source/apache2/+changelog

L'auteur de la suppression de http/2 est Marc Deslauriers (Un salarié de Canonical qui est "Ubuntu Security Engineer" et qui était consultant en sécurité chez un grand FAI, avant de passer chez Canonical). J'imagine qu'il y a des pb de sécurité dans la décision de supprimer http/2.

Coté Debian unstable, http/2 semble bien présent : http://metadata.ftp-master.debian.org/changelogs/main/a/apache2/apache2_2.4.18-1_changelog


Pas de http/2 pour Ubuntu server 16.04 ni Ubuntu server 16.10.

J'ai regardé pour Ubuntu server 17.04, actuellement en développement et déception :

# lsb_release -a
No LSB modules are available.
Distributor ID:   Ubuntu
Description:   Ubuntu Zesty Zapus (development branch)
Release:   17.04
Codename:   zesty

# apache2 -v
Server version: Apache/2.4.23 (Ubuntu)
Server built:   2016-11-16T14:17:24

# a2enmod http2
ERROR: Module http2 does not exist!

Voici le contenu de /etc/apache2/mods-available/ :
# l /etc/apache2/mods-available/
access_compat.load    authz_owner.load    dir.conf                  log_debug.load       proxy_fdpass.load    setenvif.load
actions.conf          authz_user.load     dir.load                  log_forensic.load    proxy_ftp.conf       slotmem_plain.load
actions.load          autoindex.conf      dump_io.load              lua.load             proxy_ftp.load       slotmem_shm.load
alias.conf            autoindex.load      echo.load                 macro.load           proxy_hcheck.load    socache_dbm.load
alias.load            buffer.load         env.load                  mime.conf            proxy_html.conf      socache_memcache.load
allowmethods.load     cache_disk.conf     expires.load              mime.load            proxy_html.load      socache_shmcb.load
asis.load             cache_disk.load     ext_filter.load           mime_magic.conf      proxy_http.load      speling.load
auth_basic.load       cache.load          file_cache.load           mime_magic.load      proxy.load           ssl.conf
auth_digest.load      cache_socache.load  filter.load               mpm_event.conf       proxy_scgi.load      ssl.load
auth_form.load        cern_meta.load      headers.load              mpm_event.load       proxy_wstunnel.load  status.conf
authn_anon.load       cgid.conf           heartbeat.load            mpm_prefork.conf     ratelimit.load       status.load
authn_core.load       cgid.load           heartmonitor.load         mpm_prefork.load     reflector.load       substitute.load
authn_dbd.load        cgi.load            ident.load                mpm_worker.conf      remoteip.load        suexec.load
authn_dbm.load        charset_lite.load   imagemap.load             mpm_worker.load      reqtimeout.conf      unique_id.load
authn_file.load       data.load           include.load              negotiation.conf     reqtimeout.load      userdir.conf
authn_socache.load    dav_fs.conf         info.conf                 negotiation.load     request.load         userdir.load
authnz_fcgi.load      dav_fs.load         info.load                 proxy_ajp.load       rewrite.load         usertrack.load
authnz_ldap.load      dav.load            lbmethod_bybusyness.load  proxy_balancer.conf  sed.load             vhost_alias.load
authz_core.load       dav_lock.load       lbmethod_byrequests.load  proxy_balancer.load  session_cookie.load  xml2enc.load
authz_dbd.load        dbd.load            lbmethod_bytraffic.load   proxy.conf           session_crypto.load
authz_dbm.load        deflate.conf        lbmethod_heartbeat.load   proxy_connect.load   session_dbd.load
authz_groupfile.load  deflate.load        ldap.conf                 proxy_express.load   session.load
authz_host.load       dialup.load         ldap.load                 proxy_fcgi.load      setenvif.conf

Il devrait y avoir une évolution vers une version plus récente d'Apache2 (2.4.25 ou 2.4.26) d'ici la sorite, espérons que cela proposé.

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 423
  • Lyon (69) / St-Bernard (01)
    • Twitter
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #61 le: 22 janvier 2017 à 12:52:51 »
Perso j'ai installé un PPA alternatif pour avoir HTTP/2 sur mes machines ubuntu. C'est vraiment dommage, Debian Stretch a HTTP/2 lui...

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #62 le: 22 janvier 2017 à 13:24:11 »
Tu as compris pourquoi ?

J'ai compris pour Ubuntu 16.04 LTS : il y a un support de 5 ans sur une même version d'Apache2 et les équipes doivent faire des correctifs pour les pb de sécurité qui sont corrigés dans les versions ultérieures d'Apache2 et mod http2 étant jeune, il va y avoir de très nombreuses modifications (c'est vrai) et corriger une ancienne version radicalement différente est complexe.

Pour les versions avec un support de 9mois comme Ubuntu 16.10 et Ubuntu 17.04, cet argument n'est pas valable.

Pour Ubuntu 17.04, il est indiqué "Don't build experimental http2 module for LTS:" or ce n'est pas une version LTS !

J'ouvre un bug ?

apache2 (2.4.23-8ubuntu1) zesty; urgency=medium

  * Merge from Debian unstable (LP: #). Remaining changes:
    - Don't build experimental http2 module for LTS:
      + debian/control: removed libnghttp2-dev Build-Depends (in universe).
      + debian/config-dir/mods-available/http2.load: removed.
      + debian/rules: removed proxy_http2 from configure.
      + debian/apache2.maintscript: remove http2 conffile.
        [ Previously undocumented ]

Source : https://launchpad.net/ubuntu/zesty/+source/apache2/+changelog

jack

  • Professionnel des télécoms
  • *
  • Messages: 1 674
  • La Madeleine (59)
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #63 le: 22 janvier 2017 à 13:27:35 »
Une bonne occasion pour passer à nginx  :P

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #64 le: 22 janvier 2017 à 14:07:10 »
Bug crée : https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1658469

J’espère qu'il ne sera pas rejeté car Apache le considère toujours comme expérimental  :
Warning
This module is experimental. Its behaviors, directives, and defaults are subject to more change from release to release relative to other standard modules. Users are encouraged to consult the "CHANGES" file for potential updates.

Source : https://httpd.apache.org/docs/2.4/mod/mod_http2.html

Maintenant Ubuntu 17.04 n'est pas une version LTS et a un support de seulement 9 mois. La prise de risque est faible.

Je vais regarder si Debian le laisse dans Debian 9. Si c'est le cas, Ubuntu n'a aucune excuse.

zoc

  • Abonné Orange Fibre
  • *
  • Messages: 4 256
  • Antibes (06) / Mercury (73)
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #65 le: 22 janvier 2017 à 18:54:03 »
Une bonne occasion pour passer à nginx  :P
Je confirme  ;D

C'est ce que j'ai fait chez moi (sauf pour observium, je n'ai pas regardé si c'est faisable simplement). Après, en pratique, chez moi tous les sites web sont derrière un reverse proxy nginx (because une seule IPv4, évidemment).

corrector

  • Invité
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #66 le: 22 janvier 2017 à 20:44:52 »
Severe vulnerabilities discovered in HTTP/2 protocol

Four high-profile bugs have been found in the protocol, potentially placing 85 million websites at risk.

Researchers have discovered a number of security issues related to the new HTTP/2 protocol which could place millions of websites at risk of attack.

On Wednesday at Black Hat USA, cybersecurity firm Imperva released new research into a number of high-profile flaws found within the latest version of HTTP, HTTP/2, which underpins the worldwide web's underlying protocols and communication systems.

The report, HTTP/2: In-depth analysis of the top four flaws of the next generation web protocol (.PDF), details four main vulnerabilities and attack vectors related to HTTP/2, of which adoption is steadily increasing.

According to W3Techs, 8.7 percent of all websites -- roughly 85 million -- have adopted the new standard, which is meant to improve how browsers and servers communicate, speeding up the online experience.

The attack vectors discovered include:

- Slow read: The attack calls on a malicious client to read responses very slowly -- identical to the Slowloris DDoS attack which hit financial institutions in 2010 -- and despite slow read attacks being well-known in the HTTP ecosystem, they are still effective in the latest evolution of the web protocol. However, this time, they take place in the application layer of HTTP/2 implementations. Variants of this vulnerability have been discovered across Apache, IIS, Jetty, NGINX, and nghttp2.

- HPACK Bomb: The researchers say this attack resembles a "zip bomb," a malicious archive file designed to crash the program or system reading it and often used to disable antivirus software. Small and innocent-looking messages explode into gigabytes of a data on a server, siphoning away all server memory resources and effectively taking it offline.

- Dependency Cycle attack: HTTP/2 introduced a new flow control mechanism designed to optimize networks. However, the mechanism can be exploited should an attacker craft requests which create a dependency cycle -- creating an infinite loop which cannot be escaped when the flow control system attempts to process these requests.

- Stream Multiplexing Abuse: The final main issue emerges when attackers use security flaws present in how servers implement stream multiplexing functionality. These bugs can crash servers, resulting in a denial of service to legitimate users.

"The general web performance improvements and specific enhancements for mobile applications introduced in HTTP/2 are a potential boon for internet users," said Amichai Shulman, co-founder and CTO of Imperva.

"However, releasing a large amount of new code into the wild in a short time creates an excellent opportunity for attackers," Shulman added. "While it is disturbing to see known HTTP 1.x threats introduced in HTTP/2, it's hardly surprising. As with all new technology, it is important for businesses to perform due diligence and implement safeguards to harden the extended attack surface and protect critical business and consumer data from ever-evolving cyber threats."

In related news, at Black Hat, Rapid7 security researcher Weston Hacker demonstrated a $6 tool which can be used to compromise and break into keycard-based hotel rooms.


Source : ZD Net, la 4 août 2016

(c'est mal écrit mais les idées y sont)

vectronx

  • Professionnel des télécoms
  • Abonné MilkyWan
  • *
  • Messages: 89
  • Villefranche-sur-Saône 69
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #67 le: 22 janvier 2017 à 21:21:24 »
Je dirais plus que c'est l’occasion de passer sur Debian, j'utilise tout les jours http2 sur ma Debian jessie avec apache sortie tout droit du dépôt stretch.
« Modifié: 22 janvier 2017 à 22:48:23 par vectronx »

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 423
  • Lyon (69) / St-Bernard (01)
    • Twitter
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #68 le: 22 janvier 2017 à 22:44:12 »
Non merci  ;)

Hugues

  • AS2027 MilkyWan
  • Modérateur
  • *
  • Messages: 12 423
  • Lyon (69) / St-Bernard (01)
    • Twitter
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #69 le: 22 janvier 2017 à 22:44:57 »
C'est ce que j'ai fait chez moi (sauf pour observium, je n'ai pas regardé si c'est faisable simplement).

Ouep, j'en ai déjà vu :)

(3000 messages \o/ )

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #70 le: 13 février 2017 à 10:32:07 »
Bug crée : https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1658469

J’espère qu'il ne sera pas rejeté car Apache le considère toujours comme expérimental  :
Warning
This module is experimental. Its behaviors, directives, and defaults are subject to more change from release to release relative to other standard modules. Users are encouraged to consult the "CHANGES" file for potential updates.

La réponse, https2 arrive avec Ubuntu 17.10 en octobre 2017 :
apache2 is now stuck in proposed. This is becuase nghttp2 (src package) is in universe, and so is libnghttp2-14 which apache2 depends on when enabling http2. We would need a MIR to promote nghttp2 and given where we are in the cycle, that seems unlikely to be approved. Additionally, regardless of Debian, upstream apache still considers it experimental: https://httpd.apache.org/docs/2.4/mod/mod_http2.html.
Given all that, I'm much more comfortable aiming for HTTP2 support in 17.10, as anticipatory of 18.04 and will pursue the MIR and needed first thing in that cycle.


Traduction rapide en français :
Apache2 est maintenant figé pour Ubuntu 17.04. C'est parce que le paquet nghttp2 et donc est libnghttp2-14 dont apache2 dépend lors de l'activation de http2. Nous aurions besoin d'un paquet MIR pour promouvoir nghttp2 et étant donné vu que nous somme en fin de cycle pour Ubuntu 17.04, il y a peu de chance d'être approuvé. De plus, indépendamment de Debian, en amont, apache2 considère le mode_http2 comme expérimental: https://httpd.apache.org/docs/2.4/mod/mod_http2.html.
Compte tenu de tout cela, je suis beaucoup plus à l'aise a viser une mise en place de HTTP2 pour Ubuntu 17.10, en anticipation d' Ubuntu 18.04 LTS.

vivien

  • Administrateur
  • *
  • Messages: 47 076
    • Twitter LaFibre.info
http/2: Mécanisme de négociation http2 vs http1.1 dans un GET https
« Réponse #71 le: 22 mai 2017 à 22:57:17 »
Je vous invite a lire la suite des échanges : https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1658469

Je n'arrive pas a saisir si le mod http/2 sera disponible pour Ubuntu 17.10 (et donc Ubuntu 18.04LTS) :
18:13 <rbasak> nacc: not sure about bug 1658469
18:13 <ubottu> bug 1658469 in apache2 (Ubuntu) "mod_http2 is not available under Apache 2.4.23 / Ubuntu 17.04 xenial" [Low,Fix committed] https://launchpad.net/bugs/1658469
18:13 <rbasak> nacc: to my knowledge we've never added and then removed things to avoid putting things in an LTS.
18:13 <teward> rbasak: refer to -hardened and my mention about nghttp2
18:13 <rbasak> Yeah I saw that, but nacc wasn't in that channel.
18:14 <teward> yep.
18:14 <teward> nacc: IIRC, the Security team had NACK'd http2 back in Xenial
18:14 <teward> at least nghttp2
18:14 <rbasak> nacc: if it's not good enough for an LTS, it's not good enough for a non-LTS release.
18:14 <teward> (NGINX rolls their own implementation separate from nghttp2)
18:15 -!- knoxy has joined #ubuntu-server