Port generieren, wenn nicht dann

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Blubb..Blubb, 26.09.2016.

  1. #1 Blubb..Blubb, 26.09.2016
    Blubb..Blubb

    Blubb..Blubb Grünschnabel

    Dabei seit:
    23.09.2016
    Beiträge:
    1
    Zustimmungen:
    0
    Hey Leute, ich hänge ein wenig an einem Problem.

    Der User kann einen port frei wählen.
    Also SSH_USERPORT=""

    Nun habe ich aber eine.hand voll ports, die nicht genutzt werden dürfen wie
    22,443,53,80 etc.

    Das heißt ich muss jetzt fragen ob der $SSH_USERPORT = $PORTS_IN_USE ist.

    Dazu wollte ich gern ein Array nutzen. Logisch.

    Danach soll entschieden werden, ob der port frei ist bzw. Verwendet werden darf oder nicht.

    Falls nicht, soll er generiert werden.

    Ich werd einfach mal hin, was ich habe und hoffe, dass mir da einer auf die Sprünge helfen kann:
    Code:
                                         
    #!/bin/bash                                      
                                                     
    #------------------------------------------------
    ----------------------                           
    #################################################
    ######################                           
    #------------------------------------------------
    ----------------------                                      
    SSH_PORT_TO_USE=$(( RANDOM % (1 - 1024 + 1 ) + 5 
    ))                                               
    echo $SSH_PORT_TO_USE                            
    echo "-------------------------------------------
    "                                                
    # Read the elements into bash array, with IFS bei
    ng the de-limiter for input                      
    #21, 25, 53, 80, 143, 443, 587, 990, 993, 2008, 8
    000, 10011, 30033, 41144                         
    IFS="," read -ra randomNos <<< "436,345,437,568,9
    85,68,89,74,15,2,4,5,6,7,8,9,156,1001,1002,999"  
                                                     
    # Print the random numbers using the '$RANDOM' va
    riable built-in modulo with                      
    # array length.                                  
    printf "%s\n" "${randomNos[ $RANDOM % ${#randomNo
    s[@]}]}"                                         
    echo "-------------------------------------------
    "                                                
    PORT_NUMBER=$({$randomNos[ $RANDOM % ${#randomNos
    [@]}]})                                          
                                                     
    echo $PORT_NUMBER                                
    echo "-------------------------------------------
    
    #eh so is kacke
    if [ ${SSH_PORT} == '21' ] || [ ${SSH_PORT} == '25' ] || [ ${SSH_PORT} == '53' ] || [ ${SSH_PORT} == '80' ] || [ ${SSH_PORT} == '143' ] || [ ${SSH_PORT} == '443' ] || [ ${SSH_PORT} == '587' ] || [ ${SSH_PORT} == '990' ] || [ ${SSH_PORT} == '993' ] || [ ${SSH_PORT} -gt 1024 ] || [ ${SSH_PORT} -le 0 ]; then
    
    	#naja klappt.nicht richtig
    if [ ${SSH_PORT} == ''suchdumireinen'' ]; then
    
    
    #Generate SSH Port
    
    declare -A ignoreList='(
    
    		[21]="1" 
    
    		[22]="1"
    
    		[25]="1" 
    
    		[53]="1" 
    
    		[80]="1" 
    
    		[143]="1" 
    
    		[587]="1" 
    
    		[990]="1" 
    
    		[993]="1" 
    
    		[443]="1" 
    
    		[2008]="1" 
    
    		[10011]="1" 
    
    		[30033]="1" 
    
    		[41144]="1")'
    
    
    randomNumber="$(($RANDOM % 1023))"
    
    #return a string
    
    SSH_PORT=$([[ ! -n "${ignoreList["$randomNumber"]}" ]] && printf "%s\n" "$randomNumber")
    
      	 sed -i "s/SSH_PORT=\"generateport\"/SSH_PORT=\"$SSH_PORT\"/g" /root/userconfig.cfg
    
    	 sed -i "s/^Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config
    
    fi
    
    Das ist meine test.sh da experimentiere ich schon seit Tagen an dem Problem rum...Hat jemand einen Tipp?

    Zusammengefasst will ich das:
    Wenn user nix angibt > generiere
    Wenn user angibt > prüfe
    > wenn port frei > nutze
    >wenn port nicht frei > generiere

    Aber irgendwie Sitz ich da auf dem Schlauch habe mit while und for experimentiert aber sehe den Wald vor Bäumen nicht.

    Puh
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Programmer78, 26.09.2016
    Programmer78

    Programmer78 Foren As

    Dabei seit:
    28.11.2007
    Beiträge:
    93
    Zustimmungen:
    1
    Hallo,

    1. wie ist denn die Nutzereingabe und Übergabe realisiert (ManinMiddle bei Übertragung)
    2. SSH-Ports sollten im hohen Portbereich liegen.

    Prüfen würde ich mit netstat, welche Ports gerade aktiv sind, einfach mit grep. Nach Änderung der sshconfig muss dann noch ssh neugestartet werden, falls der Dienst schon in Betrieb ist.

    Das generieren hast du ja schon gelöst. Ich würde es "einfach" machen: seq 10000 60000 | sort -R | head -1

    Ich hatte auch einmal manuelle Eingaben gefordert, alles zur Pseudo-Sicherheit aber irgendwann nerven die Eingaben, deswegen würde ich sofort einen Random-Port vorgeben, der vorher geprüft ist. Prüfen ob SSH auch mit diesen Port gestartet werden konnte. Problem ist dann noch die Ausgabe, wo der Port denn jetzt horcht. Die muss dann ja auch sicher sein. Nachdem man verbunden ist, kann man den ssh-Dienst auch wieder beenden.

    Aber vielleicht gehts ja garnicht um Sicherheit.. sondern um etwas anderes :)
     
  4. uhelp

    uhelp Grünschnabel

    Dabei seit:
    16.09.2011
    Beiträge:
    4
    Zustimmungen:
    0
    Was macht das für einen Sinn?

    Ein Server sollte einen festen Port haben,
    ein Client lässt sich schlicht vom OS einen freien Port wählen.
     
