Portál AbcLinuxu, 29. března 2024 01:11

Vlastní systém na výměnu souborů

9.8.2022 22:21 | Přečteno: 2299× | linux | poslední úprava: 11.8.2022 11:21

Čas od času je třeba vyměňovat velké soubory. Veřejné služby nebývají pro nějaká firemní data úplně důvěryhodné. A hele, on-premise alternativa k uschovna.cz.
Jdeme se tedy podívat na další zrníčko z interní dokumentace.

Proč on-premise řešení?

Je to jednoduché, jednak v tom hrají roli pocity, kdy někdo nemusí chtít posílat data přes třetí stranu. Další důvod je zbytečná saturace internetové konektivity. Další může být to, že chceme uživatelům povolit jen výměnu souborů uvnitř sítě bez možnosti to poslat ven (třeba uživatelé nemají ani přístup na internet). Důvodů může být mnoho.


Co vybrat?

Chceme, aby to bylo bezpečné, vše šifrované, aby to bylo nenáročné na provoz, aby to bylo pro uživatele jednoduché atd. Namátkou jsem narazil kdysi na tyto projekty:


Jirafeau

Jak nadpis napovídá, vybral jsem si tento projekt. Je jednoduchý, vyvíjí se, php zná každý, takže v případě potřeby interní devíci mohou provést úpravy apod.

Fce, které projekt podporuje:


Instalace

Na tom není nic bestiálního. Používám Debian, takže návod je pro něj, ale vesměs je to na všech distribucích stejné. Stačí Apache + php.

# stažení zdrojáků
cd /var/www
git clone https://gitlab.com/mojo42/Jirafeau.git

# nastavení oprávnění:
chown -R www-data:www-data Jirafeau

# základní nastavení
nano Jirafeau/lib/config.original.php
...
$cfg['web_root'] = 'https://filechange.corp.devaine.cz/';
...
$cfg['var_root'] = '/var/www/data/';
...
$cfg['organisation'] = 'Devaine a.s.';
...
$cfg['contactperson'] = 'admin@devaine.cz'
...
$cfg['enable_crypt'] = true;
...

Následně nastavíme web na apache:

# /etc/apache2/sites-available/filechange.corp.devaine.cz.conf
<VirtualHost *:80>
ServerAdmin admin@devaine.cz
ServerName filechange.corp.devaine.cz

VirtualDocumentRoot /var/www/Jirafeau/

<Directory /var/www/Jirafeau/>
   AllowOverride All
   Options -Indexes
</Directory>


<Directory /var/www/Jirafeau/data>
   AllowOverride All
   Options -Indexes
   order deny,allow
   deny from all
</Directory>


CustomLog /var/log/apache2/filechange.corp.devaine.cz-access.log common
ErrorLog /var/log/apache2/filechange.corp.devaine.cz-error.log

</VirtualHost>



<VirtualHost *:443>
ServerAdmin admin@devaine.cz
ServerName filechange.corp.devaine.cz

VirtualDocumentRoot /var/www/Jirafeau/

<Directory /var/www/Jirafeau/>
   AllowOverride All
   Options -Indexes
</Directory>


<Directory /var/www/Jirafeau/data>
   AllowOverride All
   Options -Indexes
   order deny,allow
   deny from all
</Directory>


CustomLog /var/log/apache2/filechange.corp.devaine.cz-access.log common
ErrorLog /var/log/apache2/filechange.corp.devaine.cz-error.log


SSLEngine on
SSLCertificateFile      /etc/apache2/ssl/filechange.corp.devaine.cz.cer
SSLCertificateKeyFile /etc/apache2/ssl/filechange.corp.devaine.cz.pem
SSLCertificateChainFile /etc/apache2/ssl/DevaineRootCA-G2.crt

</VirtualHost>

Povolíme konfiguraci a reloadneme apache:

a2ensite filechange.corp.devaine.cz
/etc/init.d/apache2 reload

Otevřeme si web "https://filechange.corp.devaine.cz" a projdeme jednoduchým průvodcem nastavení. Nakonfigurováno jest:

Jirafeau

Šifrování

I když je povolené šifrování v konfiguráku, tak nemusí fungovat a na pozadí nemusí šifrovat. Pro šifrování je vyžadován "mcrypt" modul do php. Tento modul je ale už obsolete. Nicméně lze stále používat / nainstalovat ho :

# instalace mcrypt
pecl install mcrypt

# konfigurace pro php:
nano /etc/php/7.4/apache2/conf.d/40-mcrypt.ini
extension=mcrypt.so

# restart apache
/etc/init.d/apache2 restart

To, zda je mcrypt v provozu, lze zjistit přes phpinfo.

To, zda funguje šifrování lze ověřit tak, že admin stažený soubor přes admin menu neotevře, jelikož nemá správnou url, jejíž součástí je dešifrovací klíč.

