NTP podešavanje na Linuxu (CentOS/Ubuntu)


NTP podešavanje na Linuxu (CentOS/Ubuntu)

Opšte informacije o NTP-u

Pre nego što napišemo korake za NTP podešavanje na Linuxu (CentOS-Ubuntu) nekoliko reči o NTP-u (Network Time Protocol). NTP je mrežni protokol za sinhronizaciju između računarskih sistema preko paketa sa promenljivom latencijom podataka. U operaciji od 1985, NTP je jedan od najstarijih Internet protokola u upotrebi. NTP sinhronizuje sve učestvujuće sisteme (servere) u okviru nekoliko milisekundi od definisane vremenske zone (tj. sistemski sat sa eksternim izvorom od poverenja) i relativno je kritičan za mnoge servise na mreži: distribuirane sisteme, logere, balansere, itd. Za više detalja o protokolu, pogledaje RFC 5905 NTPv4 Specification (IETF).

NTPd konstantno podešava, odnosno sinhronizuje vreme. Iznenadna promena vremena može biti problematična za mnoge servise, pa NTPd u suštini ubrzava ili usporava dužinu trajanja jedne sekunde kako bi postepeno sinhronizovao vreme (preporučeni način ispravljanja). NTPd regularno proverava postavljene vremenske servere, obično u intervalu između 64 i 1024 sekunde (po podrazumevanim podešavanjima) u zavisnosti od stabilnosti sata, kako lokalnog tako i udaljenog sistema.

Za dobru listu izvora koje možete iskoristiti za sinhronizaciju, pogledajte NTP Pool Project.

NTP vremenski servis se oslanja na UDP port 123.

Lokacija konfiguracionog fajla: /etc/ntp.conf

NTP podešavanje na Linuxu

Najpre instalirajte NTP.

CentOS:

yum install ntp ntpdata

Ubuntu:

sudo apt-get install ntp

Ostatak podešavanja je sličan na svim sistemima. Dodajte servere u /etc/ntp.conf

# Upotrebite javne servere sa pool.ntp.org project.
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

Slobodno zamenite servere sa onima koje ste odabrali. Opcija iburst (preporučena od strane NTP Pool-a) salje „burst“ od 8 paketa umesto 1, u slučaju da je server nedostupan. Opcija burst se može okarakterisati kao napadna (salje 8 paketa prilikom svakog „pool“ intervala, sinhronizacije), pa je izbegavajte.

NTP Ranjivost

Svojstvo monlist unutar ntp_request.c u ntpd/NTP pre verzija 4.2.7p26 omogućava napadačima da izazovu DoS (Denial of Service, Traffic amplification). Proverite:

ntpdc -n -c monlist localhost

Ukoliko vidite nešto poput:

ntpdc: read: Connection refused

Sve je u redu, ali ukoliko vidite listu adresa servera:

remote address port local address count m ver rstr avgint lstint
===============================================================================
...

Vaš server reaguje na MONLIST napad. Da biste sprečili ovako nešto, dodaje sleće linije u /etc/ntp.conf

# Podrazumevano, razmenite vreme sa svima, ali ne dozvoljavajte konfiguraciju
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
disable monitor

Kao i uvek, obratite pažnju na sigurnost i pratite NTP ranjivosti.

ntpd koristi restrict komandu za kontrolu pristupa. Komanda restrict podrazumevano dozvoljava pristup svima(“all”), a zatim primenjuje navedene restrikcije. Prema tome, podrazumevano svi imaju neograničen pristup. Ukoliko nije potrebno da NTP server odgovara na javnoj IP adresi (konfiguracija), dodajte:

restrict 127.0.0.1
restrict ::1

Napomena: ntpd podržava IPv6. Komande koje sadrže IPv4 adrese se opciono označavaju sa „-4“ (IPv6 sa „-6“). Ukoliko Vaš server podržava IPv6 a niste toga svesni, može doći do propusta ostavljajući IPv6 bez restrikcija pristupa (otvoren svima).  U većini nedavnih htpd verzija sintaksa je izmenjena, tako da se tip adrese automatski detektuje. U svakom slučaju, vredno je pomena. Obratite pažnju i na takve stvari.

NTP parametri konfiguracionong fajla

  • kod limited

