<filename>dns/lab3-zadani.tex<gh_stars>0

\section*{Cíle laboratoře}
\begin{itemize}
  \item Systém DNS.
  \item Zabezpečení DNSSEC.
\end{itemize}

\section*{Základní instrukce}
\begin{itemize}
  \item Přihlaste se do OS CentOS (F3), user/password {\tt user}/{\tt user4lab}.
  \item Otevřete si příkazovou řádku pro uživatele {\tt user}.
  \item Otevřete si příkazovou řádku pro uživatele {\tt root} příkazem {\tt su}
    (switch user).
  \item V případě potřeby si otevřete další terminál v novém okně.
  \item Pro editaci konfiguračních souborů použijte libovolný editor (např.
    nano, vim, gedit).
  \item Pracujte ve dvojicích, zkontrolujte, že máte počítač propojen
    přímým kabelem s přístupovým přepínačem (rozhraní enp2s0, zdířka E na patch panelu).
\end{itemize}

\section*{Úkoly}
\section{Konfigurace DNS serveru}
\begin{enumerate}

  \item Pracujte ve dvojicích. Jeden z dvojice bude konfigurovat server (PC A)
    a druhý počítač bude mít roli klienta (PC B). Propojte rozhraní enp4s1 (zdířka
    D na patch panelu) mezi počítači ve dvojici křížovým kabelem.
  \item Nastavte statické IP adresy na rozhraní enp4s1 vašich počítačů pomocí {\tt 
    ip addr}. Otestujte konektivitu příkazem {\tt ping}. Pokud konektivita nefunguje,
    ověřte nastavení IP adres {\tt ip a} a zamyslete se, co je špatně.
  \item Upravte konfigurační soubor {\tt /etc/named.conf} (parametr
    {\tt listen-on} v~sekci {\tt options}) tak, aby
    PC A naslouchalo i na adrese, která mu byla přiřazena staticky na rozhraní enp4s1.
    Inspirovat se můžete již uvedeným paramterem {\tt listen-on-v6}, případně v
    manuálových stránkách. Dále nastavte {\tt allow-query} na {\tt any}.
  \item Na PC A rozšiřte konfiguraci DNS serveru tak, aby obsluhoval požadavky pro Vámi
    zvolenou doménu, např. {\tt isa.cz}. Doména bude obsahovat:
    \begin{itemize}
      \item Nameserver pojmenovaný {\tt server} (záznam typu NS).
      \item Záznam typu A pro {\tt server}.
      \item Záznam typu A pro jméno {\tt pcb}, který odkazuje na IP adresu
        počítače PC B.
      \item Záznam typu CNAME pro jméno {\tt pca} ukazující na {\tt server}.
    \end{itemize}
    Inzerujte platnost vámi zasílaných záznamů 1 hodina.
    Jako základ zónového souboru pro vaší doménu můžete použít soubor 
    {\tt /root/isa3/template.dns.zone}.
    Needitujte však soubor přímo, ale zkopírujte jej do {\tt /var/named}, 
    nezapomeňte zaregistrovat zóny v~souboru \linebreak{\tt /etc/named.conf} 
    (potřebné informace jsou k dispozici v~manuálu v~kapitole 6). 
  \item V~případě zájmu nakonfigurujte pro doménu překlad na adresy IPv6
    (záznamy AAAA).
  \item Nakonfigurujte reverzní překlad. Jako základ
    zónového souboru s reverzní zónou můžete použít např. {\tt /root/isa3/db.127}.
    Zkopírujte soubor do {\tt /var/named/}, upravte jej a přidejte do
    souboru {\tt named.conf.local}.
  \item Spusťte DNS server příkazem {\tt systemctl start named.service}.
    Příkazem {\tt systemctl status named} ověřte, zda byla služba správně spuštěna.
    Případné chyby týkající se chybějící konektivity pomocí protokolu IPv6 ignorujte.
  \item Přidejte konfigurační soubor {\tt /etc/dhcp/dhclient-enp2s0.conf} a nastavte na obou počítačích
    použití vlastního serveru DNS běžícího na PC A, do souboru přidejte řádek \\
    {\tt prepend domain-name-servers 192.168.X.X;} \\ 
    Na obou počítačích restartujte síťování: {\tt systemctl restart network.service}.
    Ověřte nastavení IP adres a obsah souboru {\tt /etc/resolv.conf}.
  \item Proveďte {\tt iptables -F INPUT}, {\tt iptables -F OUTPUT} a {\tt iptables -F FORWARD}
  \item Ověřte, že PC A používá pro překlad lokální DNS server ({\tt dig
    localhost}). Adresu dotazovaného serveru udává položka {\em SERVER} v
    poslední části odpovědi.
  \item Ověřte, že PC B používá pro překlad lokální DNS server a dostává od něj odpověď.
  \item Ověřte, zda lze z obou počítačů přeložit dopředné i zpětné záznamy.
  \item {\bf Pochlubte se se svými výsledky cvičícímu}.
  \item Odchyťte si komunikaci v rámci DNS na obou počítačích programem
    {\tt wireshark}. Analyzujte si jednotlivé položky a porovnejte je s výpisem
    programu {\tt dig}.

\end{enumerate}

\section{Jednoduchý útok na DNS}

\begin{enumerate}
  \item Na PC B spusťte prohlížeč Firefox. Zobrazte si webové stánky v
    doménách {\tt www.fit.vutbr.cz} a {\tt www.seznam.cz}.

  \item Na PC A vytvořte zónové soubory pro domény {\tt fit.vutbr.cz} a {\tt
    seznam.cz}. Nastavte IP adresu počítače {\tt www} v obou doménách na adresu
    PC A. Zónové soubory najdete připraveny ve složce {\tt /root/isa3}. Zónové
    soubory přidejte do souboru {\tt /etc/named.conf} a restartujte
    {\tt named}.

  \item Na PC A se v příkazové řádce přesuňte do adresáře {\tt /root/isa3}.
    Spusťte zde jednoduchý webový server příkazem {\tt python -m
    SimpleHTTPServer 80}.

  \item Na PC B ověřte, že se doménová jména {\tt www.seznam.cz} a {\tt
    www.fit.vutbr.cz} překládají na IP adresu PC A.

  \item Na PC B si zobrazte webové prezentace v doménách {\tt http://www.fit.vutbr.cz}
    a \linebreak{\tt http://www.seznam.cz}. Všimněte si zámku v levé části adresního řádku.

\end{enumerate}

\section{Zabezpečení DNS -- DNSSEC}

\begin{enumerate}

  \item Pomocí nástroje {\tt dnssec-keygen} vygenerujte Key Signing Key (KSK) a Zone Signing Key. Zkontrolujte, že
    jste vytvořili \textbf{dva} páry klíčů.

  \item Přidejte záznamy typu DNSKEY do zónového souboru (podle uvážení přímo,
    či pomocí direktivy \verb|$INCLUDE|).

  \item Podepište zónový soubor příkazem {\tt dnssec-signzone -o isa.cz isa.cz.zone}.

  \item Restartujte {\tt named}.
  
  \item Upravte konfiguraci {\tt /etc/named.conf} tak, aby se jako zónový
    soubor použil soubor obsahující podepsané záznamy.

  \item Na PC B si pomocí příkazu {\tt dig +dnssec DNSKEY <doména> @<adresa PC A>} vyžádejte obsah záznamů
    DNSKEY. To stejné prověďte pro RRSIG.

\end{enumerate}


\section{Ukončení práce v laboratoři}
\begin{itemize}
  \item Počítač vypněte dávkou {\tt /root/isa3/clean}.
\end{itemize}