Thema:

Port generieren, wenn nicht dann

Die Seite wird geladen...

Port generieren, wenn nicht dann - Ähnliche Themen

  1. Nessus Report "on the fly" generieren?

    Nessus Report "on the fly" generieren?: Guten Morgen :) *auf die uhr schiel* Es ist ja leider so das Nessus die Reporte imemr erst am Ende Rausgibt ( Wenn alle gescannten Hosts durch...
  2. Portfolio-Software Mahara 16.04 veröffentlicht

    Portfolio-Software Mahara 16.04 veröffentlicht: Das Mahara-Entwickler-Team hat seine freie e-Portfolio-Software in der Version 16.04 frei gegeben. Mahara wird häufig von Lernenden im E-Learning...
  3. Deutschsprachiger Langzeit-Support für LibreOffice von CIB

    Deutschsprachiger Langzeit-Support für LibreOffice von CIB: Benutzer, die LibreOffice einsetzen und dafür professionellen Support in Anspruch nehmen wollen, haben mit der Firma CIB software GmbH nun eine...
  4. Deutschsprachiger Langzeit-Support für LibreOffice von CIB

    Deutschsprachiger Langzeit-Support für LibreOffice von CIB: Benutzer, die LibreOffice einsetzen und dafür professionellen Support in Anspruch nehmen wollen, haben mit der Firma CIB software GmbH nun eine...
  5. Credativ startet Support für EnterpriseDB

    Credativ startet Support für EnterpriseDB: Das Open Source-Beratungsunternehmen Credativ bietet Kunden nun auch Support für EnterpriseDB an, ein auf PostgreSQL beruhendes Datenbanksystem...