Archiv pro rubriku: Linux

Linux mini-howto: SSH login notifikace emailem

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

SSH login notifikace emailem

Krátké a jednoduché, chcete info(oznámení) do emailu po přihlášení uživatele na SSH server? Jednoduchý script ukazuje jak na to, nejde o náhradu za komplexní systémy s logování na centrání vzdálený server, ale pro malé použití a případně další čarování s sshrc se může hodit.

Kde spouštět SSHrc script?

  • ~./ssh/rc – lokální konkrétní uživatel
  • /etc/ssh/sshrc – globálně pro všechny uživatele

SSHrc script

Napsán pro Vás jednoduchý ukázkový script v bashi, použijte ho, upravujte dle potřeby.

mail=alertemail@mojeservery.cz
user=/usr/bin/whoami
ip=/usr/bin/last | head -1 | awk '{print $3}'
#read -d " " ip <<< $SSH_CONNECTION
date=$(date "+%d.%m.%Y %Hh%M")
reverseIP=$(dig -x $ip +short)
hostname=$(hostname)

mail -s "SSH Login: $USER@$hostname" $mail <<EOF
From: root@$hostname
User: $USER
Host: $hostname
From IP: $ip
Reverse: $reverseIP
Date: $date
EOF

A to je vše! (! script opravdu není uvozen #!/bin/bash )

Na serveru musí být v provozu mail subsystém, alespoň jako stmp relay, tak aby email mohl odejít, navíc může být zpracování sshrc potlačeno konfigurací (ForceCommand, ssh -N apod.).

Užívejte moudře, mějte přehled o přístupech na Váš SSH server.

Díky za pozornost. František Havel, MOJEservery.cz

Linux mini-howto: Pigz, paralelní gzip implementace, komprimujte rychleji!

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Pigz, unpigz , paralelní gzip implementace

Proč ? V dnešní době je téměř nemožné koupit procesor s jedním jádrem, výrobci tak obcházejí problém rychlejších procesorů (výšší frekvence) díky možnosti umístění více jader do jednoho fyzického  pouzdra a přenesení problému do oblasti software.

Paralelní výpočty rozdělují složitější úlohu na vícero jednoduchých,
ty jsou často vykonávány ve vláknech, které běží škálovatelně přes
jádra procesoru.

Paralelní programování je považováno za obtížnější formu vývoje
software, nese sebou celou řadu problému, zamykání, souběh, vyloučení, paralelní zpomalení, synchronizace atd, přesto jde o klíčovou oblast zejména pro řešení simulací, potřebujeme znát odpovědi na otázky které jsou analyticky neřešitelné (např. teoretická a experimentální fyzika)

K čemu to používáme? Zpátky na zem, smrtelník a sysadmin v našem případě nasadil pigz jako rychlou náhradu za klasický gzip pro komprimaci záloh databáze MySQL, zálohuje s v noci, komprimuje se v noci a jak praví klasik čas jsou peníze.

Instalace pigz

root@havel-machine:~# apt-get install pigz

Malá ukázka, vzorová data SQL dump 868MB , komprimace provedena nad stejnou db vždy metodou fast (-1, nejrychlejší) a best (-9, nejúčinější).

 FAST  BEST
 pigz (čas)  12.1s (cpu 392%)  16.5s (cpu 396%)
 gzip (čas)  44.6s (cpu 100%)  58s (cpu 100%)

Testováno na AMD A6-3670, 4GB RAM, disk SATA 7200rpm.

Jednoduchý benchmark ukazuje rychlejší zpracování dat za použití paralelní implementace gzip a to v obou případech, rozdíly jsou na první pohled signifikantní. Jak je patrné paralelní komprimace dává smysl a dokáže významně zkrátit časy v celém zálohovacích procesu a nárůstem počtu jader zkracujete čas, navíc je možné omezit pigz na konkrétní počet jader (např. 6 jader z 8).

http://zlib.net/pigz

http://linux.die.net/man/1/pigz

Užívejte moudře, díky za pozornost. František Havel, MOJEservery.cz


Bojujete se zálohování? Nabízíme pomoc.

Nabízíme firemní i osobní zálohovací systémy, onsite i offsite zálohování, replikační systémy, katalogové zálohování, komprimace, deduplikace, verzování záloh, synchronizace lokalit, ochrana záloh, reporting a zcela bezplatně konsultaci a poradentství.

Kontaktujte nás, najdeme nejlepší řešení za skvělou cenu.

MOJEservery.cz

Linux mini-howto: Jak zabít TCP spojení s nástrojem tcpkill

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Nástroj tcpkill

Přijde čas od času k duhu, vytvořit TCP spojení je snadné a umí to každý, ale co dělat pokud chceme konkrétní spojení zabít? Trochu Nerudovská otázka: „Kam s ní“, že? Na procesy máme kill, ale co s tcp, navazané je, firewall jsem opravili a teď ho ukončeme.

Tak jednoduché to zas není, k uzavření socketu je potřeba  znát TCP ACK(Acknowlegment) a SEQ(Sequence numbers), je nutné tyto informace extrahovat z paketu spojení (odposlechnout, spoof) a zaslat TCP RST(reset).

Nástroj tcpkill funguje přesně popsaným mechanismem, syntax je shodný s nástrojem tcpdump, autorem tcpkill je Dug Song.

# tcpkill -i eth0 { expression }
# tcpkill -i eth0 port 21 // zabije odchozí spojení na port 21(FTP)
# tcpkill host 192.168.1.42 // zabije odchozí spojení na host 192.168.1.42

Hotovo!

Vypadá to jednoduše, popsaný mechanismus ukončení tcp spojení (tzv. passive, pasivní) má jeden drobný neduh, v případě tcp spojení ve stavu idle(wait, keepalive) není co ochytit (nejsou data, není co spoofovat), takové spojení se Vám tímto nástrojem nepodaří zabít.

Příště se podíváme na nástroje killcx, cutter a bude-li čas i low-level hack s netstat,lsof a kill.

Užívejte moudře, díky za pozornost. František Havel.

Konfigurace VoIP pobočkové ústředny hotel Větrov.

Realizováno,

VoIP telefonní ústředna
VoIP telefonní ústředna

 

pro zákazníka Hotel Větrov Krásná u Aše jsme ve spolupráci s firmou GTP s.r.o. Mariánské Lázně úspěšně provedli osazení a konfiguraci VoIP telefonní pobočkové ústředny, první fáze projektu předpokládala oživení ústředny s cílem realizace dialplanu vnitřních linek, registrace telefonů na pokojích pro hosty a personálu, v druhé nadcházející fázi dojde k migraci telefoních čísel a terminaci pomocí technologie SIP trunku na novou ústřednu.

VoIP ústředna v číslech

  • 25x VoIP telefon Siemens Gigaset A510IP (bezdrátový telefon – pokoje, kuchyň, office, wellness, doktor)
  • 1x VoIP telefon Grandstream GXP2160 (recepce/spojovatelka, barevný displej)
  • 1x VoIP telefonní ústředna

Děkujeme za příležitost a těšíme se na další spolupráci. MOJEservery.cz.

www-hotelvetrov-com-800

Konfigurace VoIP pobočkové ústředny Asterisk pro společnost SYSKO Tábor

Realizováno,

pro zákazníka společnost SYSKO Tábor jsme úspěšně provedli konfiguraci VoIP pobočkové ústředny Asterisk s konfigurací pro nahrávání hovorů a www rozhraním, dále provedena konfigurace VoIP trunk rozhraní a připojena dvouportová GSM brána (pro dvě SIM karty), kromě GSM je ústředna připojena k několika VoIP poskytovatelům. Systém VoIP ústředny je postaven na operačním systému CentOS 7, instalované integrační komponenty umožňují plný běh uvnitř virtuální prostředí Microsoft Hyper-v.

Děkujeme za příležitost a těšíme se na další spolupráci. MOJEservery.cz.

Společnost SYSKO Tábor WWW
Společnost SYSKO Tábor WWW

 

Konfigurace Linux VPS serveru pro nový portál www.posilka.cz.

Realizováno,

!aktualizace 21.7.2015:

  • dokonfigurována podpora emailových služeb (emaily na vlastní doméně)
  • Poštovní server Postfix
  • IMAP/POP3 server Dovecot
  • Antispam (amavisd, spamd, clamd)
  • fail2ban pro POP3/IMAP
  • Webmail rozhraní

 

pro zákazníka úspěšně provedena kompletní konfigurace virtuálního Linux serveru (Virtual Private Server = VPS) pro nový portál o kulturistice s největší fitness komunitou → www.posilka.cz.

Děkujeme za příležitost a těšíme se na další spolupráci. MOJEservery.cz.

posilkacz-pageshot-20150714-15030-1e9ci0d

LibreNMS, tak trochu lepší Observium pro dohled sítě.

Dohled v IT je klíčovým nástrojem pro fungování, chtělo by se “zakřičet” král je mrtev ať žije král, ale není to tak přímočaré, pojďme se spolu podívat na jeden z nastupujích nástrojů pro network monitoring.

librenms-single-logoLibreNMS je fork komunitní verze dohledováno nástroje Observium, který v posledních měsících má značný úspěch, komunitní verze je zdarma, má 6 měsíční vývojový realease cyklus a postráda některé důležité funkce oproti placené variantě (zejména alerting, thresholdy), zde nastupuje právě LibreNMS, které staví na Observium community edici a značně vylepšuje její možnosti.

Mamé aktuálně LibreNMS nainstalované, prošlo interním několika měsíčním testování a nakonec podle plánu ho rozšíříme na všechny servery a jako bonus pokud dojde k úspěšné dohodě tak budeme celé řešení nasazovat do sítě o cca 100 aktivních prvcích pro zákazníka kousek od Prahy.

LibreNMS

  • Autodiscovery pomocí protokolů L2 a L3 vrstvy (ARP, CDP, FDP, LLDP, OSPF, BGP, SNMP)
  • Alerting (notifikační systém), flexibilní, email, SMS, irc, scriptovatelný
  • API rozhraní, výborná vlastnost, lze přistupovat k datům jež jsou v LibreNMS, kolega například udělal jednoduchý projekt s Arduino displejem, který zobrazuje zátež serveru, obsazení disků a výužití sítě, možnosti jsou nekonečné
  • Billing systém, nevyužíváme, ale lze udělat např. automatizované platby podle přenesených dat nebo obsazenosti místa na serverů
  • Automatické updaty
  • Plugin systém
  • Distribuovaný monitoring (horizontální škálování, dohled roste s velikostí Vaší sítě)

Další příjemné vlastnosti, větší podpora zařízení, nativní Unix agent, slušné UI dostupné i z mobilu, authentizace uživatelů proti MySQL a LDAP.

Ukázková (plně funkční demoverze), viz odkaz nebo kliknětě na obrázek.

https://demo.librenms.org

Username: admin
Password: admin

libreNMS-demo-login

Vývoj je pěkně aktivní, sledujte např. twitter @librenms , IRC Freenode ##librenms nebo Google Groups.

Dokumentace pěkně zpracována zde http://docs.librenms.org.

K dispozici jsou migrační nástroje pro přechod z Observia, tak co říkáte, dáte LibreNMS šanci?

Zajímáte se o dohled své sítě, přemýšlíte nad jeho realizace či modernizaci? Poskytuje služby v této oblasti Monitoring počítačové sítě.

František Havel, MOJEservery.cz

Linux: Automatický restart kernel panic a notifikace

Linux jako každý komplexní operační systém se může dostat do stavu kdy přestane dělat co je po něm požadováno, v lepším připadě zhavaruje (kernel panic) v horším se dostane do nepredikovaného stavu, kdy něco dělá nevím bohužel co nebo to není možné zjistit, např. vysoký load (zátěž) systému znemožňuje navázení ssh, systém laguje apod.

Vetšina moderních serverů je dnes vybavena systémem KVM(klavesnice-video-myš) pro přístup přes IP síť (bez ohledu na stav operačního systému, umožňuje to tak řešit havarijní stavy), v případě virtualizace je naopak často možné připojit se ke konsoli systému bez ohledu na jeho stav či poslat povel reboot přímo z hypervisoru.

Co dělat v případě, že Váš fyzický server má problém a k dispozici nemáte žadné uvedené možnosti?

Lenivý admin nechodí do serverovny :-).

Pokud máte štěstí a funguje SSH lze leco řešit, může se ovšem stát, že SSH poslouchá, ale už není schoné vytvořit celý proces shellu (např. proto, že jiný proces sežral celou pamět a server divoce swapuje), mužete zkusit tento trik a poslat příkazy k rebootu stroje přímo, pokud to klapne máte stěstí a po rebootu budete zkoumat co se dělo.

ssh root@mojeservery.cz \
'echo 1 > /proc/sys/kernel/sysrq; echo b > /proc/sysrq-trigger'

V druhém terminálu si nejlépe spusťte ping na problémový server, v případě rebootu dojte k výpadku ICMP echo reply odpovědí, počkejte, je možné, že se bude např. provádět kontrola filesystému (fsck), buďte trpělivý.

Druhá variace je odpovědí na havarijní stav, jádro systému zastavilo svůj běh po neopravitelné chybě a skončilo pádem v unix světe pojmenovaném příznačně “kernel panic”, takže server prostě stojí, nic nedělá a čeká, až ho někdo (admin) rebootuje, z tohoto stavu lze ovšem také “vybruslit” a vynutit automatický reboot po kernel panic.

# echo 30 >/proc/sys/kernel/panic

Toto nastavení na běžícím systému způsobí reboot po 30 vteřinách pokud nastane kernel panic (hodnota 0 je vypnutí rebootu, výchozí), nastavení je vhodné uložit do systému pokud je chcete mít implicitně zapnuté.

Vložte řádek kernel.panic = 30 do souboru /etc/sysctl.conf a zavolejte příkaz pro aktualizaci parametrů běžícího jádra.

# sysctl -p

Patrametry ze sysctl.conf budou načteny, i po rebootu bude vše dle nastavení.

Notifikace po rebootu? Byla by více než vhodná, malá třešnička na dortu, démon cron na to má speciální flag @reboot, přidejte do svého crontabu tento řádek (upravte dle svého SMTP serveru a emailu).

@reboot date | mailx -S smtp=smtp://smtp.mojeservery.cz -s "hostname Rebootovan server!" -r server@mojeservery.cz admin@mojeservery.cz

Přejeme hodně vysoký uptime a co nejméně podobných problémů.

František Havel, MOJEservery.cz

Nebojte se SQLite!

SQLite je transakční databázových systém, s nulovou konfigurací, bez serverové části, jednoduchý, kompaktní, lehký design, postavený nad souborovým systémem respektive souborem.

SQLiteLogo3

SQLite je velmi populární, né vždy je totiž nutné a hlavně možné nasadit plnohodnotný klient-server SQL server (Mariandb, Postgres) ale mít po ruce možnost a výhody sql nad souborem se často hodí (např. i v systému Android).

Ve své podstatě jde o implementaci relačního databázového systému a standardu SQL-92 realizovaného v jazyce C (mimochodem zajímavě napsaná knihovna s implementací objektů pomocí struktur, pointerů).