Protože nastává problém, tak je v plánu se modulu mcrypt zbavit a používat místo něj openssl, viz ticket: #295. Každopádně mcrypt ještě funguje minimálně s php 8.1.
Možná také bude někdy implementováno šifrování na straně klienta, viz #10. V některých případech by to bylo lepší, než na straně serveru. Třeba pokud máte koupenou malou VM s jedním core :).


Automatické čištění starých expirovaných souborů

Na toto je třeba zápis do cronu (pod uživatelem www-data, jelikož pod ním nám běží apache):

crontab -u www-data -e
# deaktivujeme emailové notifikace
MAILTO=""
# m h  dom mon dow   command
*/10 * * * *   php /var/www/Jirafeau/admin.php clean_expired
*/15 * * * *   php /var/www/Jirafeau/admin.php clean_asyn

Admin menu

Je dostupné na adrese /admin.php
Lze v něm smazat nějaký link, nebo se podívat na přehled nahraných souborů. Soubory ale otevřít nejdou, protože jsou zašifrovány.

Jirafeau admin menu

Bezpečnost

1) I když admin menu neumí nic, tak pro jistotu povolíme jen pro skutečného admina. Přidáme si tedy do konfigurace web serveru pravidlo (192.168.1.1 je povolená adresa pro přístup):

<ifmodule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^(/admin.php).*$
  RewriteCond %{REMOTE_ADDR} !=192.168.1.1
  # or this ip
  #RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
  # if not fail
  RewriteRule ^.*$ / [F]
</ifmodule>

2) Další problém může být to, že publikujeme ".git", takže šup s ním ven dalším pravidlem:

RedirectMatch 404 /\.git

3) Pokud je služba veřejná, může nám jí kdokoli zahltit. Povolíme tedy upload jen adresám našich poboček a zbytek zakážeme. To se dělá v konfiguraci Jirafeau

nano lib/config.local.php
...
  'upload_password' => 
  array (
  ),
  'upload_ip' => 
  array ('192.168.1.2','192.168.1.2','192.168.1.3'),
  'upload_ip_nopassword' => 
  array ('192.168.1.2','192.168.1.2','192.168.1.3'),
...

4) Chybí kontrola uploadovaných souborů. To znamená, že útočník může nahrát třeba eicar soubor. Proti tomu existuje opatření, což je vypnutí náhledů uploadnutých souborů. To se opět dělá v konfiguračním souboru:

'preview' => false,

5) Nesouvisí tolik s bezpečností, ale pokud neprovozujete php nativně pod Apache, a budete uploadovat velké soubory, může se vám vytimeoutovat spojení na fastcgi, či jinde. Je na to tedy třeba myslet.


Kompletní konfiguráky

Apache:

# /etc/apache2/sites-available/filechange.corp.devaine.cz.conf
<VirtualHost *:80>
ServerAdmin admin@devaine.cz
ServerName filechange.corp.devaine.cz

VirtualDocumentRoot /var/www/Jirafeau/

# prevent to access to git repository
RedirectMatch 404 /\.git

<ifmodule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^(/admin.php).*$
  RewriteCond %{REMOTE_ADDR} !=192.168.1.1
  # or this ip
  #RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
  # if not fail
  RewriteRule ^.*$ / [F]
</ifmodule>

<Directory /var/www/Jirafeau/>
   AllowOverride All
   Options -Indexes
</Directory>


<Directory /var/www/Jirafeau/data>
   AllowOverride All
   Options -Indexes
   order deny,allow
   deny from all
</Directory>


CustomLog /var/log/apache2/filechange.corp.devaine.cz-access.log common
ErrorLog /var/log/apache2/filechange.corp.devaine.cz-error.log

</VirtualHost>



<VirtualHost *:443>
ServerAdmin admin@devaine.cz
ServerName filechange.corp.devaine.cz

VirtualDocumentRoot /var/www/Jirafeau/

# prevent to access to git repository
RedirectMatch 404 /\.git

<ifmodule mod_rewrite.c>
  RewriteEngine on
  RewriteCond %{REQUEST_URI} ^(/admin.php).*$
  RewriteCond %{REMOTE_ADDR} !=192.168.1.1
  # or this ip
  #RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
  # if not fail
  RewriteRule ^.*$ / [F]
</ifmodule>

<Directory /var/www/Jirafeau/>
   AllowOverride All
   Options -Indexes
</Directory>


<Directory /var/www/Jirafeau/data>
   AllowOverride All
   Options -Indexes
   order deny,allow
   deny from all
</Directory>


CustomLog /var/log/apache2/filechange.corp.devaine.cz-access.log common
ErrorLog /var/log/apache2/filechange.corp.devaine.cz-error.log


