Linux: Blokujeme čínu,rusko firewallem a ipset

S Čínou i Ruskem jsou potíže, jsou veliké.

Nedávno zde proběhl článek Linux firewall: Blokujeme pomocí IPSET jak blokovat rozsáhlá pravidla v linux firewallu bez výkonové penalizace.

Dnes bych rád na toto téma lehce navázal, ukážeme si jak efektivně zablokovat provoz z konkrétní země, v našem případě jde o Čínu a Rusko, bude to jednoduché a rychlé, slibuji.

Co budeme potřebovat? Nástroj IPset,wget a seznam rozsahů konkrétní země.

Vytvoříme si dvě hash tabulky, následně stáhneme pomocí nástroje wget soubor veřejných rozsahů, aplikujeme v jednoduchém cyklu na ipset a poté pouze nasadíme iptables.

Pojďme na to!

root@havel-machine:~# ipset -N china hash:net
root@havel-machine:~# ipset -N russia hash:net

root@havel-machine:~# wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
root@havel-machine:~# wget http://www.ipdeny.com/ipblocks/data/countries/ru.zone

root@havel-machine:~# for i in $(cat cn.zone ); do ipset -A china $i; done
root@havel-machine:~# for i in $(cat ru.zone ); do ipset -A russia $i; done

root@havel-machine:~# iptables -A INPUT -p tcp -m set --match-set china src -j DROP
root@havel-machine:~# iptables -A INPUT -p tcp -m set --match-set russia src -j DROP

A to je vše! Dejte si pozor kam umístíte iptables DROP pravidla, musí být povětšinou před zbytkem pravidel, jinak nebudou mít efekt.

Prozkoumejte podrobněji www.ipdeny.com , k dispozici jsou i agregované seznamy rozsahů (v našem případě použit ne-agregovaný seznam, ipset agreguje za nás), pěkný je online generátor pravidel do iptables,ipchain,ipfw.acl. Co mě překvapilo je i seznam IPv6 rozsahů http://www.ipdeny.com/ipv6/ipaddresses/blocks/ , prostě skvělé.

K dokonalosti je vhodné celé řešení zabalit do scriptu, ošetřit možné chyby kolem wget a pravidelně aktualizovat, nechávám za domácí úkol.

Díky za Váš čas. František Havel

Zemřel sir Terry Pratchett, Úžasná Zeměplocha žije dál.

Dnes ve věku 66 let zemřel Terry Pratchett, děkujeme, nezapomeneme. RIP

http://www.bbc.com/news/entertainment-arts-31858156

Měl výraz sekačky na trávu, která právě zjistila, že si tráva založila odbory.

Míň vlasů k česání, ale na druhou stranu zase větší kus obličeje k mytí… 

"Varuju vás!Jsem zoufalý muž!" "To je naběračka, kámo. Ale hezkej pokus."

"Čas je droga. Když ho užíváte příliš mnoho, zahubí vás." 

"... Já měl dojem, že filozofové jsou lidé, kteří uvažují logicky!" 
Didactylos pokrčil rameny. 
"Víš, já to vidím tak, že logika je jen způsob, jak se mýlit ve velkém."

terry_81600230_21d7e4b7-0ef8-45f5-a72f-496371c890fe

Cloud computing (IaaS, PaaS. SaaS) a jak ho uchopit?

V jednoduchosti je krása, cloud je uvnitř složitý, navenek jednoduchý, není cílem tohoto článku popsat cloud, definovat, opakovat, na jasném popisu se neshodnout dnes ani odborníci.

Spíše než popis vnitřní krásy interní složitosti cloudu uvažujme o něm jaké o distribučním modelu vývoje informačních technologiích, platformu pro poskytování software, služeb i infrastruktury.

Dokáže Váš IT koordinátor správně uchopit celou myšlenku cloudu, využít jeho potenciál, vybrat vhodné služby pro Váš, cloud dnes nejsou jen virtuální servery a zdaleka ne každá firma poskytující virtuální servery poskytuje cloud i když to ráda tvrdí.

Klíčové je pochopení distribučního modelu, zeptejte se svého cloud poskytovatele jaký distribuční model poskytuje, pokud Vám odpoví, že všechny, buďte ostražití.

Distribuční model

  • IaaS (Infrastructure as a Service), infrastruktura jako služba, zákazník si pronajímá části škálovatelné infrastruktury (servery, disková úložiště, procesorový čas, paměť , síťovou infrastruktury) ať už skutečné nebo virtualizované, typickým představitelem jsou dnes právě virtualizované servery. Populární nástrojem respektive komplexním řešením pro IaaS je Openstack , díky otevřenému API je široce přijímán, jedna z výhod je možnost přechodu zákazníka mezi poskytovateli IaaS, laicky řečeno obdobně jako když změníte mobilního operátora.
  • PaaS (Platform as a Service), platforma jako služba, v nejužší představě jde o aplikační platformu, službu pronájmu kompletních prostředků pro vývoj, udržbu životního cyklu aplikace, často je součástí framework či specifické IDE, vývojové a ladící nástroje. Nejde tedy o pronájem již hotové aplikace, ty je třeba si vyvinout, PaaS představuje pouze “motor” pro Vaše aplikace, zákazník nemá většinou možnost odejít k jinému PaaS poskytovateli. Typický představitel PaaS je Google App Engine.
  • SaaS (Software as a Service), software jako služba, zákazník si kupuje pouze přístup k aplikaci, nevlastní licenci, přistupuje k ní typicky přes prohlížeč či nějakou formu vzdálené plochy. Výhodný nástroj pro běžné a méně náročné aplikace, předem známé náklady a nízké počáteční náklady, centralizované updaty software. Typickou ukázkou je dnes Google Apps, Outlook.com nebo z českých luhů a hájů Flexibee, Icewarp. Dejte si vždy pozor na smlouvy v tomto případě pronájmu software.

Konec, shrnutí, a co Váš poskytovatel, Váš ICT koordinátor, Vaše IT, nyní máte základní přehled o modelech cloudových služeb, ptejte se jich na vhodnou volbu a proč právě to, či ono.

Typická chyba, pronájem služeb typu SaaS je dnes velmi populární, dokáže obsloužit široké spektrum požadavků, z pohledu poskytovatele je mnohdy snažší i dražší směrem k zákazníkovi poskytnout IaaS, typicky virtuální server, v silné konfiguraci, nabídnout software, licence, podporu administrace, vyřešit vzdálený přístup, vše stojí nemalé měsíční finanční prostředky.

Buďte chytří, buďte cloud!

Děkuji za Váš čas. František Havel.

Linux: Jak zjistit veřejnou IP adresu v terminálu?

Dnes to bude jednoduché, ale překvapivě se tento problém poměrně hojně vyskytuje v běžných provozních podmínkách.

Přepokládejme následující scénář, máme Linux systém schovaný za NAT , tedy na rozhraní máme neveřejnou lokální IP adresu a funkční síťování v podobě výchozí brány a DNS, přístup k mašíne je skrze ssh, neni k dispozici grafické prostředí, pouze terminál.

Jaká je naše veřejná IP adresa, jak nás vidí svět?

Jednoduše, nejčastěji používám nástroj curl, telnet bohužel, bohudík už přestává být standartní současní distribucí.

havel@havel-machine:~$ curl ifconfig.me
46.167.201.250
(používám hlavně toto neb se mi to dobře pamatuje)

Další funkční služby podobné ifconfig.me.

  • havel@havel-machine:~$ curl ip-addr.es
  • havel@havel-machine:~$ curl icanhazip.com
  • havel@havel-machine:~$ curl ident.me
  • havel@havel-machine:~$ curl whatismyip.akamai.com

Nakonec pár dalších netradičních možností aneb jde to i jinak a proto Linux* milujeme.

  • havel@havel-machine:~$ dig +short myip.opendns.com @resolver1.opendns.com
  • havel@havel-machine:~$ curl -s checkip.dyndns.org | sed ‘s/.*Moje  adresa: \([0-9\.]*\).*/\1/g’
  • havel@havel-machine:~$ wget -q -O – checkip.dyndns.org | sed -e ‘s/[^[:digit:]\|.]//g’

A to je vše, dalších způsobů bude jistě na “tuny”.

Hezké je např. toto velmi jednuché API http://api.ident.me.

Díky za Váš čas. František Havel

 

SERVER: Z 0 na 100% za méně než hodinu!

Automatizována IT infrastruktura je hudba budoucnosti, je to klíč ke spolehlivému, efektivnímu fungování.

Moment, moment, jak budoucnosti a co pak znamenají všechny ty zkratky jako puppet, CFengine, chef, salt? Pravda, žadná budoucnost, ale realita současnosti!

Rozhodli jsme se v MOJEservery.cz už od začátku to udělat jinak, správně, nezáleží kolik serverů máte k administraci, zda-li jeden nebo 1000, inovace v podobě automatizace se vždy vyplatí.

S příchodem dvou nových zákazníků v podobě dvou virtuálních serverů s linux systémem jsme byli postavaní před rozhodnutí jak do budoucna rozumně adminovat větší množství serverů.

Po prostudování možností padla volba CMS (Configuration Management System) na nástroj puppet.

Puppet, je cms nástroj, jde o klient/server software pro popis vaši IT infrastruktury  v “jednoduchém” jazyce a následné udržení infrastruktury dle přechodzí definice.

Puppet se skládá ze serveru (master) a agentů (nodů, klientů), master se snaží udržet konfiguraci dle definice na agentu či skupině agentů.

Proč puppet?

  • obsažen ve std. repositářích námi používaných distribucí (Debian, Ubuntu LTS server)
  • předhledná syntaxe ( individuální pohled, ale dobře se nám to čte )
  • nativní podpora pro konfiguraci komponent systému i software (Apache, MySQL, APT, …)
  • podpora a rozšířenost
  • puppet forge ( komunitní repositář modulů )

A co bylo dál? Připravili jsme puppet master server, připravili si první čistý server Debian stable v KVM virtualizaci, následoval popis instalace jednotlivých komponent pro puppet, které jsem následně spojili do jednoho celku.