Architektura SQLite z francouzské wikipedie
Architektura SQLite z francouzské wikipedie

Velmi často se používá SQLite v jazyce Perl přes knihovnu DBI, ukažme si základní snippet ve kterém bude vše co je potřeba pro práci s touto databází.

  • připojení /connect
  • vytvoření tabulky /create
  • vložení záznamu / insert
  • vyhledání záznamu / search
  • úprava záznamu / update
  • smazání záznamu / delete

Instalace:

Debian, Ubuntu

root@havel-machine:~# apt-get install sqlite3 libdbd-sqlite3-perl

CentOS, Fedora or RHEL

root@havel-machine:~# yum install sqlite perl-DBD-SQLite

 

#!/usr/bin/perl
 
use DBI;
use strict;
 
my $driver   = "SQLite";
my $db_name = "sqlite.db";
my $dbd = "DBI:$driver:dbname=$db_name";
 
# sqlite nepoužívý jméno a heslo
my $username = "";
my $password = "";
 
# vytvoříme a připojíme se db
# zároveň dojte k vytvoření souboru databáze sqlite.db
my $dbh = DBI->connect($dbd, $username, $password, { RaiseError => 1 }) or die $DBI::errstr;
 
# vytvoříme tabulku
my $stmt = qq(CREATE TABLE IF NOT EXISTS NETWORK
             (ID INTEGER PRIMARY KEY     AUTOINCREMENT,
              HOSTNAME       TEXT    NOT NULL,
              OS             CHAR(50),
              CPULOAD        REAL););

