Výukový program o tomto velkolepém protokolu, který začal své dobrodružství v roce 1997, nabízející širokou škálu nástrojů, které vynikají svou bezpečností, je velmi rozsáhlý a rozdělím jej do několika záznamů, které se pokusí pokrýt to nejdůležitější na úrovni klienta i serveru.
Co je protokol Secure Shell?Secure Shell nebo SSH je síťový protokol, který umožňuje výměnu dat přes zabezpečený kanál mezi dvěma počítači. SSH používá šifrovací techniky, díky nimž jsou informace cestující komunikačním médiem nečitelné a žádná třetí osoba nemůže zjistit uživatelské jméno a heslo připojení nebo to, co je napsáno během celé relace. SSH používá kryptografii veřejného klíče k autentizaci vzdáleného počítače a v případě potřeby mu umožňuje autentizaci uživatele.
SSH se obvykle používá ke spuštění relace na vzdáleném počítači, kde můžete provádět příkazy, ale také umožňuje tunelování, libovolné přesměrování portů TCP a připojení X11; Přenosy souborů lze také provádět pomocí přidružených protokolů SFTP nebo SCP.
Vidíme, že jeho velkou atrakcí je jeho charakteristika více než dost na to, aby vytlačila starý protokol TELNET, kterému chybí šifrování informací, kompromitace dat, včetně přístupových údajů.
The Server SSH, ve výchozím nastavení nabízí port TCP 22. Klient SSH se obecně používá k navázání připojení k serveru sshd, který přijímá vzdálená připojení. Oba se běžně nacházejí ve většině moderních operačních systémů, včetně Mac, Linux, Solaris a OpenVMS.
Očekává se, že podpora Windows pro jeho serverovou verzi bude oficiálně vydána letos, zatímco na zákaznické úrovni nabízí širokou škálu možností, které zvýrazňují PuTTY nad ostatními.
Naučte se používat tmel
OpenSSHOpenSSH (Open Secure Shell) je sada aplikací, které umožňují šifrovanou komunikaci po síti pomocí protokolu SSH. Byl vytvořen jako bezplatná a otevřená alternativa k protokolu SSH, je nejpoužívanější pod Linuxem a bude to ten, který budeme používat v rámci všech záznamů.
1. Nainstalujte si Secure Shell SSH
Téměř ve všech distribucích je předinstalována jeho klientská verze, zatímco její serverová verze je k dispozici v úložišti, její instalace by měla být velmi jednoduchá.
Debian, Ubuntu, Linux Mint a deriváty
sudo apt-get install openssh-server
Centos, Rhel, Fedora
sudo yum nainstalovat openssh-server
Arch-Linux
pacman -Syu openssh
Ověřujeme, že běží:
curl localhost: 22V případě správného spuštění by se mělo vrátit:
[color = # 696969] [/Barva]
Připojení k serveru
Pomocí klienta se můžeme připojit k serveru, který může být vzdálený, i když máme obě verze pro interní připojení pomocí localhost.
Nejzákladnějším způsobem připojení by bylo:
ssh uživatel @ adresa hostiteleV případě interního připojení by to bylo:
ssh uživatel @ localhostPři připojování máme širokou škálu možností, vysvětlím některé velmi užitečné, všechny své možnosti můžete vypsat pomocí:
muž sshZde jim ukážeme:
Man SSH options
-CV případě, že jste v mobilní síti, požadujte kompresi dat, která šetří šířku pásma nebo data.
-lZadejte uživatele, se kterým se spojíme.
-AVytvořte soubor protokolu, kde se odchyluje standardní chyba.
-FVybíráme jiný konfigurační soubor užitečný pro servery s neobvyklými možnostmi.
-GVyžadováno pro tunelování portů.
-iVybereme složku, kterou použijeme pro alternativní soukromý klíč.
-KPovolit při použití přihlašovacích údajů GSSAPI.
-nPři použití ve spojení s X11 tímto způsobem bude veškerý protokol generovaný aplikací přesměrován na / dev / null.
-neboVyžaduje použití pokročilejších možností, jako je ServerAliveInterval 30.
-pPro připojení k hostiteli vyberte jiný port než 22.
-protiUkazuje všechny kroky nutné k navázání spojení.Více informací získáte s -vv -vvv.
-XNezbytné, pokud chceme použít X11 Forwarding.
-YUmožňuje zabezpečené přesměrování X11.
Připojíme se k serveru test.solvetic.com s uživatelem jcarrillo pomocí jiného soukromého klíče umístěného ve složce / home / jcarrillo / keys-aws pomocí portu 8022 naší instance na AWS.
Příklad → ssh -C -i „~ / keys -aws /“ -p 8022 -l jcarrillo test.solvetic.comJak vidíme, je to rozsáhlý, ale velmi kompletní nástroj, který si zaslouží více záznamů, aby mohl pokrýt své potřebné funkce pro jakýkoli Sysadmin střední nebo profesionální úrovně.
Nyní přejdeme k jeho konfiguraci na úrovni klient-server, generování veřejných a soukromých klíčů, použití přesměrování portů v reálných situacích, přesměrování serveru X Server přes X11 Forwarding, použití scp, sftp, ssh-agent mimo jiné .
2. Zabezpečte server SSH
Pokračujeme s OpenSSH se zaměřením na zabezpečení našeho SSH serveru, abychom se vyhnuli všem typům útoků, které by mohly ohrozit náš Server. Všechny tyto konfigurace budou provedeny v souboru sshd_config umístěném v / etc / ssh /, který můžeme v mém případě použít libovolným textovým editorem vim:
sudo vim / etc / ssh / sshd_configNyní vidíme, jak jej upravit.
Upravit sshd_config
Uvnitř uvidíme typický konfigurační soubor na základě "Možnost hodnoty" Pokud některá z možností není ve výchozím nastavení nalezena, musíme řádek umístit úplně, v ostatních případech to bude pouze změna z 0 na 1 z Ne na Ano nebo odkomentování řádku.
Upravit port 22
Je zásadní změňte výchozí port na náhodný mnoho skriptů je nakonfigurováno k útoku na tento port, doporučujeme jej změnit v souboru v rozmezí od 1000 do 23 000 zajistit, aby port nebyl používán jinou službou.
Také bychom neměli používat porty jako 2222, 8022 nebo 1022, jsou stejně běžné jako 22 a mnoho skriptů je nakonfigurováno tak, aby na ně zaútočilo.
port 2345
Pokud máme SELINUX povoleno musíme použít další příkaz umožňující přístup zvenčí k novému portu.
Semanage port -a -t ssh_port_t -p tcp 2345 #Changing port 22 for Security
Použít výchozí protokol 2
Musíme zajistit, aby všechna naše připojení byla provedena podle protokolu 2, protože 1 má mnoho zranitelností.
Protokol 2
Čas na zadání přihlašovacích údajů
Sekce hledání "Ověření". Důležité jsou také vaše první dvě možnosti. První je počet sekund, po které se vzdálený uživatel bude muset přihlásit k vašemu počítači. Nastavte tuto hodnotu na několik sekund, pokud známe účet a heslo, přihlášení netrvá dlouho.
Tímto způsobem se vyhneme určitým skriptům, které využívají čas. Typická hodnota z hlediska zabezpečení je 30, i když to může být ještě méně.
PřihlášeníGraceTime 30
Zakázat přístup root
Tento Je to nejdůležitější možnost být obětí útoku, potřebují 3 věci:
- Uživatel
- přístav
- Heslo
Pokud root zakážeme, již ho mají, protože root je běžným uživatelem na všech systémech. Kromě toho může tento uživatel způsobit zmatek tím, že má všechna oprávnění povolena.
PermitRootLogin č
Povolit řízený přístup
Můžeme určit, který uživatel se může přihlásit pomocí SSH, a dokonce umístit klauzuli pro připojení pouze z určité IP. To je podobné tomu, co AWS nabízí, aby nás propojilo s vašimi instancemi.
AllowUsers [email protected]
Je důležité umožnit přístup pouze uživatelům, kteří potřebují vzdálený přístup, a pokud je to možné, omezit je na známou IP.
Konfigurujte počet neúspěšných pokusů
Pokud zadáme heslo špatně, server nám poskytne několik pokusů o jeho opětovné zadání, musí to být omezeno nebo se můžete stát obětí skriptu hrubé síly, můžeme jej zadat 2 nebo 3krát.
MaxAuthTries 2
Počet současně povolených připojení
To se může lišit v závislosti na tom, jak server používáte, ale ideální je mít jej pod kontrolou, stačí přidat celkový počet uživatelů povolených SSH.
MaxStartups X
Po provedení všech změn v našem souboru musíme restartujte naši službu sshd, Může se lišit v závislosti na správci služeb.
SystemD
systemctl restart sshd
Upstart / Sysinit
restart služby sshd
Všechny tyto změny přidávají a extra úroveň zabezpečení ale musíme mít na paměti:
- Používejte alfanumerická hesla.
- Použití Ověřování pomocí veřejných / soukromých klíčů když je to možné.
- Doplňte zabezpečení o SELINUX a firewally.
- Ovládejte přístup, ke kterému se uživatelé musí vzdáleně přihlašovat.
Ověřte veřejné / soukromé klíče SSH
Aktuálně používáno SSH klíče Je to nepostradatelný požadavek, toto ověřování je široce používáno správci k automatizaci úkolů mezi různými servery a je dokonce používáno vývojáři pro přístup k SCM, jako je GIT, GITHUB, GITLAB a další.
Nabízí skvělé zabezpečení a možnost vytvářet automatické úkoly na bázi skriptů jako Zadní nebo Replikovat změny na více uzlů současně.
Při použití klíče SSH (veřejné a soukromé), mohou se snadno připojit k jednomu serveru nebo více serverům, aniž by museli pokaždé zadávat heslo. Je možné konfigurovat vaše klíče bez přístupového hesla, ale to by bylo bezohledné, kdyby někdo váš klíč získal, mohl by ho použít. Budeme hovořit o tom, jak generovat klíče, distribuovat je a používat ssh-agent k získání vyššího zabezpečení.
Generování klíčů bez přístupové fráze
Nejprve se ujistěte, že máte nainstalovaný OpenSSH, není to nutné, server pouze klient.
Začneme generováním klíče typu DSA s 1024 bitovým zabezpečením, což je více než dost, i když můžete jít dále a vygenerovat klíč typu RSA s limitem 4096.
ssh -keygen -b 1024 -t dsaPožádá nás o umístění, kam uloží výchozí klíče ~ / .ssh
Zadejte soubor, do kterého chcete klíč uložit (/home/test/.ssh/id_dsa)Poté požádá o frázi, prozatím žádnou nepoužijeme, ponecháme ji prázdnou a řekne nám, že klíč byl vytvořen, a odráží nás.
Obrázek bude vždy jiný, je generován náhodně, pak pokud přejdeme do složky .ssh, musíme mít 2 soubory
id_dsa -----> Soukromý klíč (Nesdílejte ho s nikým, je jako váš TDC).
id_dsa.pub ----> Je to ten, který sdílíme, abychom se připojili.
Sdílet veřejný klíč
V případě, že chceme veřejný klíč sdílet v SCM nebo Chef, Puppet, Jenkins, soubor veřejného klíče vizualizujeme, zkopírujeme a vložíme tam, kde odpovídá.
více id_dsa.pub SSH-DSS AAAAB3NzaC1kc3MAAACBAN6SEI4Qqzb23pJYRXIAtPmGJHln5hFdthFq43ef + ifR29v2IknXCFwefKK8jorSDiUEY / 1F / yp0xao mjhFQu1jNXOgF0PAZTfivRVFn6Q9FRsyXU9s + fx + + L22sV7GkCHPxAAAAFQCyF1Gdh3 xQiW3mf3y4IX654O82SLGl7Vhh5UsvG8r8d8pV6R Cap4xr / J44xDDn 0gFArHmFwAxfQAAAIEAmVYjPYAdQ9DCNWP + + + 03anWgyoZqSPPs23djyVQ756U4VitM0GiIQQ89HCdvTFFpSagnfdVpWh4 Hxo4Y5skKihnPMtB bFNbP / 2SmGdPz1AOmb7tvRrTkj5VLtXeDeB3ulowUKarwiBVVvAvxtxmozoZHOADWqrEPizxIAAACAU2DF1ZGTiJMP OhVB7mlsVhhkq53OxKKJbZqsl9hkOiSxaLUfQBNu6Ae441ekIObqolWNCBIvCO3uQYOozyzNGBhqHE7FVq 1oXguj + + + 2GAQ UGNkee96D2by S7daieIKNmFer2hO / SBxzepMrWAiIUnUsP5irmYspkjGlQxP + vx š = test @ solveticV případě, že jej chcete sdílet pro přístup na server, vždy doporučuji použít ssh-copy-id, který je součástí OpenSSH a jeho použití je velmi snadné:
ssh-copy-id user @ remote-server-ip -i určuje umístění klíče, který se má použít.Existují i jiné způsoby, jako například:
ssh uživatel @ vzdálený server-ip \ 'kočka >> .ssh / authorized_keys2' <.ssh / id_dsa.pub
scp ~ / .ssh / id_dsa.pub uživatel @ remote-server-ipOd této chvíle jsou klíče připojeny a stačí zadat hostitele.
ssh -l uživatel vzdálený server-ipTentokrát nebude vyžadovat žádné heslo a můžeme používat skripty bez interakce.
Vygenerujte přístupovou frázi a přidružte se k agentu ssh
The Zabezpečení SSH klíčem Je založen na našem soukromém klíči, který funguje jako přístupová karta, ale pokud nám někdo ukradne klíč, bude mít přístup ke všem místům, kam máme přístup. Ale při generování přístupové fráze můžeme mít další úroveň, nejen že je klíč nezbytný, ale nemusíme ani představovat naši frázi.
Tentokrát vytvoříme klíč rsa s větším zabezpečením konfigurací fráze.
ssh -keygen -b 4096 -t rsa -C "Klíč s přístupovou frází" # -C Přidat komentář.Jako fráze můžeme použít mezery, tečky a speciální znaky
příklad ---> Toto je můj nový klíč s Fr @ S3.Sdílíme nový klíč:
scp ~ / .ssh / id_rsa.pub uživatel @ remote-server-ipTentokrát potřebujeme klíč a přístupovou frázi, ale několikanásobné zadávání je únavné, ale můžeme jej doplnit agentem ssh, musíme jej spustit.
ssh-agentPřidáme náš klíč
ssh-add Zadejte heslo pro /home/user/.ssh/id_rsa: # Zadáme frázi, kterou jsme nakonfigurovali.Nyní se můžeme připojit k jakémukoli serveru, který používá náš klíč, aniž bychom museli zadávat náš heslo.
Tuto metodu doporučuji, pokud se nacházíte mimo intranet, klienta a server v různých bodech na internetu a nebudeme používat automatické úlohy, ale spíše se připojíme k serveru pro účely vzdálené správy, nejlepší je zadat heslo nebo velmi dlouhé přístupové fráze (15 a více znaků, velká písmena, malá písmena, číslice a symboly) do veřejného klíče.
Tudy bude prakticky nemožné být hacknut touto metodou, protože hacker nejen že bude muset znát heslo, ale také bude muset mít na serveru platný veřejný certifikát, aby mohl být ověřen. (Samozřejmě za předpokladu, že server nebyl nikdy ohrožen a je zcela aktuální a s nejlepším možným zabezpečením).
Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod