Netcat a Ncat
Každý občas potřebuje dostat nějaká data z jednoho stroje na jiný. Pokud nechcete konfigurovat např. FTP nebo HTTP server, tak potřebujete nějaký jednoduchý prográmek, který to umí. V tom případě doporučuji použít Netcat nebo jeho novější náhradu Ncat.
Netcat asi není potřeba představovat. Je tu s námi od roku 1995 a jedná se o „univerzální nástroj na čtení a zápis TCP a UDP spojení“. Ncat vznikl až v tomto století a také se tím chlubí – Ncat – Netcat pro 21. století.
Koncept je tak jednoduchý jak to jen jde. Na jednom stroji otevřete Netcat aby naslouchal na nějakém portu a z druhého stroje se připojíte. Podmínkou je povolit si příslušný port na firewallu.
Tak začneme u původního Netcat, v Linuxu též jako nc. Na serveru s vnější IP 217.198.114.185 otevřeme port 8888:
nc -l -s 217.198.114.185 -p 8888
Z libovolného stroje se pak připojíme na stroj s IP 217.198.114.185 a port 8888:
nc 217.198.114.185 8888
Výsledek bude vypadat takto. Cokoli napíšeme do jedné nebo druhé konzole se přenese na opačnou stranu.
Takže máme TCP spojení. No a protože Linux je jedna velká trubka, jak říkával můj bývalý kolega, tak pro přenos souborů nám stačí jenom poslat soubor do vzniklé „trubky“.
A už slyším, že to je nebezpečné, přenos není šifrovaný atd. Ano, není to bezpečné. Pro jednorázové účely to stačí. Útočník by musel trefit konkrétní port a čas kdy je spojení aktivní. Samozřejmě můžeme použít ssh a vytvořit si šifrovaný tunel, ale tady už se ztrácí elegance a jednoduchost.
Takže se pojďme podívat na následníka Netcat z dílny vývojářů Nmap.
Hned po spuštění rychlé nápovědy ncat -h vidíme, že o proti nc -h nám přibyly nějaké volby a nějaké naopak ubyly. Největší rozdíl je v tom, že zmizelo skenování portů a přibyly volby pro ssl. Jinými slovy, ano ncat umí ssl přímo bez potřeby používat další nástroje. Navíc funguje na Windows, macOS a Linuxu a samozřejmě je open source, takže si ho můžete přeložit pro libovolný operační systém.
Takže pojďme si přenést třeba zálohy databází ze serveru s Debianem na pracovní stanici s Windows . Dejme tomu, že zálohu máme v souboru /backup/alldb.sql a na pracovní stanici si ji chci nahrát do svého domovského adresáře jako soubor zaloha_20221130.sql . Takže na serveru zavoláme:
ncat -l 217.198.116.182 8888 --ssl < /backup/alldb.sql
Na pracovní stanic s Windows si pustíme cmd a pak:
C:\Users\zbynek.vyboh>ncat --ssl vyboh.zarea.net 8888 -o zaloha_20221130.sql
Jakmile se soubor nahraje, spojení se uzavře.
Krásné, jednoduché, elegantní.
Chcete na pracovní stanici sledovat online např. slow-log MySQL serveru? Stačí na serveru spustit
tail -f /var/log/mysql/slow.log | ncat -l 217.198.116.182 8888 --ssl
No a po připojení z pracovní stanice pomocí
ncat --ssl vyboh.zarea.net 8888
vidíme přímo co se aktuálně přidává na serveru do souboru /var/log/mysql/slow.log
Možností použití je nekonečné vzhledem k tomu, že Ncat podporuje snad všechny myslitelné protokoly.
Nějaké další ukázky použití najdete např. přímo na oficiálních stránkách Ncat.
kto by potreboval nieco podobne ale bez potreby verejnej IP moze skusit krokodila miesto macky
https://github.com/schollz/croc