Nov 5, 2023

BIND DNS servis

 BIND (Berkeley Internet Name Domain) je najčešće korišćen DNS (Domain Name System) server na svetu. DNS je ključna komponenta internetskog infrastrukturnog sloja i omogućava prevodjenje ljudski čitljivih imena domena (npr. www.example.com) u IP adrese koje su neophodne za identifikaciju računara i servera na internetu.

BIND je besplatan i otvoren izvor i razvija se kao open-source projekat. Kao DNS server, BIND ima nekoliko ključnih funkcija:

  1. Prevođenje domenskih imena u IP adrese (resolving).
  2. Održavanje distribuirane baze podataka sa informacijama o domenama i njihovim IP adresama.
  3. Autorizacija i autentifikacija DNS upita i odgovora.
  4. Održavanje sigurnosnih funkcija kao što su DNSSEC (Domain Name System Security Extensions) zaštita.
  5. Omogućava konfiguraciju DNS zona i rekordima.

BIND je dostupan za različite operativne sisteme i koristi se širom sveta za različite primene, uključujući rukovanje domenima, upravljanje DNS infrastrukturom, i podršku za web hosting provajdere.

Važno je napomenuti da, iako je BIND veoma moćan, njegova konfiguracija i održavanje može biti kompleksno. Za manje zahteve, postoje i jednostavniji DNS serveri koji su lakši za postavljanje.

Instalacija i konfiguracija

Instalacija i konfiguracija BIND DNS servera može biti složena, ali evo osnovnih koraka koje treba preduzeti:

  1. Instalacija BIND-a: Prvo, morate instalirati BIND DNS server na vašem serveru. Koraci se razlikuju zavisno o distribuciji Linuxa koju koristite. Na primer, na Debian ili Ubuntu sistemu to možete uraditi sa sledećim komandama:

    sudo apt update
    sudo apt install bind9

    Na CentOS ili Red Hat sistemima, koristite yum:

    sudo yum install bind
  2. Konfiguracija BIND-a: Konfiguracija se vrši putem konfiguracionih fajlova. Osnovni konfiguracioni fajl se zove named.conf ili named.conf.options. Možete ga pronaći u direktorijumu /etc/bind/ (za Debian/Ubuntu) ili /etc/named/ (za CentOS/Red Hat).

    Ovde možete konfigurisati osnovne parametre kao što su zone, forwarders, listen adrese i mnoge druge opcije.

  3. Konfiguracija zona: Da biste mapirali domenska imena na IP adrese, morate konfigurisati DNS zone. Na primer, evo kako biste konfigurisali primarnu zonu za vašu domenu example.com:


    zone "example.com" {
        type master;
        file "/etc/bind/zones/db.example.com";
    };
    

    Ovde se koristi fajl db.example.com za definisanje rekorda u toj zoni.

  4. Kreiranje zona fajlova: Kreirajte fajlove zona za svaku definisanu zonu. Na primer, za zonu example.com, kreirajte fajl /etc/bind/zones/db.example.com sa odgovarajućim DNS rekordima.

    Primer fajla zone:

    $TTL 86400
    @   IN  SOA     ns1.example.com. admin.example.com. (
            2023102701 ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400 )     ; Negative Cache TTL
    ;
    @       IN  NS  ns1.example.com.
    @       IN  NS  ns2.example.com.
    @       IN  A   192.168.1.100
    www     IN  A   192.168.1.101
    
  5. Testiranje i pokretanje BIND-a: Pre nego što pokrenete BIND, testirajte svoju konfiguraciju na greške:

    named-checkconf /etc/bind/named.conf
    named-checkzone example.com /etc/bind/zones/db.example.com

    Ako nema grešaka, pokrenite BIND:

    sudo systemctl start bind9 # Na Debian/Ubuntu
    sudo systemctl start named # Na CentOS/Red Hat
  6. Konfiguracija automatskog pokretanja: Da biste omogućili automatsko pokretanje BIND-a pri pokretanju sistema, izvršite sledeće komande:

    sudo systemctl enable bind9 # Na Debian/Ubuntu
    sudo systemctl enable named # Na CentOS/Red Hat

Ovo su osnovni koraci za instalaciju i konfiguraciju BIND DNS servera. Dalje, možete konfigurisati dodatne opcije kao što su sigurnosne postavke, tzv. "view-ovi" i mnoge druge. Važno je obratiti pažnju na bezbednost i nadogradnju BIND servera kako biste osigurali siguran i stabilan DNS sistem.

caching-only DNS

