Nesprávný čas na Ubuntu nebo Debianu – problémy se synchronizací času NTP. Základní nastavení serveru Debian po instalaci Debianu nastavení času

Je důležité udržovat na serveru více či méně přesný čas. Aby bylo pohodlné číst protokoly, aby váš server neposílal ostatním dopisy z minulosti nebo z budoucnosti, takže... na tom nezáleží - je to jen důležité a to je vše.
Kvůli různým závadám, chybám v hardwaru, cyklům napájení se může čas na serveru zpožďovat nebo spěchat vzhledem k atomovému času. Obvykle - ne více než sekundu za den, v praxi - sekundu za měsíc, nebo dokonce méně. Špatně fungující hardware ale dokáže ztrácet čas mnohem více (obecně platí, že silné výkyvy v čase jsou důvodem k zamyšlení nad zdravím hardwaru).
V Linuxu jsou dva oblíbené způsoby synchronizace času – ntpdate pomocí cronu, nebo neustále spuštěné ntpd. Můžete si vybrat kteroukoli z nich, budu psát o obou. Ale za sebe stále doporučuji používat ntpdate podle koruny, zvláště pokud pro vás není příliš kritické neustále udržovat čas na serveru s chybou menší než 0,1 s.
Vyskytl se problém s ntpd, když zranitelnost v něm umožnila použít ntpd servery k provedení udp amplifikačního útoku (když vám malý paket odeslaný na váš server umožnil vygenerovat velký udp paket směrem k napadenému serveru někoho jiného) - http ://habrahabr.ru /post/209438/
Ta zranitelnost byla samozřejmě opravena (a psali, jak z ní uniknout bez aktualizací ntpd), ale kde je záruka, že žádné podobné problémy nezůstaly? A opět, ntpd stále funguje přes udp a útoky podobného typu jsou možné, i když bez velkého nárůstu provozu (ale to vám umožní skrýt útočníka a vystavit váš server zneužití). Mimochodem, narazil jsem na skutečnost, že ntpd, vestavěný do modulu ipmi serveru, byl náchylný k tomuto útoku a bavilo mě otravovat mé sousedy v zemi =)
Pokud tedy nejste připraveni neustále číst bezpečnostní bulletiny, sledovat aktualizace a tak dále, neměli byste ntpd instalovat.
Takže, první metoda: spustit ntpdate jednou denně podle koruny.
Odstraníme ntpd, pokud existuje:

root@server:~# apt-get remove --purge ntpd

Nastavit ntpdate:

root@server:~# apt-get instalace ntpdate

A vytvořte soubor /etc/cron.d/ntpdate s následujícím obsahem:

0 6 * * * root ntpdate ntp.ubuntu.com 1>/dev/null 2>&1

Nyní každý den v 6:00 (sami si nastavte čas a frekvenci) budou hodiny aktualizovány.

Druhá metoda: nptd.
Musíme to dát opačně:

root@server:~# apt-get install ntpd

A napište do config /etc/ntpd.conf víceméně správná konfigurace:

zakázat autorizaci
deaktivovat statistiky
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

Poté jej restartujeme:

root@server:~# /etc/init.d/ntp restartujte

To je vše, nyní jsou naše hodinky upraveny v reálném čase a synchronizovány s poolem ntp serverů.

Přesný čas na počítači slouží nejen k tomu, aby si člověk ověřil datum a čas, ale plní i mnoho dalších důležitých úkolů. Zkuste například nastavit čas o několik hodin zpět nebo se vrátit v čase zadáním roku 19xx v nastavení. Nyní přejděte na google.com s tímto datem. S největší pravděpodobností budete úplné fiasko.

Ve firemním prostředí může nesprávně nastavený čas způsobit spoustu dalších chyb: od neschopnosti uživatele autentizovat se v systému až po... nemluvme o smutných věcech.

Datum a čas lze nastavit několika způsoby. Upozorňujeme, že tento proces ovlivňuje nastavení systému, a proto vyžaduje oprávnění uživatele root.

Metoda č. 1