# provedeme dotaz
my $ret = $dbh->do($stmt);

if($ret < 0) { print STDERR $DBI::errstr; }
else { print STDERR "Tabulka vytvořena\n"; }

# vložíme řádky do tabulky
$stmt = qq(INSERT INTO NETWORK (HOSTNAME,OS,CPULOAD) 
           VALUES ('linux-01', 'Debian 8', 0.0));
$ret = $dbh->do($stmt) or die $DBI::errstr;
 
$stmt = qq(INSERT INTO NETWORK (HOSTNAME,OS,CPULOAD)
           VALUES ('linux-02', 'CentOS 7', 0.0));
$ret = $dbh->do($stmt) or die $DBI::errstr;
 
$stmt = qq(INSERT INTO NETWORK (HOSTNAME,OS,CPULOAD)
           VALUES ('windows-01', 'Windows Server 2012', 0.0));
$ret = $dbh->do($stmt) or die $DBI::errstr;
 
# získání dat z tabulky a výpis
$stmt = qq(SELECT id, hostname, os, cpuload from NETWORK;);

my $obj = $dbh->prepare($stmt);
$ret = $obj->execute() or die $DBI::errstr;
 
if($ret < 0) { print STDERR $DBI::errstr; } while(my @row = $obj->fetchrow_array()) {
      print "ID: ". $row[0] . "\n";
      print "HOSTNAME: ". $row[1] ."\n";
      print "OS: ". $row[2] ."\n";
      print "CPULOAD: ". $row[3] ."\n\n";
}
 
# změna záznamu
$stmt = qq(UPDATE NETWORK set CPULOAD = 50 where OS='CentOS 7';);

$ret = $dbh->do($stmt) or die $DBI::errstr;
 
if( $ret < 0 ) { print STDERR $DBI::errstr; }
else { print STDERR "Aktualizováno $ret řádků\n"; }

# smazání
$stmt = qq(DELETE from NETWORK where ID=2;);
$ret = $dbh->do($stmt) or die $DBI::errstr;
 
if($ret < 0) { print STDERR $DBI::errstr; }
else { print STDERR "Smazáno $ret řádků\n"; }

# Odpojení databáze
$dbh->disconnect();

 

Jak je vidět z příkladu použití je skutečně jednoduché a přímočaré, nebojte se ho vyzkoušet ve svých projektech, mnoho lidí do startu špatně odhadne požadavky a SQLite je tím pádem neprávem ignorováno jako něco podřadného, přejít na “vyšší” databáze z SQLite je triviální.

Knihovny (binding) existuje pro celou řadu programovacích jazyků kromě  uvedeného Perl, např. C/C++, Python, Lua, PHP, ale např. i Delphi a další.

SQLite není okrajový zapadlý projekt, je integrován přímo do systému Android pro uložení persistentních dat, používá ho iPhone nebo společnost Airbus ve svém software či firma Adobe, Bosh, Dropbox. (https://www.sqlite.org/famous.html)

SQLite používám rád, přemýšlejte o něm.

https://www.sqlite.org

František Havel