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/urandom
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/urandom
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 [b]deny[/b]):

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 [b]exclude[/b] i [b]exclude-from[/b]:
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[/quote]
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
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.009 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00090 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.136.22.184' WHERE u.id=1
0.00061 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.136.22.184', 1732814965)
0.00049 SELECT * FROM punbb_online WHERE logged<1732814665
0.00060 DELETE FROM punbb_online WHERE ident='54.36.148.247'
0.00098 SELECT topic_id FROM punbb_posts WHERE id=309653
0.00077 SELECT id FROM punbb_posts WHERE topic_id=29452 ORDER BY posted
0.00058 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29452 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00100 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29452 ORDER BY p.id LIMIT 0,25
0.00071 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29452
Total query time: 0.00683 s