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 [b]deny[/b]):
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)
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[/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
Time (s) | Query |
---|---|
0.00009 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00081 | 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.16.82.208' WHERE u.id=1 |
0.00102 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.16.82.208', 1732816019) |
0.00081 | SELECT * FROM punbb_online WHERE logged<1732815719 |
0.00065 | SELECT topic_id FROM punbb_posts WHERE id=309648 |
0.00007 | SELECT id FROM punbb_posts WHERE topic_id=29452 ORDER BY posted |
0.00065 | 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.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00150 | 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.00096 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29452 |
Total query time: 0.00665 s |