GNU/Linux >> Znalost Linux >  >> Linux

Nakonfigurujte základní zabezpečení

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.

  1. 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).

  2. 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
    
  3. 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
    
  4. 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íč

  1. V místním počítači vytvořte složku, do které budou uloženy vaše klíče:

    mkdir ~/.ssh
    
  2. 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.

  1. 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/
    
  2. Po zobrazení výzvy zadejte uživatelské heslo správce.

  3. 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ší.

  1. Zadejte následující příkaz:

    nano /etc/ssh/sshd_config
    
  2. 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.

  1. 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.

  2. 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
    
  3. Podle potřeby změňte a přidejte porty.

  4. Chcete-li použít pravidla na váš server, zadejte následující příkaz:

    iptables-restore < /etc/iptables.test.rules
    
  5. Chcete-li si povšimnout jakýchkoli rozdílů, zadejte následující příkaz:

    iptables -L
    
  6. Pokud nedojde k žádné změně ve výstupu, opakujte předchozí kroky a zkuste to znovu.

  7. 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í.

  8. 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
    
  9. Přidejte do nového souboru následující řádky:

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.up.rules
    
  10. 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.


Linux
  1. 7 základních tipů pro zlepšení zabezpečení Apache

  2. Jak zabezpečit PostgreSQL Server

  3. Jak nainstalovat a nakonfigurovat OpenVPN Server na Ubuntu 20.04

  1. Základní správa firewallu iptables

  2. Základní správa uživatelů Linuxu

  3. Nakonfigurujte server MariaDB na CentOS

  1. Jak nainstalovat a nakonfigurovat OpenVPN Server na Debian 10

  2. Jak nainstalovat a nakonfigurovat VNC Server na Debian 10

  3. Konfigurace zabezpečení IP ve službě IIS