Da biste konfigurisali samo "caching-only" DNS server koristeći BIND, možete slediti sledeće korake:

  1. Instalacija BIND-a: Prvo instalirajte BIND DNS server kao što je opisano u prethodnom odgovoru.

  2. Konfiguracija BIND-a: Konfiguracija se vrši putem named.conf datoteke. Otvorite ovu datoteku u svom omiljenom tekstualnom uređivaču. Na Debian/Ubuntu sistemima, datoteka se obično nalazi u /etc/bind/named.conf, dok se na CentOS/Red Hat sistemima može nalaziti u /etc/named.conf.

  3. Konfiguracija osnovnih postavki: Postavite osnovne parametre za "caching-only" DNS server. Evo primera kako to može izgledati:

    options {
        directory "/var/cache/bind";
        recursion yes; // Dozvoli rekuzivne upite
        allow-query { any; }; // Dozvoli upite od svih
    };
    

    Ovde se konfiguriše direktorijum za kesiranje (cache) i dozvoljava se rekuzivno traženje koje će omogućiti da vaš DNS server traži od drugih DNS servera kad nema lokalno kesiranih informacija.

  4. Konfiguracija kesiranja (caching): Konfigurišite kesiranje sa dodatnim postavkama kao što su root DNS serveri. Ovako možete omogućiti vašem DNS serveru da zapamti češće korišćene informacije:

    zone "." {
        type hint;
        file "/etc/bind/db.root";
    };
    

    Kreirajte fajl /etc/bind/db.root i dodajte informacije o root DNS serverima u njemu. Ovaj fajl možete preuzeti sa ovde i sačuvati u pomenutom direktorijumu.

  5. Zabrana rekuzivnih upita sa drugih mreža: Kako biste ograničili pristup "caching-only" DNS serveru sa drugih mreža, možete dodati sledeće:

    acl localnet {
        192.168.0.0/16;
        10.0.0.0/8;
    };
    allow-recursion { localnet; };
    allow-query { localnet; };
    

    Ovo ograničava rekuzivne upite i upite samo na određenim lokalnim mrežama.

  6. Testiranje i pokretanje BIND-a: Testirajte svoju konfiguraciju i pokrenite BIND server kako je opisano u prethodnom odgovoru.

  7. Automatsko pokretanje: Omogućite automatsko pokretanje BIND-a pri pokretanju sistema kao što je opisano ranije.

Nakon ovih koraka, vaš DNS server će biti konfigurisan kao "caching-only" DNS server i odgovaraće na upite za kesirane informacije. Obratite pažnju na sigurnosne postavke kako biste osigurali da je vaš server bezbedan i da ne može biti iskorišćen za DNS amplifikacione napade.

Forwardovanja

Konfiguracija forwardovanja (ili DNS forwarding-a) u BIND DNS serveru omogućava da DNS upiti koje vaš server ne može rešiti lokalno budu prosleđeni drugom DNS serveru, obično DNS serveru vašeg provajdera ili nekom javnom DNS serveru. Ovo je korisno ako želite da koristite lokalni DNS server za kesiranje upita, ali da za stvarna DNS rešenja oslanjate na druge servere. Evo kako to možete konfigurisati:

  1. Otvorite konfiguracionu datoteku: Otvorite konfiguracionu datoteku vašeg BIND servera (obično /etc/bind/named.conf) u tekstualnom uređivaču. Ovo možete uraditi sa superuser privilegijama ili koristeći sudo:

    sudo nano /etc/bind/named.conf
  2. Definišite zone forwardovanja: Dodajte sledeće linije unutar bloka options { } u konfiguracionoj datoteci. Ovde definišete zone forwardovanja i servere na koje će se upiti encirptovati:

    forwarders {
        8.8.8.8;  // Prvi DNS server (možete koristiti Google DNS ili neki drugi)
        8.8.4.4;  // Drugi DNS server (opciono)
    };
    
    forward only;
    

    U gornjem primeru, koristimo Google DNS servere kao forwardere. Možete koristiti i druge javne DNS servere ili DNS servere vašeg provajdera.

  3. Omogućite forwardovanje upita: Postavite forward only; kako biste omogućili samo forwardovanje upita, bez lokalnog rezolvanja. Ovo znači da će BIND server proslediti sve upite serverima navedenim u forwarders bloku, umesto da pokušava da ih rešava lokalno.

  4. Zabrana rekuzivnih upita: Da biste sprečili DNS server da vrši rekuzivne upite i pretražuje čitavu DNS hijerarhiju, dodajte sledeće:

    recursion no;

    Ovim se zabranjuju rekuzivni upiti i vaš DNS server će samo forwardovati upite drugim DNS serverima.

  5. Sačuvajte i izađite: Sačuvajte izmene i zatvorite konfiguracionu datoteku.

  6. Ponovo pokrenite BIND server: Nakon konfigurisanja forwardovanja, ponovo pokrenite BIND server kako bi se primenile izmene:

    sudo systemctl restart bind9 # Na Debian/Ubuntu

    ili

    sudo systemctl restart named # Na CentOS/Red Hat
  7. Testiranje konfiguracije: Testirajte konfiguraciju tako što ćete uputiti DNS upite putem vašeg servera i proveriti da li se upiti encirptuju i prosleđuju forwarderima.