A výsledek?

  • vytvoření virtuálního server v IAAS ~ 30minut (zde máme ještě dost co zlepšovat, vize je napojení se na API, např. deltacloud)
  • zprovoznění puppet agenta a spuštění deploymentu
  • SUMA sumárum: 45 minut
  • Produktem je kompletně připravený server pro provoz web aplikaci s PHP, SQL, PHP-FPM, Apache, Fastcgi, NTP, Postfix, FTP, SCP, Denyhost, Firewall, Memcached.

A co se tím dá ještě dělat? Tak se podívejte a tam směřujeme.

Automatisation-AWS-PuppetLabs

Doporučuji na rozjezd přečíst tuto šťavnatou diplomovou práci, Michal Bryxí FAV ZČU Plzeň 2011.

A to je vše, příště si třeba ukážeme něco praktického.

Díky za Váš čas, František Havel.

tcpdump: Co musí každý síťař znát!

Pozn.:
Tento článek nepopisuje základní funkcionalitu,obsluhu ani princip fungování nástroje tcpdump.

Tcpdump je “dědeček” v oblasti paketových analyzátorů, fungující na příkazové řádce, dostupný pro většinu unix systémů i Windows, postavený na C/C++ knihovně libpcap.

Používá se pro odchycení (sniff) a analýzu komunikace v počítačových sítích, orientuje se především na protokoly tcp/ip (nikoliv výhradně), jedná se o jeden ze základních nástroj pro diagnostiku problémů, každý “síťař” ho musí znát, protože nikdo “nevidí” do kabelů.

Tcpdump vznik k roce 1987 v Berkeley Laboratory Network Research Group v USA v Kalifornii, jaká to náhoda.

Připomeňme si v rychlosti strukturu IP hlavičky.

IP-Header

Základní primitiva pro tcpdump filter, jsou vcelku jednoduchá (zdrojový/cílový host, síť, port, protokol) ,lze je přehlední najít v manuálových stránkých nebo online zde či manuál.

Pojďme se nyní podívat na některé záludnější konstrukce, co jsem posbíral za dosavadní činnost v oblasti síťí.

DHCP

# filtruje DHCP klienta s MAC d4:3d:7e:27:79:fc
root@havel-machine:~# tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[38:6] = 0xd43d7e2779fc))'
# filtruje DHCP DISCOVER, REQUEST, INFORM
root@havel-machine:~# tcpdump -i eth0 -vvv -s 1500 '((port 67 or port 68) and (udp[8:1] = 0x1))'

Spanning tree

root@havel-machine:~# tcpdump -i eth0 -vvv ether[14:1] = 0x42
# výstup, lze vidět surová data BPDU
root@havel-machine:~# tcpdump -i eth0 -vvv -e -l -xX -ttt -c 3 multicast

VLAN/CDP/LLDP

# běhá nám tam správná vlan/cdp
root@havel-machine:~# tcpdump -i eth0 -n -vvv -s 1500 -c 1 'ether[20:2] == 0x2000'
# pro LLDP použijte ether proto 0x88cc

TCP příznaky (flags)

#URG příznak root@havel-machine:~# tcpdump 'tcp[13] & 32 != 0' 
# ACK příznak 
root@havel-machine:~# tcpdump 'tcp[13] & 16 != 0' 
# PSH příznak 
root@havel-machine:~# tcpdump 'tcp[13] & 8 != 0' # RST příznak 
root@havel-machine:~# tcpdump 'tcp[13] & 4 != 0' # SYN příznak 
root@havel-machine:~# tcpdump 'tcp[13] & 2 != 0' # FIN příznak 
root@havel-machine:~# tcpdump 'tcp[13] & 1 != 0' # SYN-ACK příznak 
root@havel-machine:~# tcpdump 'tcp[13] = 18'

HTTP POST

root@havel-machine:~# tcpdump tcp[2:2] = 80 and \(tcp[20:4] = 1347375956
or tcp[24:4] = 1347375956 or tcp[28:4] = 1347375956 or tcp[32:4] = 1347375956 or tcp[36:4] = 1347375956 or tcp[40:4] = 1347375956 or tcp[44:4] = 1347375956 or tcp[48:4] = 1347375956 or tcp[52:4] = 1347375956 or tcp[56:4] = 1347375956 or tcp[60:4] = 1347375956\)

Pro filtrování IPSEC použijte v protokolech esp či ah, multicast lze odfiltrovat pomoci proto igmp nebo pim.

Ucelený přehled filtrů pro tcpdump v TXT formátu naleznete např. zde.

A nakonec dáme jednu škaredou, podobných kouskem jsem se v dřevních dobách bavili na průmyslové škole v době kdy switche nebyly vůbec standardem a huby s koaxem kralovaly, bohužel za to přišlo podmínečné vyloučení, ale to jsme jinde.

root@havel-machine:~# tcpdump port http or port ftp or port smtp or port imap or port pop3 -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user ' --color=auto --line-buffered -B20

Díky za Váš čas. František Havel