SSLEngine on
SSLCertificateFile      /etc/apache2/ssl/filechange.corp.devaine.cz.cer
SSLCertificateKeyFile /etc/apache2/ssl/filechange.corp.devaine.cz.pem
SSLCertificateChainFile /etc/apache2/ssl/DevaineRootCA-G2.crt

</VirtualHost>

Jirafeau config

<?php
/* FIX ME */
$cfg = array (
  'web_root' => 'https://filechange.corp.devaine.cz',
  'var_root' => '/var/www/Jirafeau/data/',
  'lang' => 'auto',
  'style' => 'devaine',
  'organisation' => ''Devaine a.s.',
  'contactperson' => 'admin@devaine.cz',
  'title' => '',
  'preview' => false,
  'enable_crypt' => true,
  'link_name_length' => 8,
  'upload_password' => 
  array (
  ),
  'upload_ip' => 
  array ('192.168.1.2','192.168.1.2','192.168.1.3'
  ),
  'upload_ip_nopassword' => 
  array ('192.168.1.2','192.168.1.2','192.168.1.3'
  ),
  'admin_password' => '701hgfhgfhgfhgfhgffdsgf78bc43dfecae8fdsfdsfdsfsd5fewfewfw',
  'admin_http_auth_user' => 'admin',
  'availabilities' => 
  array (
    'minute' => true,
    'hour' => true,
    'day' => true,
    'week' => true,
    'month' => true,
    'quarter' => false,
    'year' => false,
    'none' => false,
  ),
  'availability_default' => 'month',
  'maximal_upload_size' => 0,
  'proxy_ip' => 
  array (
  ),
  'installation_done' => true,
);

Závěr

Je to hodně malý projekt, velmi nenáročný a jednoduchý. Pro větší nasazení nebude vhodnů kvůli svým bezpečnostním nedostatkům a kvůli i chybějícím funkcím (např. šifrování na straně klienta). Pro mé nasazení je ale plně vhodný.

Zdar Max

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

10.8.2022 07:09 log
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
šifrování na pozadí, dešifrovací klíč je součástí vygenerované url, takže se k datům nedostane ani správce

