Přihlašování k serveru

Změna hesla

  1. Připojíme se přes SSH k našemu serveru bisXXX.vse.cz (XXX je číslo našeho serveru, které nám bylo přiřazeno) s použitím našeho xname a hesla, které nám bylo přiřazeno.

    Do konzole zadáme passwd.
    
    xname00@bisXXX:~$ passwd
    
    Changing password for xname00.
    
    (current) UNIX password:
    
    
  2. Zadáme heslo, které nám bylo přiřazeno (můžeme ho zkopírovat a vložit – do konzole se vkládá stiskem pravého tlačítka myši). Při zadávání hesel se v konzoli nic nezobrazuje.
    
    Enter new UNIX password:
    
    Retype new UNIX password:
    
    passwd: password updated successfully
    
    xname00@bisXXX:~$
    
    
  3. Dvakrát zadáme nějaké nové heslo (nemělo by být moc jednoduché, jinak se změna nepovede, jak by nás systém upozornil).

Přihlášení pomocí SSH klíče

  1. V požadavcích pro semestrální práci je uvedeno příhlášení pouze pomocí SSH klíčů.

    Můžeme použít stejný pár veřejného a přivátního klíče, který jsme používali na serveru bis.vse.cz. Z naší domácí složky na hlavním serveru bis.vse.cz stačí vzít soubor authorized_keys, který je ve složce .ssh, a dát ho do stejné složky na našem novém serveru bisXXX.vse.cz (pokud složku .ssh ještě nemáme, vytvoříme si ji).
  2. Návod na kompletní vygenerování páru klíčů a na přihlášení bez hesla je zde. Z minulosti již máme vygenerované soubory authorized_keys a private.ppk, takže můžeme v odkazovaném návodu začít od bodu 6).

Získání administrátorského oprávnění

  1. Abychom se stali administrátorem (uživatelem root), zadáme sudo -i.
    
    xname00@bisXXX:~$ sudo -i
    
    
    
    We trust you have received the usual lecture from the local System
    
    Administrator. It usually boils down to these three things:
    
    
    
        #1) Respect the privacy of others.
    
        #2) Think before you type.
    
        #3) With great power comes great responsibility.
    
    
    
    [sudo] password for xname00:
    
    
  2. Obdržíme krátkou lekci o správném chování uživatele root (pouze jednou). Poté musíme zadat naše heslo.
    
    root@bisXXX:~#
    
    
  3. Nyní si se systémem můžeme dělat, co chceme.

Zakázání přihlašování heslem

  1. Nejprve se ujistíme, že nám funguje přihlašování pomocí klíče bez zadání hesla.

    Poté v textovém editoru otevřeme konfigurační soubor /etc/ssh/sshd_config. Buď ze sebe předtím uděláme administrátora (sudo -i) nebo zadáme příkaz sudo ještě před příkazem pro otevření editoru (nano), tedy sudo nano /etc/ssh/sshd_config.
    
      GNU nano 2.2.6          File: /etc/ssh/sshd_config                            
    
    
    
    # Package generated configuration file
    
    # See the sshd_config(5) manpage for details
    
    
    
    # What ports, IPs and protocols we listen for
    
    Port 22
    
    # Use these options to restrict which interfaces/protocols sshd will bind to
    
    #ListenAddress ::
    
    #ListenAddress 0.0.0.0
    
    Protocol 2
    
    # HostKeys for protocol version 2
    
    HostKey /etc/ssh/ssh_host_rsa_key
    
    HostKey /etc/ssh/ssh_host_dsa_key
    
    HostKey /etc/ssh/ssh_host_ecdsa_key
    
    HostKey /etc/ssh/ssh_host_ed25519_key
    
    #Privilege Separation is turned on for security
    
    UsePrivilegeSeparation yes
    
    
    
    # Lifetime and size of ephemeral version 1 server key
    
    KeyRegenerationInterval 3600
    
    
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  2. Pomocí Ctrl+W vyhledáme řádek s textem PasswordAuthentication a yes změníme na no. Dále najdeme řádek s textem UsePAM a yes opět změníme na no. Všechno ostatní (přihlášení roota a přihlášení roota ze školní sítě pro umožnění přístupu vyučujícím) je již v souboru předkonfigurováno.
  3. Stiskneme Ctrl+X pro ukončení editace. Poté stiskneme Y pro potvrzení změn a Enter pro přepsání původního souboru.
  4. Aby se námi provedené změny projevily, musíme SSH restartovat. Jako administrátoři zadáme /etc/init.d/ssh restart.
    
    root@bisXXX:~# /etc/init.d/ssh restart
    
    [ ok ] Restarting ssh (via systemctl): ssh.service.
    
    
  5. Nyní se již k serveru není možné přihlásit heslem, ale pouze klíčem.

Instalace webového serveru a OpenLDAP

Apache, MySQL a PHP

  1. Aby na našem serveru mohla běžet webová aplikace, musíme nainstalovat všechny komponenty, které tato aplikace bude potřebovat. Aby se aplikace zobrazovala ve webovém prohlížeči, musíme nainstalovat Apache. Aby měla kam ukládat data, musíme nainstalovat MySQL. A aby ji náš server uměl vůbec spustit, musíme nainstalovat PHP.

    Instalace těchto komponent je jednoduchá a rychlá. Návod je například zde.

    Poznámka: V posledním kroku odkazovaného návodu, kdy si vytváříme soubor info.php pro ověření funkčnosti PHP, musíme soubor vytvořit v adresáři /var/www/html/ (celý příkaz pro vytvoření nového souboru a otevření editoru tedy bude nano /var/www/html/info.php).