Toto je nejjednodušší způsob. Nejvýhodnější pro začátečníky. Konfigurace se provádí pomocí průvodce v pseudografickém režimu.

Dpkg-překonfigurujte tzdata

Metoda č. 2

Téměř totožné s metodou č. 1. Jednoduché a pohodlné, ale tentokrát pouze v textovém režimu. Vše, co musíte udělat, je postupovat podle pokynů průvodce

Metoda č. 3

Jedna z utilit systemd

Timedatectl nastavit časové pásmo<название зоны>

Zobrazit dostupné zóny

Seznam časových pásem Timedatectl

Metoda č. 4

Pomocí nástroje ntpdate. Ve výchozím nastavení není tento nástroj nainstalován.

Apt nainstalovat ntp ntpdate

Přidejte ntp server do konfiguračního souboru /etc/ntp.conf, vyhledejte řádky začínající na pool. Další podrobnosti o syntaxi tohoto souboru man ntp.conf

Zastavme službu síťového času pro aktualizaci

Služba ntp stop

Příjem dat z ntp serveru

Ntpdate -s<адрес ntp-сервера>

Spuštění služby zpět

Spuštění služby ntp

Metoda č. 5

Ruční nastavení. Do souboru /etc/timezone zapište požadované časové pásmo, například Europe/Moscow

Echo Europe/Moscow > /etc/timezone

Přepíšeme údaje o časovém pásmu.

Ln -sf /usr/share/zoneinfo/Europe/Moskva /etc/localtime

Příjem dat z ntp serveru

Na svých webových serverech používám operační systém Debian GNU/Linux. Když byla v létě 2017 vydána verze 9 Stretch, byl jsem rád, že pro ni bylo v repozitářích k dispozici PHP 7, které, jak víte, funguje rychleji než PHP 5.

V tomto článku ukážu, že nastavení času na Debianu 9 se také zlepšilo, nemusíte stahovat ani instalovat nic dalšího, zejména démona ntp nebo utilitu ntpdate. Vše je perfektně nakonfigurováno a funguje na standardní sadě softwaru Debian 9 díky aktualizované verzi systemd, která má samostatnou službu zodpovědnou za synchronizaci systémového času pomocí protokolu NTP.

Jak nastavit čas na Debianu 9

Nejprve se musíte rozhodnout pro své časové pásmo a nastavit ho, u mě to vypadá takto:

# timedatectl nastavit časové pásmo Evropa/Volgograd

Poté musíte soubor upravit /etc/systemd/timesyncd.conf, označující v něm servery pro synchronizaci času, například takto:

# Tento soubor je součástí systemd. # # systemd je svobodný software; můžete jej redistribuovat a/nebo upravovat # za podmínek GNU Lesser General Public License, jak je publikována # Free Software Foundation; buď verze 2.1 licence, nebo # (podle vašeho uvážení) jakákoli pozdější verze. # # Záznamy v tomto souboru ukazují výchozí čas kompilace. # Nastavení můžete změnit úpravou tohoto souboru. # Výchozí nastavení lze obnovit jednoduchým smazáním tohoto souboru. # # Podrobnosti viz timesyncd.conf(5). NTP=ru.pool.ntp.org FallbackNTP=pool.ntp.org

Zde v možnosti NTP= jsou určeny prioritní servery pro synchronizaci času. Pokud dojde k selhání při přístupu k nim, servery uvedené v Záložní NTP=.

Po provedení změn v konfiguračním souboru je třeba restartovat službu synchronizace času:

# systemctl restart systemd-timesyncd

Stav nastavení času lze zkontrolovat pomocí následujícího příkazu:

# stav timedatectl

Výsledek níže ukazuje, že hodiny na mém serveru jsou správně nakonfigurovány a jsou synchronizovány pomocí protokolu NTP.

Místní čas: Út 2018-12-18 16:36:33 +04 Univerzální čas: Út 2018-12-18 12:36:33 UTC Čas RTC: Út 2018-12-18 12:36:33 Časové pásmo: Evropa/ Volgograd (+04, +0400) Čas sítě zapnutý: ano NTP synchronizováno: ano RTC v místním TZ: ne

Tady,
Místní čas- toto je místní čas;
Univerzální čas- Čas UTC (Coordinated Universal Time). Toto je výchozí bod pro všechna časová pásma;
RTC čas- čas v hardwarových hodinách serveru (počítače);
Časové pásmo- vaše časové pásmo;
Čas sítě zapnutý- indikuje, zda je povolen ntp klient zahrnutý v systemd;
NTP synchronizováno- hlásí, zda je čas synchronizován s ntp serverem;
RTC v místním TZ- ukazuje, jaký čas je uložen v hardwarových hodinách: místní nebo celosvětový. přičemž Ano znamená místní čas, Ne- celosvětově;

Informace pro začátečníky

Někdy jsem dotázán, kde zadávat (provádět) příkazy, které dávám?

Všechny příkazy uvedené v tomto článku musí být spuštěny v konzole serveru jako privilegovaný uživatel (root). Podepsat # (octothorp, mřížka, ostrý, hash) právě říká toto.

Program používám jako konzolového klienta pro vzdálené připojení k serverům

NTP server je docela užitečná věc, která vám umožní distribuovat „čas“ do počítačů v místní síti. To je velmi užitečné, zejména při používání programů z rodiny 1C, kterým se moc nelíbí, když se liší čas na klientech nebo na serveru. NTP server považuji za nejjednodušší a nejoblíbenější časový server v systémech nix. NTP server je teoreticky již dodáván se základní instalací systému, pro každý případ jej nainstalujeme před nastavením NTP serveru založeného na Debianu 8.

Nainstalujme NTP server:

Apt-get install ntp ntpdate

Nyní nastavíme konfigurační soubor:

Nano /etc/ntp.conf

Velmi důležité! 13. ledna 2014 se vešlo ve známost o možnosti provádět masivní DDoS útoky prostřednictvím nechráněného démona ntpd. Proto byste neměli zbytečně povolovat externí přístup k vašemu NTP serveru. V Debianu 8 je externí přístup standardně povolen, ale pokud máte jinou distribuci, měli byste ji přidat do souboru /etc/ntp.conf následující řádky:

Zakázat omezení sledování -4 výchozí kod nomodify notrap nopeer noquery omezení -6 výchozí kod nomodify notrap nopeer omezení noquery -4 127.0.0.1 omezení -6::1

Příklad výpisu konfiguračního souboru s ruskými komentáři:

#Seznam serverů pro synchronizaci času server 0.ru.pool.ntp.org iburst preferuji #Tento server bude hlavní pro synchronizační server 1.ru.pool.ntp.org iburst server 2.ru.pool.ntp.org iburst server 3. ru.pool.ntp.org iburst #Zakázat monitorování zakázat monitor #Offset soubor driftfile /var/db/ntpd.drift #NTP server log soubor logfile /var/log/ntpd.log #Povolit změnu času našeho server přes místní rozhraní omezit 127.0 .0.1 #Povolme časové změny z námi vybraných serverů omezovat 0.ru.pool.ntp.org noquery notrap omezovat 1.ru.pool.ntp.org noquery notrap omezovat 2.ru.pool.ntp .org noquery notrap omezit 3.ru .pool.ntp.org noquery notrap #Nakonec povolme přístup k časovému serveru pouze z naší místní sítě omezit 192.168.0.0 maska ​​255.255.255.0 nomodify notrap nopeer #Pokud je to nutné, povolíme přístup odkudkoli. (To také umožní přístup k vašemu NTP serveru z Internetu, pokud je k němu server připojen a přístup k němu je otevřený) #restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap nopeer

Vyberte fond serverů z časového pásma.

Nyní uložíme konfigurační soubor a restartujeme našeho démona:

Restart služby ntp

Zkontrolujte soubor protokolu na chyby, pokud je vše v pořádku, pak stačí počkat 10-15 minut, než se server automaticky synchronizuje s vybranými servery. Chcete-li to zkontrolovat, zadejte:

