Pārlūkot izejas kodu

Option to update the ciphersuite to recommended values

Bob Mottram 9 gadus atpakaļ
vecāks
revīzija
77669098a6
1 mainītis faili ar 70 papildinājumiem un 3 dzēšanām
  1. 70
    3
      src/freedombone-sec

+ 70
- 3
src/freedombone-sec Parādīt failu

@@ -493,6 +493,69 @@ function create_letsencrypt {
493 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 559
 function housekeeping {
497 560
   cmd=(dialog --separate-output \
498 561
               --backtitle "Freedombone Security Configuration" \
@@ -501,8 +564,9 @@ function housekeeping {
501 564
   options=(1 "Regenerate ssh host keys" off
502 565
            2 "Regenerate Diffie-Hellman keys" off
503 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 570
   choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
507 571
   clear
508 572
   for choice in $choices
@@ -518,9 +582,12 @@ function housekeeping {
518 582
         renew_startssl
519 583
         ;;
520 584
       4)
521
-        create_letsencrypt
585
+        update_ciphersuite
522 586
         ;;
523 587
       5)
588
+        create_letsencrypt
589
+        ;;
590
+      6)
524 591
         renew_letsencrypt
525 592
         ;;
526 593
     esac