Browse Source

Allow some apps to use ciphers better suited for mobile apps

Bob Mottram 8 years ago
parent
commit
c9eb34c7d1
3 changed files with 17 additions and 3 deletions
  1. 1
    1
      src/freedombone-app-nextcloud
  2. 5
    1
      src/freedombone-sec
  3. 11
    1
      src/freedombone-utils-web

+ 1
- 1
src/freedombone-app-nextcloud View File

442
         echo '' >> $nextcloud_nginx_site
442
         echo '' >> $nextcloud_nginx_site
443
         echo '  # Security' >> $nextcloud_nginx_site
443
         echo '  # Security' >> $nextcloud_nginx_site
444
         function_check nginx_ssl
444
         function_check nginx_ssl
445
-        nginx_ssl $NEXTCLOUD_DOMAIN_NAME
445
+        nginx_ssl $NEXTCLOUD_DOMAIN_NAME mobile
446
 
446
 
447
         function_check nginx_disable_sniffing
447
         function_check nginx_disable_sniffing
448
         nginx_disable_sniffing $NEXTCLOUD_DOMAIN_NAME
448
         nginx_disable_sniffing $NEXTCLOUD_DOMAIN_NAME

+ 5
- 1
src/freedombone-sec View File

612
     cd $WEBSITES_DIRECTORY
612
     cd $WEBSITES_DIRECTORY
613
     for file in `dir -d *` ; do
613
     for file in `dir -d *` ; do
614
         sed -i "s|ssl_protocols .*|ssl_protocols $RECOMMENDED_SSL_PROTOCOLS;|g" $WEBSITES_DIRECTORY/$file
614
         sed -i "s|ssl_protocols .*|ssl_protocols $RECOMMENDED_SSL_PROTOCOLS;|g" $WEBSITES_DIRECTORY/$file
615
-        sed -i "s|ssl_ciphers .*|ssl_ciphers '$RECOMMENDED_SSL_CIPHERS';|g" $WEBSITES_DIRECTORY/$file
615
+        if ! grep -q "Mobile compatible ciphers" $WEBSITES_DIRECTORY/$file; then
616
+            sed -i "s|ssl_ciphers .*|ssl_ciphers '$RECOMMENDED_SSL_CIPHERS';|g" $WEBSITES_DIRECTORY/$file
617
+        else
618
+            sed -i "s|ssl_ciphers .*|ssl_ciphers '$SSL_CIPHERS_MOBILE';|g" $WEBSITES_DIRECTORY/$file
619
+        fi
616
     done
620
     done
617
     systemctl restart nginx
621
     systemctl restart nginx
618
     write_config_param "SSL_PROTOCOLS" "$RECOMMENDED_SSL_PROTOCOLS"
622
     write_config_param "SSL_PROTOCOLS" "$RECOMMENDED_SSL_PROTOCOLS"

+ 11
- 1
src/freedombone-utils-web View File

45
 # See https://wiki.mozilla.org/Security/Server_Side_TLS
45
 # See https://wiki.mozilla.org/Security/Server_Side_TLS
46
 SSL_CIPHERS="ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"
46
 SSL_CIPHERS="ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS"
47
 
47
 
48
+# some mobile apps (eg. NextCloud) have not very good cipher compatibility.
49
+# These ciphers can be used for those cases
50
+SSL_CIPHERS_MOBILE="ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA"
51
+
48
 NGINX_ENSITE_REPO="https://github.com/perusio/nginx_ensite"
52
 NGINX_ENSITE_REPO="https://github.com/perusio/nginx_ensite"
49
 NGINX_ENSITE_COMMIT='fa4d72ce1c0a490442c8474e9c8dc21ed52c93d0'
53
 NGINX_ENSITE_COMMIT='fa4d72ce1c0a490442c8474e9c8dc21ed52c93d0'
50
 
54
 
123
 function nginx_ssl {
127
 function nginx_ssl {
124
     # creates the SSL/TLS section for a website
128
     # creates the SSL/TLS section for a website
125
     domain_name=$1
129
     domain_name=$1
130
+    mobile_ciphers=$2
126
     filename=/etc/nginx/sites-available/$domain_name
131
     filename=/etc/nginx/sites-available/$domain_name
127
 
132
 
128
     echo '    ssl_stapling off;' >> $filename
133
     echo '    ssl_stapling off;' >> $filename
136
     echo '    ssl_session_timeout 60m;' >> $filename
141
     echo '    ssl_session_timeout 60m;' >> $filename
137
     echo '    ssl_prefer_server_ciphers on;' >> $filename
142
     echo '    ssl_prefer_server_ciphers on;' >> $filename
138
     echo "    ssl_protocols $SSL_PROTOCOLS;" >> $filename
143
     echo "    ssl_protocols $SSL_PROTOCOLS;" >> $filename
139
-    echo "    ssl_ciphers '$SSL_CIPHERS';" >> $filename
144
+    if [ $mobile_ciphers ]; then
145
+        echo "    # Mobile compatible ciphers" >> $filename
146
+        echo "    ssl_ciphers '$SSL_CIPHERS_MOBILE';" >> $filename
147
+    else
148
+        echo "    ssl_ciphers '$SSL_CIPHERS';" >> $filename
149
+    fi
140
     echo "    add_header Content-Security-Policy \"default-src https:; script-src https: 'unsafe-inline'; style-src https: 'unsafe-inline'\";" >> $filename
150
     echo "    add_header Content-Security-Policy \"default-src https:; script-src https: 'unsafe-inline'; style-src https: 'unsafe-inline'\";" >> $filename
141
     echo '    add_header X-XSS-Protection "1; mode=block";' >> $filename
151
     echo '    add_header X-XSS-Protection "1; mode=block";' >> $filename
142
     echo '    add_header X-Robots-Tag none;' >> $filename
152
     echo '    add_header X-Robots-Tag none;' >> $filename