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
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
/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