Instalace OpenLDAP

  1. Staneme se administrátorem, zadáme sudo -i.
  2. Spustíme instalaci OpenLDAP, zadáme apt-get install slapd ldap-utils.
    
    root@bisXXX:~# apt-get install slapd ldap-utils
    
    Reading package lists... Done
    
    Building dependency tree
    
    Reading state information... Done
    
    The following extra packages will be installed:
    
      libldap-2.4-2 libodbc1 libperl5.20 libslp1
    
    Suggested packages:
    
      libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal libmyodbc
    
      odbc-postgresql tdsodbc unixodbc-bin slpd openslp-doc
    
    The following NEW packages will be installed:
    
      ldap-utils libodbc1 libperl5.20 libslp1 slapd
    
    The following packages will be upgraded:
    
      libldap-2.4-2
    
    1 upgraded, 5 newly installed, 0 to remove and 43 not upgraded.
    
    Need to get 2078 kB of archives.
    
    After this operation, 5787 kB of additional disk space will be used.
    
    Do you want to continue? [Y/n]
    
    
  3. Potvrdíme stiskem Y.
  4. Zobrazí se nám instalační obrazovka s modrým pozadím. Do pole Administrator password: zadáme nějakého heslo pro administrátora a potvrdíme ho.
  5. Necháme instalaci doběhnout a otevřeme konfigurační soubor /etc/ldap/ldap.conf. Zadáme nano /etc/ldap/ldap.conf.
    
      GNU nano 2.2.6           File: /etc/ldap/ldap.conf                
    
    
    
    #
    
    # LDAP Defaults
    
    #
    
    
    
    # See ldap.conf(5) for details
    
    # This file should be world readable but not world writable.
    
    
    
    #BASE   dc=example,dc=com
    
    #URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
    
    
    
    #SIZELIMIT      12
    
    #TIMELIMIT      15
    
    #DEREF          never
    
    
    
    # TLS certificates (needed for GnuTLS)
    
    TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
    
    
    
    
    
    
    
                                   [ Read 17 lines ]
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  6. Editujeme zeleně označené řádky. První řádek #BASE dc=example,dc=com upravíme na BASE dc=vse,dc=cz a druhý řádek #URI ldap://ldap.example.com ldap://ldap-master.example.com:666 upravíme na URI ldap://bisXXX.vse.cz ldap://bisXXX.vse.cz:666, kde XXX je číslo našeho serveru (kromě přepsání hodnot jsme odstranili # na začátku obou řádků).

    Stiskem Ctrl+X, poté Y a Enter soubor uložíme a editor ukončíme.
  7. Pro pohodlnou správu LDAP z webového prohlížeče nainstalujeme aplikaci phpLDAPadmin. Zadáme apt-get install phpldapadmin a stiskem Y instalaci potvrdíme.
  8. Aplikaci phpLDAPadmin nakonfigurujeme. Zadáme nano /etc/phpldapadmin/config.php.
  9. Následující řádky upravíme na následující hodnoty (řádky kurzívou jsou původní řádky, části ke změně jsou podtrženy, černě podbarvené jsou finální řádky):

    # $config->custom->appearance['timezone'] = 'Australia/Melbourne';
    $config->custom->appearance['timezone'] = 'Europe/Prague';

    $servers->setValue('server','host','127.0.0.1');
    $servers->setValue('server','host','146.102.54.XX'); (kde XX je číslo našeho serveru, tzn. pokud je jméno našeho serveru bis011, jeho IP adresa bude 146.102.54.11)

    $servers->setValue('server','base',array('dc=example,dc=com'));
    $servers->setValue('server','base',array('dc=vse,dc=cz'));

    $servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
    $servers->setValue('login','bind_id','cn=admin,dc=vse,dc=cz');

  10. Stiskem Ctrl+X, Y a Enter editor ukončíme a soubor uložíme.
  11. Ve webovém prohlížeči navštívíme stránku http://bisXXX.vse.cz/phpldapadmin (kde XXX je číslo našeho serveru).
    phpLDAPadmin
  12. Klikneme na Login, zkontrolujeme, že jsou v poli Login DN: informace, které jsme zadávali do konfiguračního souboru, do pole Password: zadáme heslo administrátora, které jsme vytvořili v kroku 4. tohoto návodu a klikneme na tlačítko Authenticate.
    phpLDAPadmin
  13. Na levé straně rozbalíme dc=vse,dc=cz. Odsud můžeme spravovat uživatele, skupiny a další objekty na našem OpenLDAP serveru.
    phpLDAPadmin

* Vytvoření uživatelů v LDAP

  1. Přihlásíme se jako administrátoři k aplikaci phpLDAPadmin podle předchozího návodu (od kroku 11.). Rozbalíme strom dc=vse,dc=cz ve sloupci nalevo a klikneme na Create new entry here vedle žluté hvězdičky. Nejprve vytvoříme organizační jednotku (ou). Pod nadpisem Select a template for the creation process vedle Templates: označíme Generic: Organisational Unit.
  2. V kroku New Organisational Unit (Step 1 of 1) napíšeme do pole Organisational Unit uzivatele, stiskneme tlačítko Create Object a nakonec tlačítko Commit.
  3. Pokud vše proběhlo v pořádku, uvidíme vpravo nahoře Creation successful! DN: ou=uzivatele,dc=vse,dc=cz has been created., vytvořili jsme organizační jednotku s názvem uzivatele.
  4. Nyní vytvoříme skupinu uživatelů. Klikneme na Create a child entry vedle žluté hvězdičky v pravé části. Vedle Templates: vybereme Generic: Posix Group.
  5. V kroku New Posix Group (Step 1 of 1) vyplníme do pole Group například adminuser, stiskneme tlačítko Create Object a nakonec tlačítko Commit.
  6. Měli bychom vidět hlášení Creation successful! DN: cn=adminuser,ou=uzivatele,dc=vse,dc=cz has been created., vytvořili jsme skupinu s názvem adminuser.
  7. Konečně vytvoříme uživatele. Opět klikneme na Create a child entry vedle žluté hvězdičky v pravé části. Vedle Templates: vybereme Generic: User Account.
  8. Do pole Common Name napíšeme tester. Z nabídky GID Number vybereme adminuser (povinná skupina, kterou jsme vytvořili v předchozích krocích). Do pole Last name napíšeme například také tester. Do polí Password vyplníme nějaké heslo pro tohoto uživatele. Nakonec stiskneme tlačítko Create Object a poté Commit.
  9. Uvidíme hlášení Creation successful! DN: cn= tester,cn=adminuser,ou=uzivatele,dc=vse,dc=cz has been created., uživatel tester byl úspěšně vytvořen.