Nakon ovih koraka, vaš BIND DNS server će forwardovati upite drugim DNS serverima umesto da ih rešava lokalno. Ovo je korisno ako želite brže i efikasnije DNS rešenje, a takođe možete koristiti lokalni BIND server za kesiranje upita i ubrzanje odgovora.

Piping i redirekcija

 Piping (cevkanje) i redirekcija su osnovni koncepti u Linuxu i Unix-sličnim operativnim sistemima koji vam omogućavaju kontrolu ulaza i izlaza za operacije putem komandne linije. Ovi koncepti se koriste za efikasno manipulisanje, obradu i upravljanje podacima u komandnoj liniji. Evo objašnjenja cevkanja i redirekcije:

Cevkanje (|): Cevkanje vam omogućava da uzmete izlaz jedne komande i koristite ga kao ulaz za drugu komandu. Karakter | se koristi za stvaranje cevke između komandi. To je moćan način za kombinovanje više komandi i izvođenje složenih zadataka.

Na primer:

komanda1 | komanda2

U ovom primeru, izlaz komande1 se koristi kao ulaz za komandu2. Možete nizati više komandi kako biste stvorili niz operacija. Svaka komanda obrađuje podatke sekvencijalno.

Redirekcija: Redirekcija je proces kontrole ulaznih i izlaznih tokova za komande. Postoje različiti simboli koji se koriste za redirekciju:

  • <: Redirektuje ulaz iz datoteke. Na primer, komanda < ulaz.txt čita podatke iz datoteke ulaz.txt kao ulaz za komandu.

  • >: Redirektuje izlaz u datoteku, prebrisavajući njen sadržaj. Na primer, komanda > izlaz.txt piše izlaz komande u datoteku izlaz.txt, prebrisavajući njen prethodni sadržaj.

  • >>: Redirektuje izlaz u datoteku, dodajući ga njenom sadržaju. Na primer, komanda >> izlaz.txt dodaje izlaz komande na kraj datoteke izlaz.txt.

  • 2>: Redirektuje izlaz grešaka (stderr) u datoteku. Na primer, komanda 2> greske.txt beleži poruke o greškama iz komande i upisuje ih u datoteku greske.txt.

  • 2>>: Redirektuje izlaz grešaka (stderr) u datoteku, dodajući ga njenom sadržaju.

  • &> ili 2>&1: Redirektuje i standardni izlaz (stdout) i izlaz grešaka (stderr) na isto mesto. Na primer, komanda &> izlaz.txt šalje i stdout i stderr u datoteku izlaz.txt.

  • |: Kao što smo već razgovarali, simbol cevke (|) povezuje izlaz jedne komande sa ulazom druge komande.

Ovi simboli za redirekciju vam omogućavaju upravljanje izvorima ulaza i odredištima izlaza za komande, omogućavajući vam da skladištite, obrađujete i analizirate podatke na različite načine.

Cevkanje i redirekcija su esencijalni za automatizaciju zadataka, obradu velikih skupova podataka i kreiranje složenih radnih tokova na Linux komandnoj liniji. Pružaju fleksibilnost i kontrolu prilikom rada sa tekstom i podacima putem komandi i skripti.

STDOUT

Standardni izlaz (engl. Standard Output), skraćeno stdout, je osnovni tok podataka koji se koristi za ispisivanje izlaznih informacija iz komandi ili programa u Linux i Unix okruženjima. Ovo je uobičajeni izlazni kanal koji se koristi za prikazivanje rezultata izvršenih komandi na ekranu korisnika.

Na primer, kada izvršite komandu kao što je ls za listanje datoteka u trenutnom direktorijumu, izlaz se šalje na standardni izlaz, koji se obično prikazuje na ekranu kako biste videli listu datoteka i direktorijuma.

Osim prikazivanja na ekranu, stdout može biti preusmeren i redirektovan na različite načine. Na primer, možete ga preusmeriti u datoteku pomoću operatora >, >> ili 2>&1 za zajednički tretman standardnog izlaza (stdout) i standardnog izlaza grešaka (stderr).