Protějšky Ntpq -c

Znak + před adresou označuje server, se kterým proběhla poslední synchronizace. Můžete také synchronizovat sami se sebou:

Ntpdate -q localhost

nebo synchronizovat s vybraným serverem:

Ntpdate server_address #Například 0.ru.pool.ntp.org

Pokud potřebuješ změnit časové pásmo, pak musíte nahradit soubor /etc/localtime, jednoduše smažte starý soubor a vyberte požadovanou zónu z adresáře /usr/share/zoneinfo/. Moje zóna je například Jekatěrinburg a změním ji na Moskvu:

Rm /etc/localtime ln -s /usr/share/zoneinfo/Europe/Moskva /etc/localtime

Synchronizace Windows se serverem NTP v systému Linux

Pokud má váš NTP server vrstvu nižší než 2 nebo 3, pak se počítače se systémem Windows nebudou synchronizovat s vaším linuxovým NTP serverem. Ale i to se dá celkem snadno vyřešit. Chcete-li synchronizovat systémy Windows prostřednictvím serveru NTP nainstalovaného v systému Linux (Debian, Ubuntu atd.), můžete použít příkazový řádek:

Čistý čas \\IP_ADDRESS_SERVER_NTP /set /yes

A pracovní stanice Windows se synchronizuje s vaším NTP serverem v systému Linux. Případně vytvořte soubor bat a přidejte jej do spuštění Windows. Poté dojde k synchronizaci času po každém spuštění OS.

|

Přesné načasování je velmi důležitým aspektem správného fungování mnoha moderních programů. V důsledku nesprávného času může dojít k chybám na serveru a poškození dat (například při aktualizaci databáze nebo protokolování).

V Debianu 9 je synchronizace času vestavěna a standardně povolena; je zpracován standardním serverem ntpd poskytovaným balíčkem ntp. Tato příručka vás seznámí se základními příkazy pro správu času, naučí vás kontrolovat stav ntpd a instalovat další síťové časové služby.

Požadavky

K práci budete potřebovat server Debian 9 a uživatele s přístupem k sudo (manuál je nutné vyplnit v relaci tohoto uživatele). Najdete zde všechny potřebné pokyny k nastavení.

Základní příkazy pro správu času

date je hlavním příkazem pro určení času na serveru. Každý uživatel jej může použít ke zjištění data a času:

datum
Út 4. září 17:51:49 UTC 2018

Servery obvykle ve výchozím nastavení používají časové pásmo UTC (Coordinated Universal Time) – toto je koordinovaný světový čas. UTC konzistentně nastavuje čas na serverech a minimalizuje chyby, pokud jsou servery infrastruktury umístěny v různých časových pásmech.

Chcete-li změnit časové pásmo, použijte příkaz timedatectl.

Vyžádejte si seznam dostupných pásů:

timedatectl seznam-časových pásem

V seznamu se můžete pohybovat dolů pomocí mezerníku a nahoru pomocí b. Vyberte své časové pásmo, zapište si ho a stisknutím q zavřete seznam.

Nyní nastavte časové pásmo pomocí timedatectl set-timezone. Použijte následující příkaz a zadejte požadované časové pásmo:

sudo timedatectl set-timezone America/New_York

Poznámka: Nahraďte America/New_York požadovaným časovým pásmem.

Ujistěte se, že se pás změnil:

datum
Út 4. září 13:52:57 EDT 2018

Zkratka časového pásma bude odrážet novou hodnotu.

stav ntpd

Ve výchozím nastavení používá Debian 9 standardní server ntpd k synchronizaci času se skupinou externích serverů. Jeho stav můžete zkontrolovat pomocí systemctl:

sudo systemctl status ntp
ntp.service - LSB: Spusťte démona NTP
Načteno: načteno (/etc/init.d/ntp; vygenerováno; přednastaveno dodavatelem: povoleno)
Aktivní: aktivní (běží) od Út 2018-09-04 15:07:03 EDT; před 30 min
Dokumenty: man:systemd-sysv-generator(8)
Proces: 876 ExecStart=/etc/init.d/ntp start (kód=ukončeno, stav=0/ÚSPĚCH)
Úkoly: 2 (limit: 4915)
CGroup: /system.slice/ntp.service
└─904 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 105:109
. . .