Opcija kod označava da će “Kiss-o’-death” paket biti poslat u cilju redukovanja neželjenih upita. Ukoliko postavite samo kod, ništa se neće desiti (ignorisano) i nema ograničenja. Ukoliko postavite samo limited, ograničenje saobraćaja/paketa je aktivno (prekomerni upiti će biti odbačeni, ali KoD odgovori neće biti poslani). Ukoliko postavite i kod i limited (ponekad će prekomerni upiti biti odbačeni, a ponekad će KoD biti poslat). Koristite discard komandu da biste fino podesili ograničenja i mru maxmem za kontrolu količine memorije koju algoritam koristi.

  • nomodify – zabranjuje bilo kakve promene konfiguracije
  • notrap – sprečava zamke ntpdc protokol kontrolnih poruka („trap“ – podsistem ntpdq prokola koji je namenjen za upotrebi udaljenih loging programa)
  • nopeer – ne dozvoljava formiranje peer asocijacije
  • noquery – sprečava odgovore na ntpq and ntpdc upite, ali ne i na upite za vreme

U ovom uputstvu za NTP podešavanje na Linuxu nećemo ići u previše u detalje, pokrićemo samo osnovne segmente. Ima više nego dovoljno parametara (flegova) da se igrate sa njima, mi ćemo ih za sada preskočiti.

Završnica

Na kraju je potrebno da omogućite servis:

chkconfig ntpd on

U zavisnosti od OS/okruženja, pokrenite NTP (ili ga restartuje ukoliko je već aktivan):

/etc/init.d/ntpd restart
sudo systemctl restart ntp.service

Upotrebite klijent da izlistate peer-ove:

ntpq -p

NTP podešavanje na linuxu

Detalji – kolona

  • remote – udaljeni server sa kojim želite da sinhronizujete vaš sat
  • refid – upstream stratum na udaljeni server. Za stratum 1 servere, ovo će biti izvor stratuma 0.
  • st – stratum nivo, od 0 do 16.
  • – tip konekcije: „u“ za unicast ili manycast, „b“ za broadcast ili multicast, „l“ za lokalni referentni sat, „s“ za simetrični peer, „A“ za manycast server, „B“ za broadcast server, ili „M“ za multicast server
  • when – poslednji put kada je server bio upitan za vreme .
    • Podrazumevano: sekunde
    • „m“ za minute
    • „h“ za sate
    • „d“ za dane
  • poll – Koliko često će server biti upitan za vreme, od min. 16 sekundi do maks. od 36 sati, takođe može biti prikazan kao vrednost stepena 2. Obično je između 64 i 1024 sekunde.
  • reach – 8-bitni levi pomeraj oktalne vrednosti koji pokazuje nivo uspešnost ili neuspešnosti komunikacije sa udaljenim serverom (On success – bit je postavljen, On Failure – bit nije postavljen. 377 je najviša vrednost)
  • delay – pokazuje okvirno vreme/latenciju paketa (RTT – round trip time) komunikacije vašeg sistema i udaljenog servera (u ms).
  • offset – korišćenje srednjeg kvadratnog korena, pokazuje koliko je vaš sat van nesinhronizovan u odnosu na udaljeni server. Može biti pozitivan ili negativan (takođe u ms)
  • jitter – pokazuje devijaciju srednjeg kvadratnog korena vašeg pomeraja/offset-a (takođe u ms, ali apsolutna vrednost)

Detalji – red

  • “ “ Odbačen kao nevalidan. Razlog može biti nemogućnost komunikacije sa udaljenim serverom (nije online), ovaj vremenski izvor je „.LOCL.“ refid izvor vremena, visok stratum server, ili udaljeni server koristi trenutni sistem kao NTP server
  • x“ Odbačen od strane algoritma preseka (intersection algorithm)
  • .“ Odbačen zbog preliva tabele (table overflow) – (not used).
  • -“ Odbačen Dismissed by the cluster algorithm.
  • +“ Uključen u algoritam kombinovanja (dobar kandidat ukoliko se trenutni server sa kojim se sinhronizujemo odbaci iz nekog razloga)
  • #“ Dobar udaljeni server koji se može upotrebiti kao alternativni backup. Prikazuje se samo ukoliko imate više od 10 servera
  • *“ Trenutni peer sistem. Ovo markira udaljeni server kao izvor vremena sa kojim se sinhronizuje sistemski sat
  • o“ Pulse per second (PPS) peer (kodovi „o“ i „*“ se ne prikazuju u isto vreme)

Detalji kolone/reda preuzeti sa pthree.org.

NTP podešavanje na linuxu, završeno..

Stvari na kojima se može raditi: