Někteří lidé si myslí, že to není nebezpečné, pokud na serveru neběží žádné služby, a nezáleží na tom, že všechny porty jsou otevřené. Nesouhlasím. Pokud jsou připojení k nepoužívaným (a oblíbeným) portům zablokována nebo přerušena, pak se velká většina zlomyslných vetřelců přesune na jiný počítač, kde porty přijímají připojení. Nastavení firewallu zabere jen několik minut – proto důrazně doporučujeme, abyste tak chránili svůj server.
Po vytvoření nového cloudového serveru vám doporučujeme provést následující úkoly, abyste zvýšili zabezpečení serveru.
Poznámka: Pokud používáte jinou distribuci, mohou být nutné malé úpravy následujících příkazů. V případě potřeby nahlédněte do dokumentace k operačnímu systému.
Přihlaste se na server
Jakmile budete mít IP adresu a heslo svého serveru, přihlaste se pomocí následujícího příkazu SSH:
ssh [email protected]
Poznámka :Pokud se přihlašujete k přestavěnému serveru, může se vám zobrazit zpráva, že se změnila identifikace vzdáleného hostitele. Když přebudujete cloudový server, změní se klíč vzdáleného hostitele, což indikuje neobvyklou nebo podezřelou aktivitu na vašem počítači. Chcete-li se tomuto problému vyhnout, odeberte starší položku pro adresu IP serveru. Na vašem místním počítači, upravte SSH known_hosts
soubor pomocí následujícího příkazu a odstraňte všechny položky, které ukazují na IP adresu vašeho cloudového serveru:
nano ~/.ssh/known_hosts
Pokud váš místní počítač používá jiný operační systém než Linux nebo Mac OS X, umístění known_hosts
soubor se bude lišit. Informace o umístění tohoto souboru naleznete v dokumentaci k operačnímu systému.
Změňte heslo uživatele root
Po přihlášení k serveru změňte heslo uživatele root zadáním následujícího příkazu:
passwd
Přidat uživatele s oprávněním správce
Poznámka :Pokud nastavujete další uživatele SSH pro server OnMetal, přečtěte si příslušné kroky OnMetal v části Vytvoření cloudových serverů OnMetal.
-
Chcete-li přidat uživatele správce, zadejte následující příkaz a nahraďtedemo s uživatelským jménem dle vašeho výběru:
adduser demo
Poznámka :Po tomto úvodním kroku byste se neměli přihlašovat jako uživatel root, abyste mohli provádět každodenní operace na vašem serveru. K dokončení těchto administrativních úkolů však budete potřebovat oprávnění Super User (sudo).
-
Chcete-li přiřadit oprávnění sudo uživateli admin, zadejte následující příkaz, který v operačním systému Ubuntu standardně vyvolá editor nano:
visudo
-
Na konec souboru přidejte své uživatelské jméno správce (v následujícím příkladu místo demoin) a následující textový řetězec:
demo ALL=(ALL) ALL
-
Po dokončení přidávání tohoto řádku ukončete, potvrďte a uložte soubor následovně:
A. Stiskněte Ctrl-X vystoupit.b. Stiskněte y pro potvrzení změn.c. Stiskněte Enter uložit soubor jako
/etc/sudoers.tmp
.Poznámka :Při práci v nano editoru funguje backspace/deletekey neočekávaně a maže znaky před kurzorem spíše než za ním. Tento problém můžete vyřešit úpravou souboru
/etc/nanorc
soubor (například s nano) a buď odkomentování následujícího řádku, nebo jeho přidání:set rebinddelete
Nové chování se projeví po uložení souboru a opětovném otevření nano.
Nastavení veřejných a soukromých klíčů (SSH keygen)
Jedním z účinných způsobů zabezpečení přístupu SSH k vašemu cloudovému serveru je použití veřejného/soukromého klíč, což znamená, že veřejný klíč je umístěn na serveru a soukromý klíč je na vašem místním počítači. To znemožňuje, aby se někdo přihlásil pouze pomocí hesla; musí mít soukromý klíč. Toto nastavení se skládá z následujících základních kroků:vytvořte klíč na místním počítači, zkopírujte veřejný klíč na server a nastavte správná oprávnění pro klíč.
Následující pokyny předpokládají, že používáte Linux nebo Mac OS X. Pokyny pro Windows viz Generování klíčů pomocí Putty pro Windows.
Krok 1. Vytvořte veřejný a soukromý klíč
-
V místním počítači vytvořte složku, do které budou uloženy vaše klíče:
mkdir ~/.ssh
-
Chcete-li vytvořit klíče SSH, v místním prostředí počítači, zadejte následující příkaz:
ssh-keygen -t rsa
-
Soubory id_rsa a id_rsa.pub jsou vytvořeny v adresáři .ssh. Soubor rsa.pub obsahuje veřejný klíč. Tento soubor umístíte na svůj server.
-
Soubor id_rsa je váš soukromý klíč. Tento soubor nikdy neukazujte, nerozdávejte ani neuchovávejte na veřejném počítači.
-
Krok 2. Zkopírujte veřejný klíč
Můžete použít scp
příkaz k umístění veřejného klíče na váš server.
-
Zatímco jste stále v místním prostředí počítači, zadejte následující příkaz a nahraďte demo, IP adresu a domovský adresář administrátora vaším administrátorem:
scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
-
Po zobrazení výzvy zadejte uživatelské heslo správce.
-
Vytvořte adresář v domovské složce uživatele admin na vašem serveru s názvem .ssh a přesuňte do něj klíč pub, jak je znázorněno v následujících příkladech:
mkdir /home/demo/.ssh mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
Krok 3. Úprava oprávnění SSH
Nastavte správná oprávnění na klíči pomocí následujících příkazů a změňte „demo“ uživatele a skupinu na svého administrátora a skupinu:
chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys
Nyní jste úspěšně vytvořili klíč na místním počítači, zkopírovali veřejný klíč na server a nastavili pro klíč správná oprávnění.
Upravit konfiguraci SSH
Udržování služby SSH na výchozím portu 22 z ní dělá snadný cíl. Doporučujeme změnit výchozí konfiguraci SSH, aby byla bezpečnější.
-
Zadejte následující příkaz:
nano /etc/ssh/sshd_config
-
Změňte výchozí port 22 na jeden z vašich vybraných, vypněte rootlogy a definujte, kteří uživatelé se mohou přihlásit:
Port 22 <--- change to a port of your choosing Protocol 2 PermitRootLogin no PasswordAuthentication no UseDNS no AllowUsers demo
Poznámka :Číslo portu může být libovolné celé číslo od 1025 do 65536. Nezapomeňte si poznamenat nové číslo portu a pamatujte na to, abyste předešli konfliktům portů, pokud budete později konfigurovat další procesy naslouchání.
Protože jste nastavili veřejný/soukromý klíč, můžete parametr PasswordAuthentication nastavit na no. Pokud však máte v úmyslu přistupovat k vašemu serveru z různých počítačů, možná budete chtít ponechat PasswordAuthentication nastavenou na ano. Soukromý klíč používejte pouze v případě, že je místní počítač zabezpečený (tj. nevkládejte soukromý klíč na pracovní počítač).
Tato nastavení zatím nejsou povolena. Před restartováním SSH pomocí nového portu musíte vytvořit jednoduchý firewall pomocí iptables.
Poznámka :Ještě nerestartujte SSH.
Nastavte soukromý firewall pomocí iptables
Nástroj s názvem iptables je výchozí firewall pro systémy Linux. Funguje tak, že odmítá připojení k portům nebo službám, které určíte.
Poznámka: Postup v této části se nevztahuje na servery, které používají systemd
. Servery, které používají systemd
nyní použijte jiný firewall pro iptables s názvem FirewallD. Syntaxe a implementace pro FirewallD se velmi liší. Pro správnou konfiguraci firewallu na FirewallDand systemd
servery, viz „Úvod do firewalld“ na portálu Red Hatcustomer.
V rámci tohoto postupu otevřete tři porty:ssh , http a https.
Poté vytvoříte dva soubory:
-
/
etc/iptables.test.rules
-
/etc/iptables.up.rules
První je sada dočasných testovacích pravidel a druhá je stálá sada pravidel, které budou používat iptables.
Poznámka :K dokončení postupu musíte mít oprávnění uživatele root. Pokud aktuálně nejste přihlášeni jako root, použijte příkaz sudo před následujícími příkazy.
-
Chcete-li zjistit, jaké procesy aktuálně běží, zadejte následující příkaz:
iptables -L
Uvidíte něco podobného tomuto:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
To znamená, že server přijímá cokoli od kohokoli na jakémkoli portu.
-
Chcete-li sestavit firewall, vytvořte soubor
/etc/iptables.test.rules
a přidat nějaká pravidla. Pokud jste tyto kroky provedli dříve, tento soubor nemusí být prázdný:nano /etc/iptables.test.rules
-
Podle potřeby změňte a přidejte porty.
-
Chcete-li použít pravidla na váš server, zadejte následující příkaz:
iptables-restore < /etc/iptables.test.rules
-
Chcete-li si povšimnout jakýchkoli rozdílů, zadejte následující příkaz:
iptables -L
-
Pokud nedojde k žádné změně ve výstupu, opakujte předchozí kroky a zkuste to znovu.
-
Zkontrolujte pravidla a zjistěte, co přesně je přijímáno, odmítáno a zahazováno. Až budete s pravidly spokojeni, uložte je natrvalo zadáním následujícího příkazu:
iptables-save > /etc/iptables.up.rules
Poznámka :Pokud je server restartován před uložením pravidel natrvalo, změny se ztratí a server se vrátí k předchozímu nastavení.
-
Přidejte skript, který systém spustí při spuštění síťových rozhraní. Vytvořte soubor spuštěním:
nano /etc/network/if-pre-up.d/iptables
-
Přidejte do nového souboru následující řádky:
#!/bin/sh /sbin/iptables-restore < /etc/iptables.up.rules
-
Uložte změny a poté vytvořte spustitelný nový skript:
chmod +x /etc/network/if-pre-up.d/iptables
Nastavení iptables v Red Hat
Pokud používáte distribuci Red Hat, iptables funguje trochu jinak než v operačním systému Ubuntu. Pomocí následujících příkazů můžete změnit sadu pravidel iptables přímo z příkazového řádku.
HTTP – port 80
Pro RHEL 7 a CentOS 7 použijte následující příkaz k otevření portu 80 pro HTTP (web) provoz ve vašem iptables firewallu:
sudo firewall-cmd --add-service=http --permanent
Pro starší verze OS použijte následující příkaz:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT
HTTPS/SSL – port 443
Pro RHEL 7 a CentOS 7 použijte k otevření portu 443 pro zabezpečený HTTP provoz následující příkaz:
sudo firewall-cmd --add-service=https --permanent
Pro starší verze OS použijte následující příkaz:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT
SSH – port 22
Ačkoli je port 22 ve výchozím nastavení otevřený, aby vám umožnil SSH na váš server po jeho vytvoření, následující příkaz vám ukáže, jak byste otevřeli port 22 v RHEL 7 a CentOS 7:
sudo firewall-cmd --add-service=ssh -permanent
Pokud nastavíte vlastní port pro SSH, použijte pro RHEL7 a CentOS 7 následující příkaz:
sudo firewall-cmd --add-port=<customport>/tcp --permanent
U starších verzí OS použijte k otevření portu 22 následující příkaz:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT
FTP – port 21
FTP je běžná služba pro přenos souborů, ale je z velké části zastaralá, protože nejde o bezpečný protokol. Důrazně doporučujeme místo toho používat zabezpečený protokol pro přenos souborů, jako je SFTP. Pokud absolutně musíte použít FTP, použijte následující příkaz k otevření výchozího portu 21 v RHEL 7 a CentOS 7:
sudo firewall-cmd --add-service=ftp --permanent
Pro starší verze OS použijte následující příkazy:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT
MySQL – port 3306
Pokud potřebujete vytvořit vzdálené připojení k databázi MySQL z jiného serveru, musíte otevřít port 3306 v iptables. Pro RHEL 7 a CentOS 7 použijte následující příkaz:
sudo firewall-cmd --add-service=mysql --permanent
Pro starší verze OS použijte následující příkaz:
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT
Uložte pravidla
Pomocí následujícího příkazu uložte všechna pravidla, která jste vytvořili. Pokud se neuloží před restartováním serveru, sada pravidel iptables se vrátí na výchozí sadu pravidel a zablokuje veškerý provoz kromě portu 22. Pokud používáte RHEL 7 nebo CentOS 7, tento krok není nutný.
sudo /sbin/service iptables save
Restartujte iptables
Vaše změny v iptables se projeví až poté, co uložíte pravidla a restartujete službu iptables. Pamatujte, že pokud restartujete iptables před uložením pravidel, iptables se vrátí na výchozí sadu pravidel.
Pro RHEL 7 a CentOS 7 použijte následující příkaz:
firewall-cmd --reload
Pro starší verze OS použijte následující příkaz:
sudo /sbin/service iptables restart
Kontrola pravidel
Chcete-li zkontrolovat pravidla po opětovném načtení brány firewall v RHEL 7 a CentOS 7, použijte následující příkazy:
firewall-cmd --get-active-zones
Tím se vrátí, která zóna je aktivní (ta, do které jste právě uložili všechna svá pravidla).
firewall-cmd --zone=<zone> --list-all
Zde je uveden seznam povolených služeb v určené zóně.
Restartujte ssh
Nyní můžete restartovat službu SSH. Po dobu restartush zůstaňte přihlášeni a otestujte jej s novým připojením. Pokud tak dojde k chybě, můžete ji snáze odstranit.
Na většině distribucí je služba sshd a restartujete ji příkazem:
sudo service sshd restart
V operačním systému Ubuntu a některých dalších distribucích se služba nazývá ssh a restartujete ji podobným příkazem:
sudo service ssh restart
Pokud máte po restartu SSH potíže s navázáním nového připojení, zkontrolujte příznaky, abyste zjistili, co může být špatně.
- Pokud vyprší časový limit připojení, může být problém s konfigurací iptables.
- Pokud se zobrazí varování o soukromém klíči, je možné, že váš klíč není správně nainstalován na serveru (zkontrolujte další konce řádků nebo znaky, které chyběly při operaci kopírování a vkládání).
- Pokud jste přestavovali server, možná budete muset odstranit klíč hostitele ze souboruknown_hosts, než se budete moci připojit.
Pokud nemáte přístup
Nesprávná konfigurace SSH, sudo nebo iptables může způsobit zablokování vašeho systému. Pokud k tomu dojde, přihlaste se do TheRackspace Cloud Control Panel a pomocí nouzové konzoly nebo záchranného režimu opravte konfigurace.
Toto jsou základy připojení k linuxovému cloudovému serveru a nastavení zabezpečení. Informace o provedení těchto kroků na serveru Windows naleznete v části Windows Cloud Server.