Aktivní (běžící) řádek označuje, že server běží správně. Další informace můžete získat pomocí příkazu ntpq:

ntpq -p
remote refid st t když poll reach delay offset jitter
==============================================================================
0.debian.pool.n .POOL. 16 p – 64 0 0,000 0,000 0,000
1.debian.pool.n .POOL. 16 p – 64 0 0,000 0,000 0,000
2.debian.pool.n .POOL. 16 p – 64 0 0,000 0,000 0,000
3.debian.pool.n .POOL. 16 p – 64 0 0,000 0,000 0,000
-eterna.binary.n 204.9.54.119 2 u 240 256 377 35.392 0.142 0.211
-static-96-244-9 192.168.10.254 2 u 60 256 377 10.242 1.297 2.412
+minime.fdf.net 83.157.230.212 3 u 99 256 377 24.042 0.128 0.250
*t1.time.bf1.yah 98.139.133.62 2 u 31 256 377 11.112 0.621 0.186
+x.ns.gin.ntt.ne 249.224.99.213 2 u 108 256 377 1,290 -0,073 0,132
-ord1.m-d.net 142.66.101.13 2 u 473 512 377 19.930 -1.764 0.293

ntpq je dotazovací nástroj ntpd. Příznak –p shromažďuje informace o serverech NTP, ke kterým je připojeno ntpd. Váš výstup se bude mírně lišit, ale bude zahrnovat standardní servery Debian pool a několik dalších serverů. Navázání spojení může ntpd trvat několik minut.

Přechod z ntpd na systemd-timesyncd

Chcete-li nahradit ntpd, můžete použít vestavěného démona timesyncd systému systemd. timesyncd je jednoduchá alternativa k ntpd, integrovaná s systemd. Při migraci si však uvědomte, že timesyncd nepůsobí jako časový server a pro synchronizaci systémového času používá méně sofistikované metody. Pokud používáte složité distribuované systémy v reálném čase, je lepší zůstat u ntpd.

Chcete-li přepnout na timesyncd, nejprve odstraňte ntpd.

sudo apt purge ntp

Poté spusťte timesyncd:

sudo systemctl start systemd-timesyncd

Zkontrolujte jeho stav:

stav sudo systemctl systemd-timesyncd
systemd-timesyncd.service - Synchronizace času v síti
Načteno: načteno (/lib/systemd/system/systemd-timesyncd.service; povoleno; přednastaveno dodavatelem: povoleno)
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Aktivní: aktivní (běží) od Út 2018-09-04 16:14:23 EDT; před 1s
Dokumenty: man:systemd-timesyncd.service(8)
Hlavní PID: 3399 (systemd-timesyn)
Stav: "Synchronizováno s časovým serverem 198.60.22.240:123 (0.debian.pool.ntp.org)."
Úkoly: 2 (limit: 4915)
CGroup: /system.slice/systemd-timesyncd.service
└─3399 /lib/systemd/systemd-timesyncd

Chcete-li získat informace o aktuálním vnímání času systemd, zadejte:

timedatectl
Místní čas: Út 2018-09-04 16:15:34 EDT
Univerzální čas: Út 2018-09-04 20:15:34 UTC
Čas RTC: Út 2018-09-04 20:15:33
Časové pásmo: Amerika/New_York (EDT, -0400)
Čas sítě zapnutý: ano

NTP synchronizováno: ano
RTC v místních TZ: ne

Příkaz zobrazí místní čas, univerzální čas (který může být stejný jako místní čas, pokud jste nepřepnuli z časového pásma UTC) a informace o stavu času v síti. Čas sítě zapnutý: yes označuje, že je povolena služba timesyncd, a synchronizace NTP: yes označuje, že čas byl úspěšně synchronizován.

Závěr

Nyní víte, jak spravovat systémový čas serveru Debian 9.




Horní