Kaynağa Gözat

Option to update the ciphersuite to recommended values

Bob Mottram 9 yıl önce
ebeveyn
işleme
77669098a6
1 değiştirilmiş dosya ile 70 ekleme ve 3 silme
  1. 70
    3
      src/freedombone-sec

+ 70
- 3
src/freedombone-sec Dosyayı Görüntüle

493
   exit 0
493
   exit 0
494
 }
494
 }
495
 
495
 
496
+function update_ciphersuite {
497
+    project_filename=/usr/local/bin/${PROJECT_NAME}
498
+    if [ ! -f $project_filename ]; then
499
+        project_filename=/usr/bin/${PROJECT_NAME}
500
+    fi
501
+
502
+    RECOMMENDED_SSL_CIPHERS=$(cat $project_filename | grep 'SSL_CIPHERS=' | head -n 1 | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
503
+    if [ ! "$RECOMMENDED_SSL_CIPHERS" ]; then
504
+        return
505
+    fi
506
+    if [ ${#RECOMMENDED_SSL_CIPHERS} -lt 5 ]; then
507
+        return
508
+    fi
509
+
510
+    RECOMMENDED_SSL_PROTOCOLS=$(cat $project_filename | grep 'SSL_PROTOCOLS=' | head -n 1 | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
511
+    if [ ! "$RECOMMENDED_SSL_PROTOCOLS" ]; then
512
+        return
513
+    fi
514
+    if [ ${#RECOMMENDED_SSL_PROTOCOLS} -lt 5 ]; then
515
+        return
516
+    fi
517
+
518
+    RECOMMENDED_SSH_CIPHERS=$(cat $project_filename | grep 'SSH_CIPHERS=' | head -n 1 | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
519
+    if [ ! "$RECOMMENDED_SSH_CIPHERS" ]; then
520
+        return
521
+    fi
522
+    if [ ${#RECOMMENDED_SSH_CIPHERS} -lt 5 ]; then
523
+        return
524
+    fi
525
+
526
+    RECOMMENDED_SSH_MACS=$(cat $project_filename | grep 'SSH_MACS=' | head -n 1 | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
527
+    if [ ! "$RECOMMENDED_SSH_MACS" ]; then
528
+        return
529
+    fi
530
+    if [ ${#RECOMMENDED_SSH_MACS} -lt 5 ]; then
531
+        return
532
+    fi
533
+
534
+    RECOMMENDED_SSH_KEX=$(cat $project_filename | grep 'SSH_KEX=' | head -n 1 | awk -F '=' '{print $2}' | awk -F '"' '{print $2}')
535
+    if [ ! "$RECOMMENDED_SSH_KEX" ]; then
536
+        return
537
+    fi
538
+    if [ ${#RECOMMENDED_SSH_KEX} -lt 5 ]; then
539
+        return
540
+    fi
541
+
542
+    cd $WEBSITES_DIRECTORY
543
+    for file in `dir -d *` ; do
544
+        sed -i "s|ssl_protocols .*|ssl_protocols $RECOMMENDED_SSL_PROTOCOLS;|g" $WEBSITES_DIRECTORY/$file
545
+        sed -i "s|ssl_ciphers .*|ssl_ciphers '$RECOMMENDED_SSL_CIPHERS';|g" $WEBSITES_DIRECTORY/$file
546
+    done
547
+    systemctl restart nginx
548
+
549
+    sed -i "s|Ciphers .*|Ciphers $RECOMMENDED_SSH_CIPHERS|g" $SSH_CONFIG
550
+    sed -i "s|MACs .*|MACs $RECOMMENDED_SSH_MACS|g" $SSH_CONFIG
551
+    sed -i "s|KexAlgorithms .*|KexAlgorithms $RECOMMENDED_SSH_KEX|g" $SSH_CONFIG
552
+    systemctl restart ssh
553
+
554
+    dialog --title $"Update ciphersuite" \
555
+           --msgbox $"The ciphersuite has been updated to recommended versions" 6 40
556
+    exit 0
557
+}
558
+
496
 function housekeeping {
559
 function housekeeping {
497
   cmd=(dialog --separate-output \
560
   cmd=(dialog --separate-output \
498
               --backtitle "Freedombone Security Configuration" \
561
               --backtitle "Freedombone Security Configuration" \
501
   options=(1 "Regenerate ssh host keys" off
564
   options=(1 "Regenerate ssh host keys" off
502
            2 "Regenerate Diffie-Hellman keys" off
565
            2 "Regenerate Diffie-Hellman keys" off
503
            3 "Renew a StartSSL certificate" off
566
            3 "Renew a StartSSL certificate" off
504
-           4 "Create a new Let's Encrypt certificate" off
505
-           5 "Renew Let's Encrypt certificate" off)
567
+           4 "Update cipersuite" off
568
+           5 "Create a new Let's Encrypt certificate" off
569
+           6 "Renew Let's Encrypt certificate" off)
506
   choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
570
   choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
507
   clear
571
   clear
508
   for choice in $choices
572
   for choice in $choices
518
         renew_startssl
582
         renew_startssl
519
         ;;
583
         ;;
520
       4)
584
       4)
521
-        create_letsencrypt
585
+        update_ciphersuite
522
         ;;
586
         ;;
523
       5)
587
       5)
588
+        create_letsencrypt
589
+        ;;
590
+      6)
524
         renew_letsencrypt
591
         renew_letsencrypt
525
         ;;
592
         ;;
526
     esac
593
     esac