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!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
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







Podobno człowiek...;)








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ń.
#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:
/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)
Offline
Używam apache2 jako webserver.
Czyli wyglądało by to tak w moim przypadku:
#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







Podobno człowiek...;)








/var/www/**/*.{cfg, ini, tmp, bak, ztmp} r,Tak właśnie pozwalasz na odczyt.
Blokowanie w Apparmorze robi się tak (instrukcja deny):
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)
Offline
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ł).
#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