* Změna hesla uživatelů v LDAP

  1. Bylo by zbytečně složité nutit uživatele, aby si měnili heslo ke svému účtu v LDAP například pomocí aplikace phpLDAPadmin. Místo toho použijeme pro změnu hesla jednoduchou stránku (PHP aplikaci), kam uživatel pouze vyplné své jméno, současné heslo a nové heslo.
  2. Pro naše účely jsem upravil malou aplikaci, kterou napsal Matt Rude. Pokud jsme postupovali podle předchozích návodů na instalaci OpenLDAP a na vytvoření uživatelů, bude nám stačit stáhnout si moji upravenou verzi zmíněné aplikace a soubor heslo.php z archivu nahrát do adresáře /var/www/html/ na našem serveru. Pokud nyní uživatel v prohlížeči navštíví stránku bisXXX.vse.cz/heslo.php, bude mít možnost si své heslo změnit v jednoduchém formuláři.
    Změna LDAP hesla Změna LDAP hesla
  3. Pokud jsme při vytváření organizační jednotky z předchozího návodu tuto jednotku pojmenovali jinak než uzivatele, bude nutné v souboru navod.php opravit řádek $dn = "ou=uzivatele,dc=vse,dc=cz"; na odpovídající hodnotu.

    Poznámka: Z originální verze aplikace na změnu hesla v LDAP, kterou napsal Matt Rude, jsem pro naše účely odstranil kontrolu na složitost hesla (aplikace původně vyžadovala heslo delší než 8 znaků obsahující alespoň jedno číslo, jedno písmeno, jedno velké písmeno, jedno malé písmeno, ..., nyní pouze kontroluje, zda uživatel nějaké nové heslo vyplnil), dále jsem odstranil automatické odeslání e-mailu informujícího uživatele o změně hesla a aplikaci jsem přeložil do češtiny. Samozřejmě můžeme použít originální verzi, ale potom musíme v kódu aplikace správně provést konfiguraci pro náš LDAP server.

Odinstalace balíčku

  1. Pokud chceme některý nainstalovaný balíček odinstalovat, zadáme jako administrátoři apt-get --purge remove + jméno balíčku.

    Pokud bychom chtěli například odinstalovat OpenLDAP, zadali bychom apt-get --purge remove slapd ldap-utils.

Kontrola konfiguračních souborů Apache a zjišťování problémů s Apache

  1. Pokud nám z nějakého důvodu nefunguje Apache (například nejde spustit), můžeme jako administrátoři zadat apachectl configtest. Tento příkaz zkontroluje syntaxi konfiguračních souborů a řekne nám, na kterém řádku a v kterém souboru je problém, abychom ho mohli opravit.
  2. Tento postup opakujeme, dokud nám příkaz apachectl configtest neřekne Syntax OK.
  3. Další informace o možných problémech v Apache můžeme zjistit i zadáním systemctl status apache2.service nebo journalctl -xn (na výpisech sledujeme vždy datum a čas zaznamenání chyby, abychom se nesnažili opravit chybu, kterou už jsme opravili v minulosti).
  4. Kompletní restart operačního systému (včetně všech komponent) můžeme provést zadáním reboot jako administrátoři. Server se poté vypne a znovu spustí (okno s SSH připojením budeme muset zavřít a po novém startu se znovu připojit).

Zabezpečení serveru

