{"id":2035,"date":"2020-01-17T23:25:19","date_gmt":"2020-01-17T22:25:19","guid":{"rendered":"https:\/\/www.linuxboxen.dk\/?page_id=2035"},"modified":"2020-01-17T23:25:19","modified_gmt":"2020-01-17T22:25:19","slug":"openssh-server-sikkerhedspraksis","status":"publish","type":"page","link":"https:\/\/www.linuxboxen.dk\/?page_id=2035","title":{"rendered":"OpenSSH Server Sikkerhedspraksis"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/uploads\/2020\/01\/openssh.png\" alt=\"\" width=\"427\" height=\"141\" \/><\/p>\n<p>OpenSSH er en sikker m\u00e5de at tilg\u00e5 serveren remove. Bruges til remove login,fil overf\u00f8rsel med scp eller sftp, p\u00e5 en sikker m\u00e5de. Men der er altid plads til forbedring. Det er det jeg vil komme ind p\u00e5 i denne artikel. 16 check som g\u00f8r din SSH mere sikker.<\/p>\n<p>Her er en terminal p\u00e5 windows til en linux server.<\/p>\n<p><center><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/uploads\/2020\/01\/windows_shell.png\" alt=\"\" width=\"590\" height=\"365\" \/><\/center><\/p>\n<h2>OpenSSH.<\/h2>\n<ul>\n<li>TCP port 22<br \/>Server config fil er gemt. (\/etc\/ssh\/sshd_config)<\/li>\n<li>klient config fil er gemt. (\/etc\/ssh\/ssh_config)<\/li>\n<\/ul>\n<h2>1. Brug SSH public n\u00f8gle som login.<\/h2>\n<p>Med OpenSSH server kan man bruge flere typer at adgangskontrol. Den anbefalede metode er brug af public n\u00f8gle login. For at kunne g\u00f8re det kr\u00e6ver det du har en din egen n\u00f8gle p\u00e5 din pc&#8217;er. For at oprette en skal man bruge programmet ssh-keygen p\u00e5 linux. Man kan ogs\u00e5 bruge putty programmet til windows. Men jeg viser det p\u00e5 Linux her.<\/p>\n<p>DSA og RSA 1024 eller lavere skal man ikke bruge. S\u00e5 heller bruge RSA n\u00f8gler.<\/p>\n<pre>$ ssh-keygen -t n\u00f8gle_type -b antal bits -C \"kommentar\"\n$ ssh-keygen -t ed25519 -C \"Login til cluster\"\n$ ssh-keygen -t rsa -b 4096 -f ~\/.ssh\/id_rsa_aws_$(date +%Y-%m-%d) -C \"AWS key\"<\/pre>\n<p>N\u00e5r du har oprettet n\u00f8glerne, skal du copy dem til serveren f\u00f8r du kan bruge dem. Det har OpenSSH ogs\u00e5 en l\u00f8sning p\u00e5 med kommandoen ssh-copy-id.<\/p>\n<pre>$ ssh-copy-id bruger@server_navn_eller_ip_adressse\n$ ssh-copy-id -i path_til_public_n\u00f8gle_fil bruger@server_navn_eller_ip_adressse<\/pre>\n<p>Den vil derefter sp\u00f8rge om password som du taster ind. Og s\u00e5 sker der magi. Den installere selv din n\u00f8gle p\u00e5 serveren, s\u00e5 den er klar til at man kan login uden at oplyse kodeord.<\/p>\n<p>Du kan nu teste om du kan login med ssh.<\/p>\n<pre>$ ssh bruger@server_navn_eller_ip_adressse\n$ ssh -p 2222 bruger@server_navn_eller_ip_adressse<\/pre>\n<h2>2. Disable root bruger login p\u00e5 serveren.<\/h2>\n<p>F\u00f8r vi fjerner root login adgang er det en god ide lige af checke om den bruger man normal bruger kan bruge sudo. For at tilf\u00f8je en bruger til sudo gruppen skriver du. Og checker med id kommandoen.<\/p>\n<pre>$ <a href=\"https:\/\/www.linuxboxen.dk\/hvordan-bruger-man-sudo-og-su-i-linux-shell\/\">sudo<\/a> adduser bruger sudo\n$ <a href=\"https:\/\/www.linuxboxen.dk\/id\/\">id<\/a> bruger<\/pre>\n<p>test nu at du kan sudo med<\/p>\n<pre>$ sudo -i\n$ sudo service sshd status\n$ sudo systemctl status httpd<\/pre>\n<p>N\u00e5r det spiller skal vi fjerne root login fra sshd. Du skal tilf\u00f8je disse linjer til\u00a0 \/etc\/ssh\/sshd_config filen.<\/p>\n<p><em>PermitRootLogin no <\/em><br \/><em>ChallengeResponseAuthentication no<\/em><br \/><em>PasswordAuthentication no<\/em><br \/><em>UsePAM no<\/em><\/p>\n<h2>3. Fjern password login p\u00e5 serveren.<\/h2>\n<p>Alle kodeord baseret login skal disables. S\u00e5 man kun kan login med keys. Tilf\u00f8j f\u00f8lgende i konfig filen: \/etc\/ssh\/ssh_config<\/p>\n<p><em>AuthenticationMethods publickey<\/em><br \/><em>PubkeyAuthentication yes<\/em><br \/><em>Older version of SSHD on CentOS 6.x\/RHEL 6.x user should use the following setting:<\/em><br \/><em>PubkeyAuthentication yes<\/em><\/p>\n<h2>4. Fjern brugers ssh adgang.<\/h2>\n<p>Default kan alle bruger login med ssh med kode ord eller public ssh n\u00f8gle. Nogle gange har du brug for ftp bruger som ikke m\u00e5 login med ssh. S\u00e5 der er en mulighed for at fort\u00e6lle ssh serveren hvilken brugere som m\u00e5 login. Det g\u00f8r du med at tilf\u00f8je til sshd konfig filen.<\/p>\n<p><em>AllowUsers bruger1 bruger2<\/em><\/p>\n<p>Eller modsat fjerne adgang med.<\/p>\n<p><em>DenyUsers root<\/em><\/p>\n<p>Der er ogs\u00e5 mulighed for at bruge Linux PAM til at konfigurere bruger adgang.<\/p>\n<h2>5. Disable tomme kodeord.<\/h2>\n<p>Du skal igen fort\u00e6lle sshd at man skal bruge kodeord med denne\u00a0 linje i config filen.<\/p>\n<p><em>PermitEmptyPasswords no<\/em><\/p>\n<h2>6. Brug st\u00e6rke kodeord.<\/h2>\n<p>Det kan ikke understreges nok, hvor vigtigt det er at bruge st\u00e6rke brugeradgangskoder og adgangskode til dine n\u00f8gler. Brute force-angreb fungerer, fordi brugeren g\u00e5r til ordbogsbaserede adgangskoder. Du kan tvinge brugere til at undg\u00e5 adgangskoder mod et ordbogangreb og bruge john ripper-v\u00e6rkt\u00f8jet eller hashcat som du kan l\u00e6se om <a href=\"https:\/\/www.linuxboxen.dk\/hashcat\/\">her<\/a> til at finde ud af eksisterende svage adgangskoder. Her er en tilf\u00e6ldig adgangskodegenerator som du kan placere i din ~\/.bashrc fil. s\u00e5 kan du bare skrive genpasswd.<\/p>\n<pre>genpasswd() {\n\tlocal l=$1\n       \t[ \"$l\" == \"\" ] &amp;&amp; l=20\n      \ttr -dc A-Za-z0-9_ &lt; \/dev\/urandom | head -c ${l} | xargs\n}<\/pre>\n<p>$ genpasswd<br \/>uw8CnDVMwC6vOKgW<\/p>\n<h2>7. Firewall og SSH.<\/h2>\n<p>Du skal opdatere din firewall og \u00e5bne for den port som du bruger som normal er port 22 TCP.<\/p>\n<pre>$ sudo iptables -I INPUT -p tcp -s ip_adresse --dport 22 -j ACCEPT<\/pre>\n<p>Eller hvis du bruger ufw.<\/p>\n<pre>$ sudo ufw allow from 202.54.1.5\/29 to any port 22<\/pre>\n<h2>8. \u00c6ndre hvilken ip adresse og port som ssh serveren lytter p\u00e5<\/h2>\n<p>Default lytter SSH serveren p\u00e5 alle interfaces den kan finde. Dette kan \u00e6ndres ved at rette sshd_config filen. Men disse parametre.<\/p>\n<pre>Port 300\nListenAddress 192.168.1.5\nListenAddress 202.54.1.5<\/pre>\n<h2>9. Brug TCP wrapper.<\/h2>\n<p>TCP wrapper er et host baseret system som filtere netv\u00e6rks adgang til internettet. Du skal bare opdatere <em>\/etc\/host.allow<\/em> filen som vist her.<\/p>\n<pre>sshd: 192.168.0.1 172.16.23.12<\/pre>\n<h2>10. Stop bruce force angreb mod serveren<\/h2>\n<p>For at stoppe disse typer af attack kan du installere nogle v\u00e6rkt\u00f8jer.<\/p>\n<ul>\n<li>Brug DenyHosts filen.<\/li>\n<li>fail2ban<\/li>\n<li>sshguard<\/li>\n<li>sshblock<\/li>\n<\/ul>\n<p>Du kan finde informationer om dem p\u00e5 internettet.<\/p>\n<h3>Iptables eksemple<\/h3>\n<p>Dette er et eksempel p\u00e5 hvordan man f\u00e5r iptables til at droppe forbindelsen hvis den laver mere en 5 forbindelser inden for 60 sekunder.<\/p>\n<pre>#!\/bin\/bash<\/pre>\n<p>IPT=iptables inet_if=eth0 ssh_port=22 $IPT -I INPUT -p tcp &#8211;dport ${ssh_port} -i ${inet_if} -m state &#8211;state NEW -m recent &#8211;set $IPT -I INPUT -p tcp &#8211;dport ${ssh_port} -i ${inet_if} -m state &#8211;state NEW -m recent &#8211;update &#8211;seconds 60 &#8211;hitcount 5 -j DROP<\/p>\n<pre>\u00a0<\/pre>\n<p>Call dette script fra dit iptable start script.<\/p>\n<p>En anden mulighed er:<\/p>\n<p>$IPT -A INPUT -i ${inet_if} -p tcp &#8211;dport ${ssh_port} -m state &#8211;state NEW -m limit &#8211;limit 3\/min &#8211;limit-burst 3 -j ACCEPT <br \/>$IPT -A INPUT -i ${inet_if} -p tcp &#8211;dport ${ssh_port} -m state &#8211;state ESTABLISHED -j ACCEPT <br \/>$IPT -A OUTPUT -o ${inet_if} -p tcp &#8211;sport ${ssh_port} -m state &#8211;state ESTABLISHED -j ACCEPT<\/p>\n<p># Eller denne her.<\/p>\n<p>$IPT -A INPUT -i ${inet_if} -m state &#8211;state NEW,ESTABLISHED,RELATED -p tcp &#8211;dport 22 -m limit &#8211;limit 5\/minute &#8211;limit-burst 5-j ACCEPT<\/p>\n<h2>11. Configure idle time f\u00f8r bruger bliver smit af<\/h2>\n<p>Du kan s\u00e6tte time out for brugere, s\u00e5 de ikke st\u00e5r og h\u00e6nger. Du retter igen i <em>Open sshd_config<\/em> Og inds\u00e6tter disse linjer hvis de ikke er der:<\/p>\n<p><code>ClientAliveInterval 300<br \/>ClientAliveCountMax 0<\/code><\/p>\n<p>Du s\u00e6tter idle tiden i sekunder. 300 sekunder = 5 minuter. Og bruger bliver smit af systemet hvis der ikke er noget aktivitet.<\/p>\n<h2>12. Lav en login banner til SSH bruger ved login<\/h2>\n<p>Du kan lave en banner\/warning besked til brugerne ved at tilf\u00f8je denne linje til sshd_config:<br \/><code>Banner \/etc\/issue<\/code><\/p>\n<p>Og en \/etc\/issue fil skal du ogs\u00e5 bruge.<\/p>\n<pre>----------------------------------------------------------------------------------------------\nYou are accessing a XYZ Government (XYZG) Information System (IS) that is provided for authorized use only.\nBy using this IS (which includes any device attached to this IS), you consent to the following conditions:\n+ The XYZG routinely intercepts and monitors communications on this IS for purposes including, but not limited to,\npenetration testing, COMSEC monitoring, network operations and defense, personnel misconduct (PM),\nlaw enforcement (LE), and counterintelligence (CI) investigations.\n+ At any time, the XYZG may inspect and seize data stored on this IS.\n+ Communications using, or data stored on, this IS are not private, are subject to routine monitoring,\ninterception, and search, and may be disclosed or used for any XYZG authorized purpose.\n+ This IS includes security measures (e.g., authentication and access controls) to protect XYZG interests--not\nfor your personal benefit or privacy.\n----------------------------------------------------------------------------------------------\n<\/pre>\n<h2>\u00a0<\/h2>\n<h2>13. Disable .rhosts filer (check)<\/h2>\n<p>Lad v\u00e6re med at l\u00e6se brugers ~\/.rhosts og ~\/.shosts fil. Du skal opdatere <em>sshd_config<\/em> med denne linje:<br \/><code>IgnoreRhosts yes<\/code><\/p>\n<h2>14. For at stoppe host based login skal du checke denne s\u00e6tting (check)<\/h2>\n<p><code>HostbasedAuthentication no<\/code><\/p>\n<h2>15. Chroot OpenSSH (L\u00e5s brugere til deres hjemmebibliotek)<\/h2>\n<p>Default kan bruger flytte sig rundt p\u00e5 serveren som de er login p\u00e5 eks \/etc biblioteket Du kan beskytte med ssh ChrootDirectory.<\/p>\n<h2>16. Disable OpenSSH server p\u00e5 arbejdscomputere<\/h2>\n<p>Arbejds pc&#8217;er eller labtop skal ikke have SSH Server installeret, med mindre det skal bruges til noget udviklings maskine, hvor det er n\u00f8dvendigt for at arbejde.<\/p>\n<p><code><\/code><code>$ sudo apt-get remove openssh-server<\/code><\/p>\n<p>Du kan f\u00e5 en liste over cipher supported\u00a0 af din OpenSSH server med f\u00f8lgende kommando:<\/p>\n<pre>$ ssh -Q cipher\n$ ssh -Q cipher-auth\n$ ssh -Q mac\n$ ssh -Q kex\n$ ssh -Q key<br \/>\n$ ssh -Q cipher<br \/>3des-cbc<br \/>aes128-cbc<br \/>aes192-cbc<br \/>aes256-cbc<br \/>rijndael-cbc@lysator.liu.se<br \/>aes128-ctr<br \/>aes192-ctr<br \/>aes256-ctr<br \/>aes128-gcm@openssh.com<br \/>aes256-gcm@openssh.com<br \/>chacha20-poly1305@openssh.com\n<\/pre>\n<h2>Hvordan tester jeg sshd_config filen og genstarter\/reloader min SSH server?<\/h2>\n<p>Du kan teste sshd, med:<br \/><code>$ sudo sshd -t<\/code><br \/>Og en mere dybdeg\u00e5ende test:<br \/><code>$ sudo sshd -T<\/code><\/p>\n<h2>Genstart af ssh g\u00f8res med :<\/h2>\n<p><code>$ <a title=\"Restart sshd on a Debian\/Ubuntu Linux\" href=\"https:\/\/www.cyberciti.biz\/faq\/howto-start-stop-ssh-server\/\">sudo systemctl start ssh<\/a><br \/><\/code><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2035\" class=\"pvc_stats all  \" data-element-id=\"2035\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>OpenSSH er en sikker m\u00e5de at tilg\u00e5 serveren remove. Bruges til remove login,fil overf\u00f8rsel med scp eller sftp, p\u00e5 en sikker m\u00e5de. Men der er altid plads til forbedring. Det er det jeg vil komme ind p\u00e5 i denne artikel. 16 check som g\u00f8r din SSH mere sikker. Her er en terminal p\u00e5 windows til [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_2035\" class=\"pvc_stats all  \" data-element-id=\"2035\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/www.linuxboxen.dk\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"class_list":["post-2035","page","type-page","status-publish","hentry"],"a3_pvc":{"activated":true,"total_views":72,"today_views":0},"_links":{"self":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages\/2035","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2035"}],"version-history":[{"count":0,"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=\/wp\/v2\/pages\/2035\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.linuxboxen.dk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2035"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}