Standardni izlaz je važan za rad sa komandama i skriptama u Linuxu jer omogućava komunikaciju između komandi, čime se omogućava da rezultati jedne komande postanu ulaz za drugu. Ovo čini Linux komandnu liniju izuzetno svestranom i moćnom za automatizaciju i manipulaciju podacima.

STDERR

Standardni izlaz za greške (engl. Standard Error), skraćeno STDERR, je drugi osnovni tok podataka koji se koristi za ispisivanje grešaka ili izlaznih informacija koje ukazuju na probleme tokom izvršenja komandi ili programa u Linux i Unix okruženjima.

Kada se tok greške STDERR koristi, greške ili obaveštenja o problemima se odvajaju od redovnog izlaza (stdout), omogućavajući tako da se greške i standardni izlaz jasno razlikuju. To je korisno za praćenje i ispravljanje grešaka prilikom izvršenja komandi ili skripti.

Na primer, ako pokušate da otvorite nepostojeću datoteku u komandnoj liniji, poruka o grešci će biti ispisana na toku STDERR kako biste bili obavešteni da datoteka ne postoji.

Standardni izlaz za greške takođe može biti preusmeren i redirektovan na sličan način kao i standardni izlaz (stdout), koristeći operator 2> ili 2>> za preusmeravanje grešaka u datoteku.

Korišćenje STDERR je ključno za debagovanje i praćenje izvršenja komandi i programa, omogućavajući korisnicima da identifikuju i rešavaju probleme koji se javljaju tokom upotrebe Linux i Unix sistema.

STDIN

Standardni unos (STDIN) je jedan od osnovnih tokova podataka u Linux i Unix okruženjima. STDIN služi za unos podataka sa tastature ili drugih izvora u komandnu liniju, komande ili programe koji se izvršavaju u terminalu.

STDIN omogućava korisnicima da unesu tekstualne podatke ili druge vrste ulaza direktno u komande ili skripte. Na primer, možete koristiti STDIN za unos teksta u program koji očekuje unos podataka ili za čitanje podataka iz datoteka pomoću određenih komandi.

STDIN se obično koristi u kombinaciji sa operatorom za preusmeravanje < kako bi se unos izvršavao iz datoteke umesto sa tastature. Na primer, komanda cat < datoteka.txt koristi STDIN za čitanje sadržaja datoteke "datoteka.txt" i prikazivanje tog sadržaja na ekranu.

STDIN, zajedno sa STDOUT (standardni izlaz) i STDERR (standardni izlaz za greške), čini osnovni mehanizam za unos, izlaz i praćenje komandi i programa u Linux i Unix sistemima.


Tekstualni editori

 Linux ima mnogo tekstualnih editora dostupnih korisnicima za uređivanje tekstualnih datoteka. Evo nekoliko popularnih tekstualnih editora u Linux-u:

  1. Vi/Vim:

    • Vi je stariji tekstualni editor, dok je Vim (Vi Improved) modernizovana verzija sa naprednim mogućnostima.
    • Vim je možda najmoćniji tekstualni editor i često se koristi na serverima.
    • Za pokretanje Vi, koristi se komanda vi, dok za Vim koristite vim.
  2. Emacs:

    • Emacs je još jedan moćan tekstualni editor sa mnogo proširenja i funkcionalnosti.
    • Za pokretanje Emacsa, koristi se komanda emacs.
  3. Nano:

    • Nano je jednostavan i lak za korišćenje tekstualni editor.
    • Za pokretanje Nano, koristi se komanda nano.
  4. Gedit:

    • Gedit je popularan tekstualni editor za Linux desktop okruženja kao što su GNOME.
    • Dostupan je sa grafičkim korisničkim interfejsom, ali može se koristiti i iz terminala sa komandom gedit.
  5. Sublime Text:

    • Sublime Text je komercijalni editor sa besplatnom evaluacionom verzijom.
    • Ima bogate mogućnosti za uređivanje koda i tekstualnih datoteka.
    • Može se instalirati i koristiti na Linux sistemu.
  6. Atom:

    • Atom je besplatan i open-source tekstualni editor razvijen od strane GitHub-a.
    • Dizajniran je za programere i ima mnogo proširenja dostupnih.
  7. Visual Studio Code:

    • Visual Studio Code (VSCode) je još jedan popularan besplatan i open-source tekstualni editor koji je razvila Microsoft.
    • Ima mnogo proširenja i podržava mnoge programske jezike.
  8. Kate:

    • Kate je tekstualni editor za KDE desktop okruženje.
    • Dostupan je sa grafičkim korisničkim interfejsom, ali se može koristiti i iz terminala sa komandom kate.

Ovo su samo neki od mnogih tekstualnih editora dostupnih u Linux-u. Izbor editora zavisi od vaših potreba i ličnih preferencija.