Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2017-03-26 11:53:33

  Oen44 - Nowy użytkownik

Oen44
Nowy użytkownik
Zarejestrowany: 2017-03-26

Lsyncd - kopia lokalna, pomijanie plików

Witam,

Potrzebuję by na maszynie tworzyła się kopia w czasie rzeczywistym. Chodzi tu o wiele folderów, jednak chciałbym żeby nie kopiowało wszystkich plików, czyli takich z rozszerzeniami jak .cfg, .tmp, .bak, .ztmp, .ini. Aktualnie używam do tego lsyncd, działa jak trzeba i kopiuje. Problem w tym, że kopia pojawia się w katalogu WWW (tak ma być), przez co jest dostęp do plików konfiguracji i nie jest to zbyt bezpieczne.
Jakieś sugestie na alternatywę lsyncd albo jego konfigurację?

Offline

 

#2  2017-03-26 12:53:36

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Lsyncd - kopia lokalna, pomijanie plików

Ja serwer WWW zawsze zabezpieczam profilem Apparmora, gdzie można  ściśle napisać, jakie pliki i gdzie może otwierać.

Przykład do Ligthhtd (dosyć lamerski, ale zrobiony w 15 minut i działa):
w nim nie ma ograniczeń w zakresie rozszerzeń.

Kod:

#include <tunables/global>