Získání certifikátu, jeho instalace a zakázání slabých šifer

  1. Certifikát pro náš server získáme zdarma například na buy.wosign.com/free/. Do pole Domain name: napíšeme bisXXX.vse.cz (kde XXX je číslo našeho serveru). Ostatní nastavení neměníme.
    Certifikát pro server
  2. V kroku 2 klikneme na Validate now. Protože na našem serveru nemůžeme přijímat poštu z internetu, přepneme na Website Control verification a stáhneme si soubor vse.cz.html. Stránku nezavíráme.
    Ověření serveru
  3. Stažený soubor vse.cz.html nahrajeme napříkald pomocí WinSCP do našeho domovského adresáře na našem serveru (do jiných adresářů přes WinSCP přistupovat nemůžeme).
  4. Na serveru potom z konzole soubor vse.cz.html přesuneme jako administrátoři do složky /var/www/html, zadáme tedy sudo mv vse.cz.html /var/www/html.

    Můžeme si ověřit, že je soubor přístupný z internetu. Do webového prohlížeče zadáme adresu bisXXX.vse.cz/vse.cz.html (kde XXX je číslo našeho serveru). Měli bychom vidět řadu čísel a písmen.
  5. Nyní se vrátíme na stránku WoSign a pokračujeme tam, kde jsme v kroku 2 skončili. Opíšeme kontrolní kód a stiskneme tlačítko The verification file is ready in website, Continue. Na stránce bychom měli nyní vidět Validated: vse.cz.
    Ověření serveru
  6. V kroku 3 necháme označenou možnost Option 2:Generate by myself. Stránku nezavíráme. Nyní si v konzoli vygenerujeme Certificate Signing Request (CSR) a soukromý SSL klíč.

    Zadáme openssl req -out bisXXX.vse.cz.csr -new -sha256 -newkey rsa:2048 -nodes -keyout bisXXX.vse.cz.key (bisXXX.vse.cz.csr a bisXXX.vse.cz.key jsou v tomto příkazu pouze jména souborů, mohou se jmenovat jakkoli).
    
    xname00@bisXXX:~$ openssl req -out bisXXX.vse.csr -new -sha256 -newkey rsa:2048 -nodes 
    
    -keyout bisXXX.vse.cz.key
    
    Generating a 2048 bit RSA private key
    
    .............................................................+++
    
    ...................................+++
    
    writing new private key to 'bisXXX.vse.cz.key'
    
    -----
    
    You are about to be asked to enter information that will be incorporated
    
    into your certificate request.
    
    What you are about to enter is what is called a Distinguished Name or a DN.
    
    There are quite a few fields but you can leave some blank
    
    For some fields there will be a default value,
    
    If you enter '.', the field will be left blank.
    
    -----
    
    Country Name (2 letter code) [AU]:
    
    
  7. Budeme dotázáni na dvoumístný kód naší země (zadáme CZ) a na další informace k certifikátu (země, město, organizace, jméno našeho serveru, e-mailová adresa, ...). Pokud chceme některá pole nechat prázdná, zadáme tečku (například Organizational Unit Name nemusíme vyplňovat).
    
    ...
    
    Country Name (2 letter code) [AU]:cz
    
    State or Province Name (full name) [Some-State]:Czech Republic
    
    Locality Name (eg, city) []:Prague
    
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:University of Economics, Prague
    
    Organizational Unit Name (eg, section) []:.
    
    Common Name (e.g. server FQDN or YOUR name) []:bisXXX.vse.cz
    
    Email Address []:xname00@vse.cz
    
    
    
    Please enter the following 'extra' attributes
    
    to be sent with your certificate request
    
    A challenge password []:123456
    
    An optional company name []:.
    
    xname00@bisXXX:~$
    
    
  8. Nyní v našem domovském adresáři existují soubory bisXXX.vse.csr a bisXXX.vse.cz.key. Soubor bisXXX.vse.csr si například pomocí WinSCP stáhneme.
  9. Vrátíme se na stránku WoSign a do textového pole v kroku 3 vložíme obsah souboru bisXXX.vse.csr (všechny znaky mezi -----BEGIN CERTIFICATE REQUEST----- a -----END CERTIFICATE REQUEST-----).
    Ověření serveru
  10. V kroku 4 zadáme naši e-mailovou adresu (musí být správná, protože nám na ni přijde certifikát). Pokud nemáme WoSign účet, zadáme ještě dvakrát nějaké heslo, opíšeme kód, zatrhneme, že jsme si přečetli podmínky a souhlasíme s nimi, a stiskneme tlačítko Submit request.
    Dokončení
  11. Na další stránce se dozvíme předpokládané datum a čas, kdy nám bude certifikát zaslán (pravděpodobně do druhého dne, protože ho musejí ve WoSign ručně ověřit).
  12. Zatímco čekáme na certifikát, přesuneme si na serveru náš dříve vygenerovaný privátní SSL klíč (soubor bisXXX.vse.cz.key) do složky /etc/ssl/private.

    Do konzole zadáme sudo mv bisXXX.vse.cz.key /etc/ssl/private.
  13. Jakmile obdržíme od WoSign e-mail s odkazem na certifikát, navštívíme ho, opíšeme kontrolní kód, zaškrtneme, že jsme si přečetli podmínky, a stiskneme tlačítko Retrieve, které nás dostane na stránku se stažením certifikátu (bisXXX.vse.cz_sha256_en.zip).
    Stažení certifikátu
    Stažení certifikátu
  14. Po rozbalení archivu získáme čtyři další archivy s certifikáty pro různé webservery. Nás bude zajímat pouze archiv for Apache.zip, který obsahuje soubory 1_root_bundle.crt a 2_bisXXX.vse.cz.crt.

    Oba soubory si z archivu extrahujeme a nahrajeme je například pomocí WinSCP na náš server.
  15. Oba soubory nyní z konzole přesuneme na serveru do složky /etc/ssl/certs.

    Do konzole zadáme sudo mv 1_root_bundle.crt /etc/ssl/certs a také sudo mv 2_bisXXX.vse.cz.crt /etc/ssl/certs (kde XXX je číslo našeho serveru).
  16. Nyní nakonfigurujeme Apache tak, aby certifikáty používal. Otevřeme v editoru konfigurační soubor pro SSL. Zadáme sudo nano /etc/apache2/sites-available/default-ssl.conf.
    
      GNU nano 2.2.6  File: /etc/apache2/sites-available/default-ssl.conf         
    
    
    
                    #   SSLCertificateFile directive is needed.
    
                    SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
    
                    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    
    
    
                    #   Server Certificate Chain:
    
                    #   Point SSLCertificateChainFile at a file containing the
    
                    #   concatenation of PEM encoded CA certificates which form the
    
                    #   certificate chain for the server certificate. Alternatively
    
                    #   the referenced file can be the same as SSLCertificateFile
    
                    #   when the CA certificates are directly appended to the server
    
                    #   certificate for convinience.
    
                    #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt
    
    
    
                    #   Certificate Authority (CA):
    
                    #   Set the CA certificate verification path where to find CA
    
                    #   certificates for client authentication or alternatively one
    
                    #   huge file containing all of them (file must be PEM encoded)
    
                    #   Note: Inside SSLCACertificatePath you need hash symlinks
    
                    #                to point to the certificate files. Use the pro$
    
    
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  17. Budeme editovat řádky označené zeleně na výpisu nahoře. První řádek SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem přepíšeme na SSLCertificateFile /etc/ssl/certs/2_bisXXX.vse.cz.crt (kde XXX je číslo našeho serveru). Druhý řádek SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key přepíšeme na SSLCertificateKeyFile /etc/ssl/private/bisXXX.vse.cz.key (soubor bisXXX.vse.cz.key je soubor s privátním klíčem, který jsme si generovali při podávání žádosti o certifikát). Třetí řádek #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt upravíme na SSLCertificateChainFile /etc/ssl/certs/1_root_bundle.crt (kromě přepsání cesty a názvu souboru jsme také odstranili # na začátku řádku).
  18. Nyní zakážeme slabé šifrování. Do souboru editovaného v předchozím kroku vložíme následující řádky:

    SSLHonorCipherOrder on
    SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
    
      GNU nano 2.2.6  File: /etc/apache2/sites-available/default-ssl.conf Modified  
    
    
    
                    #SSLCARevocationPath /etc/apache2/ssl.crl/
    
                    #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
    
    
    
                    #   Client Authentication (Type):
    
                    #   Client certificate verification type and depth.  Types are
    
                    #   none, optional, require and optional_no_ca.  Depth is a
    
                    #   number which specifies how deeply to verify the certificate
    
                    #   issuer chain before deciding the certificate is not valid.
    
                    #SSLVerifyClient require
    
                    #SSLVerifyDepth  10
    
    
    
    SSLHonorCipherOrder on
    
    SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA2...
    
    
    
                    #   SSL Engine Options:
    
                    #   Set various options for the SSL engine.
    
                    #   o FakeBasicAuth:
    
                    #        Translate the client X.509 into a Basic Authorisation.$
    
    
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  19. Stiskneme Ctrl+X, poté Y a Enter, čímž editor ukončíme a soubor uložíme.
  20. Povolíme SSL, zadáme sudo a2enmod ssl. Pro načtení změn zadáme sudo a2ensite default-ssl.
  21. Nakonec vynutíme HTTPS. V editoru otevřeme soubor /etc/apache2/sites-available/000-default.conf, zadáme sudo nano /etc/apache2/sites-available/000-default.conf. Do konfiguračního souboru přidáme před koncový tag </VirtualHost> řádek Redirect permanent / https://bisXXX.vse.cz/ (kde XXX je číslo našeho serveru).
    
      GNU nano 2.2.6  File: /etc/apache2/sites-available/000-default.conf Modified  
    
    
    
            CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    
    
    Redirect permanent / https://bisXXX.vse.cz/
    
    
    
            # For most configuration files from conf-available/, which are
    
            # enabled or disabled at a global level, it is possible to
    
            # include a line for only one particular virtual host. For example the
    
            # following line enables the CGI configuration for this host only
    
            # after it has been globally disabled with "a2disconf".
    
            #Include conf-available/serve-cgi-bin.conf
    
    </VirtualHost>
    
    
    
    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
    
    
    
    ^G Get Help  ^O WriteOut  ^R Read File ^Y Prev Page ^K Cut Text  ^C Cur Pos
    
    ^X Exit      ^J Justify   ^W Where Is  ^V Next Page ^U UnCut Text^T To Spell
    
    
  22. Stiskem Ctrl+X, poté Y a Enter editor ukončíme a soubor uložíme.
  23. Aby se změny projevily, restartujeme Apache. Zadáme sudo service apache2 reload.
  24. Náš server otestujeme na SSLLabs.
    Hodnocení serveru
  25. S nastavením popsaným v tomto návodu získá náš server hodnocení A, což je dostačující (stejné hodnocení má i hlavní server bis.vse.cz).

