AuthorPepa

Blokování SSH útoku

Součástí mé každodenní práce je deploy aplikací na různé linuxové servery (Fedora, Centos) umístěných někde v Internetu. Pro tohle používám kombinaci nástrojů BASH, SSH a GIT. Plus mínus nějake další věci, které jsem si sám napsal, nebo někde okoukal…

Základem všeho je ale korektně se připojit na server. Absolutní bezpečnostní minimum konfigurace SSH daemona je přihlášení se přes klíče, zakázané hesla a zakázaný účet root. I přesto je neuvěřitelné, jak rychle po oživení nového serveru, se pokusí na něj někdo z Číny, Ruska nebo z podobně zajímavé ciziny přihlásit jako admin, nebo někdo podobný…

Nejdříve jsem se čas od času snažil geolokalizovat IP cizince, a pak jej podle lokality buď zakázal, nebo nechal žít. Ano, v podstatě jsem jej vždy zakázal:

No a po posledním přihlášení a zadání sudo su – jsem byl docela zděšen: více než 2.000 pokusů a SSH login roota někde z Tramtárie…
Je jasné, že jakýkoliv neautomatizovaný způsob řešení tohoto robotizovaného napadení je absolutně neúčelný, a proto jsem chvíli gůgloval a studoval, abych našel 2 nástroje, které toto rozumně řeší.

DenyHOSTS

DennyHOSTS je pěkný, jodnoduchý nástroj, který prozkoumává váš /var/log/secure a v případě opakovaného neúspěšného pokusu o přihlášení zaznamené IP adresu vtipálka do /etc/hosts.denny a skrze iptable tuto adresu zablokuje. Vedle toho máte možnost v /etc/hosts.allow specifikovat IP adresy, které mají být vždy povolené. Vedle těchto 2 souborů máte jen /etc/denyhosts.conf, kde specifikujete samotná nastavení služby, jako je způsob reportování a podobně.
Významnou předností této aplikace vidím právě v jednoduchosti a přímosti. Nemá fičury jako Fail2ban, ale ty jsem ani zatím nepotřeboval.

Fail2ban

Fail2ban pracuje podobným způsobem jako DenyHOSTS, ale přidává další užitečné funkce, které z něj dělají ještě mocnější nástroj. Jednou z nich je například možnost nastavit automatického odbanování IP adresy po uplynutí zadané doby a podobné věci.

Geolokalizace IP adresy

Z důvodů pořešení nějakých bezpečnostních praktik jsem potřeboval nějak blíže geolokalizovat IP přihlašovaného uživatele, respektive záškodníka, abych věděl odkud se fyzicky přihlašuje:

NodeJS: geolokalizace IP adresy

Python: geolokalizace IP adresy

Reference Cards for MongoDB

Reference Cards for MongoDB (PDF format)

I Feel It Coming

Zvýšení limitu RAM pro NodeJS aplikaci

Defaultně dostane NodeJS script maximálně 1.76GB RAM na 64bitovém systému. Což je asi na jednovláknové aplikace dost, nicméně se vám může stát, tak jako mě, že potřebujete zaalokovat nějaké opravdu větší pole a byť máte stroj s 16GB RAM, Node vám vráti chybu při pokusu alokovat paměť.

Pak se vám bude hodit parametr příkazové řádky –max_old_space_size, který V8 říká kolik si má vzít RAMky a posune defaultní limit na vámi zadanou hodnotu:

SQL Queries Succinctly

SQL Queries Succinctly (v PDF)

Jaký je rozdíl mezi Javou a JavaScriptem?

Q: What’s the difference between JavaScript and Java?

A: One is essentially a toy, designed for writing small piecess of code, and traditionally used and abused by inexperienced programmers. The other is scripting language for browser.

🙂

Výpočet GEO vzdálenosti v JavaScriptu

Výpočet dle Haversine formula

ESLint

Dnes jsem přešel z JSHintu na ESLint. Tím asi nejpádnějším důvodem je podpora Reactu, respektive jeho JSX a lepší monžnosti konfigurovatelnosti. Musím ale dodat, že jsem se bránil do poslední chvíle. Důvodem byla třeba rychlost lintování: JSHint mi zdrojáky lintoval rychleji… A tohle je informace, kterou se nikde nedočtete.

Než jsem switchnul, pročetl jsem kde co, abych zjistil, že:

  • JSHint je fork původního JSLintu
  • ESLint je dnes už asi více používaný než JSHint, který je tady nicméně déle
  • velké a významné IT používají ESLint…

ESLint, stejně jako JSHint, fungují dobře jak v Atomu, tak i Sublime, což jsou dnes už jediné editory, které dnes používám (když nepočítám Vim…).

Co se mi asi na ESLintu o trochu víc líbí je jeho konfigurace. Konfigurační soubor můžete mít jak v JSON souboru, tak v JS, ale i v Yamlu. V rámci projektu můžete mít v root adresáři výchozí konfiguraci pro ESLint a v dalších jeho podadresářích můžete mít specifické, upravené konfiguráky dle konkrétní potřeby. Vedle toho můžete použít něčí best-practice vzorový konfigurák, ten použít jako základ a upravit jen to chcete jinak…

V ESLintu samozřejmě funkují inlajnované directivy pro linter vkládané přímo do souborů se zdrojáky, stejně jako v JSHintu.

Instalace

Základy CURL

Pokud píšete nějakou REST aplikaci a potřebujete nějak komunikovat se serverem, a tím myslím třeba něajak efektivně mu posílat data, a třeba i dávkově, a nevyhovuje vám HTTPie nevyhovuje, nebo inklinujete k něčemu tradičnímu, pak rozhodně zkuste CURL.

CURL je moncný nástroj, který toho umí mnohem víc, než jen odesílání POST requestů. Samozřejmostí je modifikace hlaviček a například také SSL komunikace.

© 2017 pepa.holla.cz

Theme by Anders NorénUp ↑