Správca si nemôže pozrieť log?
10.8.2022 08:04 sdfsdf
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Dost mozna ma op na mysli fragment.
AraxoN avatar 10.8.2022 08:06 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Neviem ako Žirafa, ale Mega ten kľúč dávala do fragmentu (na konci URL, za znakom #). Ten sa na server neposiela, teda sa v logu na serveri neobjaví.
Max avatar 10.8.2022 08:12 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Žirafa to tam do logu hodí, volá se url: "/f.php?h=3QfhNgzN&k=110220ac7b"
Zdar Max
Měl jsem sen ... :(
Max avatar 10.8.2022 08:09 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Správná poznámka. Každopádně v logu se to ale objeví až když to někdo stáhne.
Zdar Max
Měl jsem sen ... :(
10.8.2022 15:35 jiwopene | skóre: 31 | blog: Od každého trochu…
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
V logu by nemělo být vidět to, co je v URL za #. Není klíč za #?
.sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
Max avatar 10.8.2022 17:43 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Není, výše to píšu.
Zdar Max
Měl jsem sen ... :(
10.8.2022 11:09 Petr
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
třeba uživatelé nemají ani přístup na internet).

zajímavá nacistická firma
Max avatar 10.8.2022 12:42 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Z jakého důvodu by měl mít třeba svářeč přístup na internet? Je placený od toho, aby svářel + do systému třeba zanesl nějaké info o opravě.
Zdar Max
PS: My o tom stejně nijak nerozhodujeme, je to věc jeho nadřízeného.
Měl jsem sen ... :(
10.8.2022 12:52 Petr
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Tak pokud se nejedná o koncentrák a nucené práce se samopalem za zády, tak asi nepracuje nonstop, že?
10.8.2022 13:24 ja osobne
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
riešiš blbosti... ak to bude tvoja firma, tak daj prístup na internet každému aj dvakrát...
10.8.2022 14:43 ...
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Přesně, kdo kdy slyšel o přestávkách, lidskosti a wellbeingu.
Max avatar 10.8.2022 17:50 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Představ si, nemáme ani gauč a ani stolní fotbálek na odreagování. I kapitán jeskyňák na tom byl líp.
Zdar Max
Měl jsem sen ... :(
10.8.2022 20:24 ...
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Tak o tvým work-life balance se všeobecně ví a vůbec by se tím nechlubil, to je docela ostuda, že ani v takovém věku nejsi schopný zařídit si rozumný pracovní podmínky a platíš za ňoumu co se pro druhý rozkrájí, i kdyby neměl spát. My máme gym ;-)
Max avatar 11.8.2022 08:18 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Hej, já mám vlastně také gym, koupil jsem si ty mačkací pružinky na ruce a leží mi tu u monitoru a občas si zamačkám :).
Zdar Max
Měl jsem sen ... :(
11.8.2022 09:49 …
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Tak to je fajn, že si to taky občas zmáčkneš.
Bystroushaak avatar 10.8.2022 17:13 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
Lehce relevantní k tématu systémů na výměnu souborů;
blog.rfox.eu | The World’s First Precision Lathe - Constructing The Antikythera Mechanism
12.8.2022 23:57 Olaf
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Dík za magickou červí díru. Konečně něco v Pythonu. Hned to prozkoumám. :o)
13.8.2022 01:04 daldi
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
obvious SAMEFAG is obvious
11.8.2022 14:21 standart
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
jak autor pise, svarec ma svaret a ne surfovat po internetu. S tim souhlasim. A proto se ptam, kdo ma v nejake firme jako napln prace prenaset 'treba velke' soubory od A do B?

Je to vzdycky to prvni, co mi u podobnych nastroju napadne. IT by nam melo pomahat a ne snad pridelavat praci. Napr. Office - za tohle uz mel Gates a podobni, kteri to nam vsem vnutili uz davno sedet v Den Haagu pred tim mezinarodnim tribunalem.

Jen tak namatkou par otazek:

- nekdo tvrdi, ze ten soubor poslal, druhy se dusuje ze tam nebyl -> kdo plati, ze se admin musi divat do logu ty dalsi 'soudy

- je povoleno prenaset i hardcore nebo jen lehke porno

- jak jsou rizeny pristupy k dokumentum typu 'prehled vyplat cele firmy za posledni mesic'

Vzdycky, kdyz se resi podobne problemy, tak to znamena, ze kvuli stromum neni videt les. Lidi proberte se.
Max avatar 11.8.2022 14:39 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Spousta dokumentů a všeho je v nějakém systému.
Některé věci se řeší formou přílohy přes email, což bývá většinou s třetí stranou (chybné faktury, dodáky apod. jednorázovky).
Portál pro výměnu souborů je pak pro předávání dat třetím stranám, těch dat, co se nevlezou do mailu jako příloha (nebo je chtějí bezpečněji předat). Druhy těchto dat jsou různé, od výměny PR věcí (typu: posílám naší sadu všech log, obrázků a dalších věcí firmě, co nám bude dělat informační tabuli, videa z natáčení apod.) až po pracovní, kdy se vyměňují třeba technické výkresy s dodavatelem apod.

Portál výměny souborů není řešení pro nějakou běžnou rutinní činnost, tu pojme workflow informačního systému, dms systému apod. Tento druh výměny souboru se uplatňuje v případě, co nedokážou pojmout běžné procesy.
Jestli si tedy někdo myslí, že podobné služby slouží k rutinním záležitostem, tak se samozřejmě plete.

Pro interní potřeby je využíván podobně. Tj. pro jednorázové akce (v poslední době opět PR pro výměnu většího objemu dat z různých PR akcí, tedy fotky, videa apod.).
Jinak nechápu dotaz s dokazováním, že někdo něco poslal nebo neposlal. Nějaká strana má záměr někomu poslat dokument, pokud se to z nějakého důvodu nezdaří, pošle ho znovu. Pokud si ho druhá strana nestáhne včas, tak se domluví a první strana ho tam znovu nahraje. Garantované procesy zajišťuje informační systém a jiné systémy k tomu určené.

Nic jako dokumenty typu "prehled vyplat cele firmy za posledni mesic" nejsou. Od toho existují systémy k tomu určené (mzdový systém, personální systém apod.)
Zdar Max
Měl jsem sen ... :(
Max avatar 11.8.2022 14:41 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Jinak velké soubory jsou pro uživatele ty soubory, co se nevejdou jako příloha do mailu. Tj. třeba všechno nad 20MiB, což třeba v dnešní době není mnoho, že.
Zdar Max
Měl jsem sen ... :(
Josef Kufner avatar 12.8.2022 14:33 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokud máš Nextcloud, tak ten umí zpřístupnit složku pomocí odkazu, kde netřeba přihlášení a po čase odkaz umí expirovat. Pošleš lidem, lidi nasypou soubory. Pro běžné potřeby naprosto ideální.
Hello world ! Segmentation fault (core dumped)
Max avatar 12.8.2022 14:42 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
O tom vím.
Zdar Max
Měl jsem sen ... :(
9.11.2022 11:06 Kamil
Rozbalit Rozbalit vše Re: Vlastní systém na výměnu souborů
Odpovědět | Sbalit | Link | Blokovat | Admin
Lwepší je rovnou použít P2P jako https://www.sharedrop.io či https://file.pizza/

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.