HTTP Strict Transport Security

  1. Povolíme HTTP Strict Transport Security.

    Jako administrátoři (sudo -i) zadáme a2enmod headers.
    
    root@bisXXX:~# a2enmod headers
    
    Enabling module headers.
    
    To activate the new configuration, you need to run:
    
      service apache2 restart
    
    
  2. Editujeme konfigurační soubor Apache. Zadáme nano /etc/apache2/sites-available/default-ssl.conf a kamkoliv do hlavního tagu <VirtualHost _default_:443> přidáme na samostatný řádek Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains".
  3. Editor stiskem Ctrl+X, Y a Enter ukončíme.
  4. Restartujeme Apache. Zadáme service apache2 restart.
  5. Díky HTTP Strict Transport Security nyní náš server v testu SSLLabs získá hodnocení A+.
    Hodnocení serveru

Porty a služby

  1. Jako administrátoři (sudo -i) zadáme netstat -antup.
    
    root@bisXXX:~# netstat -antup
    
    Active Internet connections (servers and established)
    
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    
    tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      11792/slapd
    
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      24374/mysqld
    
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      445/rpcbind
    
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6743/apache2
    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8096/sshd
    
    tcp        0      0 0.0.0.0:51159           0.0.0.0:*               LISTEN      454/rpc.statd
    
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      595/master
    
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      6743/apache2
    
    tcp        0    464 146.102.54.XX:22        85.71.100.XXX:51926     ESTABLISHED 7973/sshd: xname00
    
    tcp        0      0 146.102.54.XX:35737     146.102.54.250:514      ESTABLISHED 551/rsyslogd
    
    tcp6       0      0 :::389                  :::*                    LISTEN      11792/slapd
    
    tcp6       0      0 :::111                  :::*                    LISTEN      445/rpcbind
    
    tcp6       0      0 :::50196                :::*                    LISTEN      454/rpc.statd
    
    tcp6       0      0 :::22                   :::*                    LISTEN      8096/sshd
    
    udp        0      0 0.0.0.0:47887           0.0.0.0:*                           239/systemd-timesyn
    
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           404/dhclient
    
    udp        0      0 0.0.0.0:57183           0.0.0.0:*                           454/rpc.statd
    
    udp        0      0 0.0.0.0:620             0.0.0.0:*                           445/rpcbind
    
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           445/rpcbind
    
    udp        0      0 127.0.0.1:630           0.0.0.0:*                           454/rpc.statd
    
    udp        0      0 0.0.0.0:64374           0.0.0.0:*                           404/dhclient
    
    udp6       0      0 :::14803                :::*                                404/dhclient
    
    udp6       0      0 :::59877                :::*                                454/rpc.statd
    
    udp6       0      0 :::620                  :::*                                445/rpcbind
    
    udp6       0      0 :::111                  :::*                                445/rpcbind
    
    
  2. Získali jsme výpis všech služeb (ve sloupci PID/Program name) a adres včetně portů, na kterých naslouchají. Sloupec Local Address je místní adresa a port naslouchání. Například první zelený řádek říká, že služba slapd (OpenLDAP) naslouchá na portu 389 na jakékoliv adrese (0.0.0.0:389) a spojení může přicházet z jakékoliv adresy a jakéhokoliv portu (0.0.0.0:*), což je situace, kterou nechceme (přístup k LDAP budeme chtít povolit pouze místně). Poslední zelený řádek říká to samé, ale pro IPv6.

    Druhý a třetí zelený řádek je Apache, který naslouchá na portech 80 (pro HTTP) a 443 (pro HTTPS) na všech adresách. Ačkoli pro naši webovou aplikaci používáme port 443, port 80 necháme také otevřený, protože pokud přes něj někdo přijde (HTTP), přesměrujeme ho na zabezpečené spojení na portu 443 (HTTPS), což už jsme nastavili dříve. Pokud bychom port 80 zavřeli a někdo by se přes něj snažil přijít, nepřišel by :).

    Čtvrtý zelený řádek je naše aktuální SSH spojení (ve sloupci State vidíme ESTABLISHED). Ve sloupci Foreign Address vidíme adresu našeho počítače a nějaký port, na kterém komunikace odchází. Náš server (146.102.54.XX:22, kde XX je číslo našeho serveru) naslouchá na portu 22.

    Ve výpisu vidíme také službu rpcbind, kterou později společně s dalšími nepotřebnými službami vypneme.
  3. Nyní nakonfigurujeme OpenLDAP tak, aby naslouchal pouze místně (na adrese 127.0.0.1 a portu 389). Zadáme nano /etc/default/slapd. Najdeme řádek SLAPD_SERVICES="ldap:/// ldapi:///" a přepíšeme ho na SLAPD_SERVICES="ldap://127.0.0.1:389/". Soubor uložíme a editor ukončíme (Ctrl+X, Y a Enter).

    Poznámka: Pokud jsme při instalaci aplikace phpLDAPadmin postupovali podle návodu Instalace OpenLDAP na této stránce, musíme po překonfigurování OpenLDAP překonfigurovat i aplikaci phpLDAPadmin, abychom ji mohli dále používat.
    Zadáme nano /etc/phpldapadmin/config.php a řádek $servers->setValue('server','host','146.102.54.XX'); změníme na $servers->setValue('server','host','127.0.0.1');. (Stejnou adresu musíme zadat do konfigurace všech dalších aplikací, které se k LDAP serveru připojují.) Stiskem Ctrl+X, Y a Enter editor ukončíme a soubor uložíme. Nyní se budeme moci k aplikaci phpLDAPadmin přihlásit.
  4. Ukončíme nepotřebné služby. Půjdeme do adresáře /etc/rc2.d, zadáme cd /etc/rc2.d. Vypíšeme si obsah odrasáře, zadáme ls -l.
    
    root@bisXXX:/etc/rc2.d# ls -l
    
    total 4
    
    -rw-r--r-- 1 root root 677 Nov 11 20:37 README
    
    lrwxrwxrwx 1 root root  14 Apr  7 21:22 S01motd -> ../init.d/motd
    
    lrwxrwxrwx 1 root root  23 Apr  8 18:16 S01open-vm-tools -> ../init.d/open-vm-tools
    
    lrwxrwxrwx 1 root root  17 Apr  7 21:22 S01rsyslog -> ../init.d/rsyslog
    
    lrwxrwxrwx 1 root root  17 Apr 21 21:43 S02apache2 -> ../init.d/apache2
    
    lrwxrwxrwx 1 root root  15 Apr 21 21:43 S03acpid -> ../init.d/acpid
    
    lrwxrwxrwx 1 root root  13 Apr 21 21:43 S03atd -> ../init.d/atd
    
    lrwxrwxrwx 1 root root  14 Apr 21 21:43 S03dbus -> ../init.d/dbus
    
    lrwxrwxrwx 1 root root  15 Apr 21 22:10 S03mysql -> ../init.d/mysql
    
    lrwxrwxrwx 1 root root  15 Apr 21 21:43 S03rsync -> ../init.d/rsync
    
    lrwxrwxrwx 1 root root  15 Apr 24 19:07 S03slapd -> ../init.d/slapd
    
    lrwxrwxrwx 1 root root  13 Apr 21 21:43 S03ssh -> ../init.d/ssh
    
    lrwxrwxrwx 1 root root  14 Apr 24 19:07 S04cron -> ../init.d/cron
    
    lrwxrwxrwx 1 root root  17 Apr 21 22:10 S04postfix -> ../init.d/postfix
    
    lrwxrwxrwx 1 root root  18 Apr 21 21:43 S05bootlogs -> ../init.d/bootlogs
    
    lrwxrwxrwx 1 root root  18 Apr 21 21:43 S06rc.local -> ../init.d/rc.local
    
    lrwxrwxrwx 1 root root  19 Apr 21 21:43 S06rmnologin -> ../init.d/rmnologin
    
    
  5. Vidíme, že jsou v adresáři symbolické linky na služby, které se mají spustit. Jak bychom si mohli přečíst v souboru README, jednotlivé služby deaktivujeme tak, že první písmeno v jejich názvu (S) změníme na K.

    Zadáme update-rc.d rsync disable, update-rc.d atd disable, update-rc.d nfs-common disable a update-rc.d rpcbind disable.
  6. Restartujeme systém, abychom si ověřili, že se služby již nespustí. Zadáme reboot, zavřeme okno spojení a za chvíli se k serveru připojíme znovu.
  7. Jako administrátoři sudo -i zadáme netstat -atunp.
    
    root@bisXXX:~# netstat -antup
    
    Active Internet connections (servers and established)
    
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    
    tcp        0      0 127.0.0.1:389           0.0.0.0:*               LISTEN      495/slapd
    
    tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      865/mysqld
    
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      659/apache2
    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      437/sshd
    
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1068/master
    
    tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      659/apache2
    
    tcp        0      0 146.102.54.XX:50425     146.102.54.250:514      ESTABLISHED 481/rsyslogd
    
    tcp        0    464 146.102.54.XX:22        85.71.100.XXX:52940     ESTABLISHED 1242/sshd: xname00
    
    tcp6       0      0 :::22                   :::*                    LISTEN      437/sshd
    
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           403/dhclient
    
    udp        0      0 0.0.0.0:49315           0.0.0.0:*                           227/systemd-timesyn
    
    udp        0      0 0.0.0.0:18090           0.0.0.0:*                           403/dhclient
    
    udp6       0      0 :::44388                :::*                                403/dhclient
    
    
  8. Na rozdíl od prvního výpisu na začátku tohoto návodu vidíme, že služba slapd naslouchá pouze lokálně. Výpis je navíc mnohem kratší, protože jsme zakázali nepotřebné služby.

    Pokud nás zajímá, co některá služba dělá, najdeme si ji podle jejího jména na internetu. Pokud nás zajímá, co je nějaké spojení zač (třeba spojení s cizí adresou 146.102.54.250 na portu 514 na výpisu nahoře), můžeme na tuto adresu použít například traceroute 146.102.54.250, a dozvíme se, že jde o logovací server hlavního serveru bis.vse.cz.