/usr/sbin/lighttpd {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/web-data>
  #include <abstractions/perl>


  capability dac_override,
  capability dac_read_search,
  capability net_bind_service,
  capability setgid,
  capability setuid,
  capability sys_resource,
  capability sys_chroot,



  /bin/bash mix,
  /bin/cat mix,
  /etc/lighttpd r,
  /etc/lighttpd/*.conf r,
  /etc/lighttpd/auth.d/* r,
  /etc/lighttpd/conf.d/*.conf r,
  /etc/lighttpd/lighttpd.pem r,
  /etc/lighttpd/vhosts.d r,
  /etc/lighttpd/vhosts.d/* r,
  /etc/ssl/lighttpd/*.pem   r,
  /etc/ssl/lighttpd/*.crt   r,
  /etc/lighttpd/lighttpd.user   r,
  /etc/lighttpd/lighttpd.group   r,
  
  /home/Gentoo/sources/** r,
  /usr/lib/lighttpd/*.so mr,
  /usr/lib64/lighttpd/*.so mr,
  /usr/sbin/lighttpd mix,
  /usr/share/cups/html/index.html r,
  /var/cache/lighttpd/ r,
  /var/cache/lighttpd/** rwl,
  /var/lib/lighttpd/ r,
  /var/lib/lighttpd/** rwl,
  /var/log/lighttpd/*.log rw,
  /{,var/}run/php.sock rw,
  /{,var/}run/lighttpd.pid rwl,
  /var/www/*/**     r,
  /home/www/**  r,
}

A tak się przykładowo oznacza dozwolone rozszerzenia plików:

Kod:

  /home/**/*.{ASF,AVI,FLV,MKV,MOV,MP4,MPEG,MPG,SRT,SWF,WMV,WEBM.OGG,asf,avi,flv,mkv,mov,mp4,mpeg,webm,mpg,srt,swf,wmv,m2ts,m2t,ogg,part,mplaylist} r,

To akurat lista formatów multimedialnych  z mpv, mplayera i vlc, ale w innych profilach można to identycznie załatwić.

Ostatnio edytowany przez Jacekalex (2017-03-26 13:01:40)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2017-03-26 13:16:27

  Oen44 - Nowy użytkownik

Oen44
Nowy użytkownik
Zarejestrowany: 2017-03-26

Re: Lsyncd - kopia lokalna, pomijanie plików

Używam apache2 jako webserver.
Czyli wyglądało by to tak w moim przypadku:

Kod:

#include <tunables/global>

/usr/sbin/apache2 {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/web-data>
  #include <abstractions/perl>


  capability dac_override,
  capability dac_read_search,
  capability net_bind_service,
  capability setgid,
  capability setuid,
  capability sys_resource,
  capability sys_chroot,

  /var/www/**/*.{cfg, ini, tmp, bak, ztmp} r,
}

Tak?

Offline

 

#4  2017-03-26 13:28:01

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Lsyncd - kopia lokalna, pomijanie plików

Kod:

/var/www/**/*.{cfg, ini, tmp, bak, ztmp} r,

Tak właśnie pozwalasz na odczyt.


Blokowanie w Apparmorze robi się tak  (instrukcja deny):

Kod:

deny @{HOME}/.gnome2_private/** mrwlk,
audit deny @{HOME}/.gnupg/** mrwlk,
audit deny @{HOME}/.ssh/** mrwlk,
audit deny @{HOME}/.gnome2/keyrings/**  mrwlk,

Najlepiej w tym nawiasie po /var/www/**/* umieść rozszerzenia tylko takich plików, jakie apache może otwierać.
Możesz wtedy mieć przypał zeskryptami php, bo prawie wszyskie CMSy przechowują dane tymczasowe ww plikach bez rozszerzeń, takze jak masz w /var/www/ jakieś osobne foldery tmp czy cache, musisz am pozwolić na zapis i odczyt rekursywnie.

PS:
Ten lsyncd bazuje na rsyncu, który obrabia instrukcje exclude i exclude-from:
http://www.thegeekstuff.com/2011/01/rsync-exclude-files-and-folders/

W każdym razie da się tak zrobić, żeby różne typu plików nie lądowały w zasięgu serwera www, tylko gdzie indziej.

W samej konfiguracji Apacha też się da różnymi modułami na kilka sposobów ustawić, jakie pliki serwer wyświetli, ale jest z tym dużo kombinowania.

Zasadniczo w /var/www nie powinien się znajdować żaden plik, którego serwer www nie powinien wyświetlić.

Ostatnio edytowany przez Jacekalex (2017-03-26 13:47:44)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2017-03-26 13:54:37

  Oen44 - Nowy użytkownik

Oen44
Nowy użytkownik
Zarejestrowany: 2017-03-26

Re: Lsyncd - kopia lokalna, pomijanie plików

Na szczęście serwer WWW nie jest wykorzystywany do użytku publicznego. Jedynie tyle co serwer gier używa go jako miejsca skąd ma pobierać pliki dla graczy gdy się z nim łączą (szybszy przesył).

Kod:

#include <tunables/global>

/usr/sbin/apache2 {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/web-data>
  #include <abstractions/perl>


  capability dac_override,
  capability dac_read_search,
  capability net_bind_service,
  capability setgid,
  capability setuid,
  capability sys_resource,
  capability sys_chroot,

  audit deny /var/www/html/**.{cfg, ini, tmp, bak, ztmp} mrwlk,

  #include <apache2.d>
}

To jest zawartość pliku /etc/apparmor.d/usr.sbin.apache2.

A to output po przeładowaniu profilu.

root@srv7542:/etc/apparmor.d# apparmor_parser -r usr.sbin.apache2
Warning: unable to find a suitable fs in /proc/mounts, is it mounted?
Use --subdomainfs to override.
root@srv7542:/etc/apparmor.d# apparmor_parser -r --subdomainfs usr.sbin.apache2
Cache read/write disabled: /sys/kernel/security/apparmor/features interface file missing. (Kernel needs AppArmor 2.4 compatibility patch.)
Warning from stdin (line 1): apparmor_parser: cannot use or update cache, disable, or force-complain via stdin

Coś zrobiłem źle?

@Edit
<Files ~ "\.(ini|cfg|tmp|bak|ztmp)$">
Order allow,deny
Deny from all
</Files>

I sprawa załatwiona. Mogłem od razu o tym pomyśleć.
Dziękuje za pomoc, można zamknąć.

Ostatnio edytowany przez Oen44 (2017-03-26 14:03:17)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)