Instalace naší aplikace

Instalace aplikace

  1. Instalace každé aplikace je individuální. Postup by měl být vždy uveden v dokumentaci na stránkách dané aplikace.

    Instalace většiny aplikací spočívá ve stažení instalačních souborů na server (pravděpodobně do složky /var/www/html/) a provedení konfigurace (většina aplikací nabízí průvodce instalací v prohlížeči, který nás zároveň upozorní na problémy, které bychom před instalací měli vyřešit – například přístupová práva k souborům a složkám, konkrétní konfigurace PHP v souboru /etc/php5/apache2/php.ini či nastavení databáze.)

* Přesměrování indexu do naší aplikace

  1. Ke většině aplikací po instalaci přistupujeme z prohlížeče přes adresu bisXXX.vse.cz/aplikace, ale hezčí by bylo k ní přistupovat přímo po zadání bisXXX.vse.cz. Existuje mnoho způsobů, jak přesměrování provést. Můžeme například editovat konfigurační soubor /etc/apache2/sites-available/default-ssl.conf.

    Jako administrátoři zadáme nano /etc/apache2/sites-available/default-ssl.conf.
  2. Najdeme řádek DocumentRoot /var/www/html a přidáme pod něj další řádek RedirectMatch ^/$ /aplikace/ (kde aplikace je složka, ve které je naše aplikace nainstalovaná)

    Editor stiskem Ctrl+X, Y a Enter ukončíme.
  3. Restartujeme Apache. Zadáme service apache2 reload. Pokud nyní do prohlížeče zadáme adresu bisXXX.vse.cz, dojde k přesměrování na umístění naší aplikace (bisXXX.vse.cz/aplikace/).

    Poznámka: Pro některé aplikace nestačí provést přesměrování do složky, ve které je aplikace nainstalována, ale je nutné provést přesměrování na nějaký konkrétní soubor (.html, .php, ...), pravděpodobně na výchozí stránku naší aplikace. Náš řádek s přesměrováním pak může vypadat například takto: RedirectMatch ^/$ /apikace/aplikace.php.

** Spojení PmWiki a LDAP

  1. PmWiki je nainstalována na hlavním serveru bis.vse.cz, takže se můžeme při nastavování přihlašování inspirovat konfiguračním souborem config.php v adresáři /var/www/pmwiki/local na hlavním serveru (ne na našem bisXXX.vse.cz serveru).
  2. Na našem serveru provedeme takovou konfiguraci, aby stránky mohli editovat pouze uživatelé přihlášení přes LDAP. Na našem bisXXX.vse.cz serveru editujeme jako administrátoři stejný konfigurační soubor (zmiňovaný v předchozím kroku). Zadáme nano /var/www/html/pmwiki/local/config.php (cestu případně upravíme podle konkrétního umístění naší instalace PmWiki).
  3. Pod řádek <?php if (!defined('PmWiki')) exit(); přidáme řádek $AuthUser['ldap'] = 'ldap://127.0.0.1:389/ou=uzivatele,dc=vse,dc=cz?uid?sub'; (nejmenuje-li se naše organizační jednotka uzivatele, změníme ji na odpovídající jméno).
  4. Na další řádek přidáme include_once("$FarmD/scripts/authuser.php");, čímž povolíme přihlašování uživatelů.
  5. Nyní určíme, aby mohli stránky editovat pouze ti uživatelé, kteří se přihlásí přes LDAP. Přidáme následujcí tři řádky:
    $HandleAuth['diff'] = 'edit';
    $DefaultPasswords['edit'] = 'id:*';
    $Author = $AuthId;.
  6. Práva a pravidla pro přihlášené a nepřihlášené uživatele lze samozřejmě nastavit mnohem sofistikovaněji, můžeme se podívat do oficiální dokumentace.

    Editor stiskem Ctrl+X, Y a Enter ukončíme.
  7. Pokud nyní na některé stránce PmWiki použijeme odkaz Edit, budeme muset zadat jméno a heslo, a teprve potom bude možné stránku editovat.
    Přihlášení k PmWiki přes LDAP Přihlášení k PmWiki přes LDAP

Testování serveru

* Přidání účtu pro testera

  1. Vše budeme provádět jako administrátoři (sudo -i) a použijeme příkaz useradd, kterým můžeme jednoduše vytvořit uživatele s právy administrátora a zařadit ho do skupiny users.

    Zadáme useradd -G users,sudo tester (za parametrem -G zadáváme jméno skupiny (users) a za , bez mezery zadáváme sudo pro vytvoření uživatele s právy administrátora, který se bude jmenovat tester).
  2. Uživateli tester nastavíme heslo, které si musíme pamatovat, protože mu ho později dáme. Zadáme passwd tester a poté dvakrát napíšeme nové heslo.
    
    root@bisXXX:~# passwd tester
    
    Enter new UNIX password:
    
    Retype new UNIX password:
    
    passwd: password updated successfully
    
    
  3. Novému uživateli vytvoříme domovský adresář. Zadáme mkdir /home/tester.
  4. V novém adresáři vytvoříme ještě složku .ssh pro budoucí veřejný klíč uživatele (v souboru authorized_keys) pro přihlášení k serveru. Zadáme mkdir /home/tester/.ssh.
  5. Tento adresář uživateli tester dáme (jako skupinu adresáře zvolíme také tohoto uživatele). Zadáme chown tester:tester /home/tester.
  6. To samé musíme udělat i s adresářem .ssh (aby se uživatel tester mohl přihlásit svým privátním klíčem, až jeho veřejný klíč dáme do adresáře .ssh). Zadáme chown tester:tester /home/tester/.ssh.
  7. U vytvořených adresářů odebereme všechna práva pro všechny kromě majitele adresářů (pouze uživatel tester bude mít nad svým domovským adresářem plnou kontrolu).

    Zadáme chmod go-rx /home/tester a poté chmod go-rx /home/tester/.ssh (práva nyní budou rwx------, stejného efektu bychom dosáhli i příkazem chmod 700 /home/tester, resp. chmod 700 /home/tester/.ssh).

* Výměna klíčů

  1. Náš tester nám pošle svůj soubor authorized_keys se svým veřejným klíčem. Například pomocí WinSCP ho umístíme do své domácí složky (/home/xname).
  2. Připojíme se přes SSH k našemu serveru a jako administrátoři (sudo -i) zadáme mv /home/xname/authorized_keys /home/tester/.ssh (kde xname je naše xname), čímž přesuneme soubor authorized_keys do skryté složky .ssh v domácí složce uživatele tester.
  3. Protože jsme však původně soubor kopírovali na server jako my, jsme vlastníci i skupina souboru my, takže musíme soubor authorized_keys dát uživateli tester.

    Zadáme chown tester:tester /home/tester/.ssh/authorized_keys.
  4. Stejné vlastnictví musí mít i složka .ssh (to jsme již příkazem chown tester:tester /home/tester/.ssh vyřešili při vytváření této složky v předchozím návodu na přidání účtu testera).
  5. Pokud je klíč v souboru authorized_keys správný, bude se nyní moct uživatel tester přihlásit na náš server (má-li v programu pageant.exe načtený svůj privátní klíč).

Testování serveru nástrojem Lynis

  1. Lynis nejprve nainstalujeme. Jako administrátoři (sudo -i) zadáme apt-get install lynis a instalaci potvrdíme stiskem Y.
  2. Po dokončení instalace zadáme lynis -c -Q a počkáme na dokončení testování.
    
    ...
    
    ================================================================================
    
      Lynis Scanner (details):
    
    
    
      Hardening index : 70 [##############      ]
    
      Tests performed : 190
    
      Plugins enabled : 0
    
    
    
      Lynis Modules:
    
      - Heuristics Check [NA] - Security Audit [V] - Vulnerability Scan [V]
    
    
    
      Compliance Checks:
    
      - HIPAA [NA] - PCI [NA] - SOx [NA]
    
    
    
      Files:
    
      - Test and debug information      : /var/log/lynis.log
    
      - Report data                     : /var/log/lynis-report.dat
    
    ================================================================================
    
      Notice: Lynis update available
    
      Current version : 163    Latest version : 200
    
    ================================================================================
    
      Tip: Disable all tests which are not relevant or are too strict for the
    
           purpose of this particular machine. This will remove unwanted suggestions
    
           and also boost the hardening index. Each test should be properly analyzed
    
           to see if the related risks can be accepted, before disabling the test.
    
    ================================================================================
    
      Lynis 1.6.3
    
      Copyright 2007-2014 - Michael Boelen, http://cisofy.com
    
      Enterprise support and plugins available via CISOfy - http://cisofy.com
    
    ================================================================================
    
    
  3. Na konci výpisu najdeme hodnotu Hardening index. V našem případě je tato hodnota 70, což je dostačující. Podrobné výsledky testu jsou v souboru /var/log/lynis.log (můžeme si ho přečíst například zadáním less /var/log/lynis.log).

Před obhajobou

Logování systémových zpráv na centrální server

  1. Na našem serveru nakonfigurujeme program rsyslog tak, aby odesílal systémové zprávy na server 146.102.42.40 přes port 514.

    Jako administrátoři (sudo -i) otevřeme konfigurační soubor /etc/rsyslog.conf, zadáme nano /etc/rsyslog.conf.
  2. Na úplný konec souboru přidáme řádek *.info @@146.102.42.40:514, poté editor ukončíme a soubor uložíme (Ctrl+X, Y a Enter).
  3. Restartujeme rsyslog, zadáme service rsyslog restart.
  4. Náš server nyní loguje systémové zprávy na centrální server.

Zobrazení Warning banneru před přihlášením

  1. Zobrazení banneru nejprve povolíme v konfiguračním souboru /etc/ssh/sshd_config. Jako administrátoři (sudo -i) zadáme nano /etc/ssh/sshd_config.
  2. V souboru sshd_config najdeme řádek #Banner /etc/issue.net a odkomentujeme ho (odstraníme #). Výsledný řádek bude Banner /etc/issue.net. Editor ukončíme a soubor uložíme (Ctrl+X, Y a Enter).
  3. Do souboru /etc/issue.net nyní vložíme text, který se má zobrazit. Zadáme nano /etc/issue.net. V souboru už bude text Debian GNU/Linux 8, který můžeme klidně odstranit. Obsah souboru nahradíme například následujícím textem (e-mail změníme za náš):
    
     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
     Pripojujete se na vnitrni server Vysoke skoly ekonomicke v Praze.
    
     Je zde povolen pristup vyhradne autorizovanym osobam a sitova
    
     aktivita je monitorovana. V pripade nejasnosti ci problemu nas
    
     prosim kontaktujte na e-mailu xname00@vse.cz.
    
    
    
     You are connecting to the internal server of the UoE in Prague.
    
     Only authorized persons are allowed to access and the net activity
    
     is monitored. In cases of problems, please contact xname00@vse.cz.
    
     +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    
    
  4. Editor ukončíme a soubor uložíme (Ctrl+X, Y a Enter).
  5. Zadáme /etc/init.d/ssh restart. Nyní se při každém přihlášení k našemu serveru do konzole vypíše text ze souboru /etc/issue.net.

Vypnutí služby dbus

  1. Jako administrátoři (sudo -i) službu dbus nejprve zastavíme. Zadáme systemctl stop dbus.service.
  2. Poté ji zakážeme i po spuštění. Zadáme update-rc.d dbus disable.
  3. Podíváme se, že je služba zakázána. Jdeme do adresáře /etc/rc2.d (zadáme cd /etc/rc2.d) a vypíšeme si jeho obsah (zadáme ls -l).
  4. Měli bychom vidět, že služba dbus má v názvu jejího symbolického linku na začátku písmeno K. Uvidíme tento řádek: lrwxrwxrwx 1 root root 14 May 23 22:38 K01dbus -> ../init.d/dbus

Automatické instalace bezpečnostních aktualizací

  1. Jako administrátoři (sudo -i) nainstalujeme balíček unattended-upgrades, zadáme apt-get install unattended-upgrades (dotazy při instalaci potvrdíme zadáním Y).
  2. Automatické aktualizace nyní nakonfigurujeme pomocí průvodce, zadáme dpkg-reconfigure unattended-upgrades.
    
      ┌───────────────────┤ Configuring unattended-upgrades ├───────────────────┐
    
      │                                                                         │
    
      │ Applying updates on a frequent basis is an important part of keeping    │
    
      │ systems secure. By default, updates need to be applied manually using   │
    
      │ package management tools. Alternatively, you can choose to have this    │
    
      │ system automatically download and install security updates.             │
    
      │                                                                         │
    
      │ Automatically download and install stable updates?                      │
    
      │                                                                         │
    
      │                    <Yes>                       <No>                     │
    
      │                                                                         │
    
      └─────────────────────────────────────────────────────────────────────────┘
    
    
  3. Na Automatically download and install stable updates? odpovíme <Yes>. Vytvoří se konfigurační soubor /etc/apt/apt.conf.d/20auto-upgrades.
  4. Nový konfigurační soubor si otevřeme, zadáme nano /etc/apt/apt.conf.d/20auto-upgrades. Soubor už bude obsahovat dva řádky.

    Řádek APT::Periodic::Update-Package-Lists "1"; říká, že se mají každý den stáhnout nové informace o balíčcích.
    Řádek APT::Periodic::Unattended-Upgrade "1"; říká, že se mají každý den stáhnout aktualizace balíčků.
  5. Do právě editovaného souboru přidáme ještě řádek APT::Periodic::AutocleanInterval "7"; pro automatické mazání nepotřebných souborů každých 7 dní. Editor ukončíme a soubor uložíme (Ctrl+X, Y a Enter).
  6. Podrobné nastavení aktualizací včetně vysvětlivek je v souboru /etc/apt/apt.conf.d/50unattended-upgrades. Defaultně jsou v tomto souboru skoro všechny řádky zakomentované, jediný defaultně platný řádek pod Unattended-Upgrade::Origins-Pattern { je "origin=Debian,archive=${distro_codename},label=Debian-Security";, který říká, že se budou automaticky stahovat a instalovat pouze bezpečnostní aktualizace pro náš systém, což pro účely semestrální práce stačí, takže s tímto souborem nemusíme nic dělat.

    Poznámka: V souboru 50unattended-upgrades lze dále odkomentováním a editací příslušných řádků nastavit například automatickou aktualizaci i dalších balíčků (ne jen bezpečnostních), automatické odesílání hlášení e-mailem po aktualizaci nebo při chybě, automatickou odinstalaci již nepotřebných balíčků, provedení automatického restartu (pokud je to po aktualizaci třeba), limit rychlosti pro stahování aktualizací a další.
  7. Záznamy o automaticky provedených aktualizacích se zaznamenávají do souboru /var/log/apt/history.log, který si můžeme například zadáním cat /var/log/apt/history.log vypsat.

Domů

Toto jsou soukromé studijní materiály. Všechny návody jsou poskytovány bez jakékoliv záruky. Všechny postupy provádíte na vlastní nebezpečí.