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  2018-03-10 21:00:12

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Podstawy - konfiguracja chmod i chown dla WWW

Cześć, mam pytanie z podstaw. Jak z punktu widzenia bezpieczeństwa powinno wyglądać hostowanie strony WWW na serwerze Apache. Chodzi mi o lokalizację i uprawnienia plików i katalogów. Obecnie główny katalog strony WWW stworzyłem w /var/www/nazwastrony/. Właścicielem katalogu ustanowiłem grupę www-data, do grupy dodałem swojego użytkownika, do katalogu /nazwastrony nadałem rekurencyjnie chmod 775. Na próbę wrzucam tam jakiś popularny CMS, jest nim Prestashop. Działać działa, bo czemu ma nie działać? Jednak jak powinno robić się to profesjonalnie [b]z punktu widzenia bezpieczeństwa[/b]? W internecie jest wiele zdań i chciałbym zapytać się o to Was.


Pozdrawiam

Offline

 

#2  2018-03-10 21:20:47

  Jacekalex - Podobno człowiek...;)

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

Re: Podstawy - konfiguracja chmod i chown dla WWW

Bezpiecznie?  Serwer WWW nie powinien w ogóle być właścicielem ani mieć prawa zapisu w skryptach sklepu.
Kłopot jest wtedy z folderami tymczasowymi, logów czy obrazkami, jakie zapisuje CMS napisany w PHP, ale przynajmniej ktoś Ci do niego backdoora c99 nie dorzuci zbyt łatwo.

Trudniejsza sprawa jest z najnowszymi skryptami CMS używającymi Composera do instalacji Modułów jak Prestashop 1.7 i Magento 2.2, bo one już przypominają bardziej systemy operacyjne aniżeli skrypty CMS, i potem te wszystkie moduły muszą ciągle coś zapisywać  w rożnych częściach CMSa.

Posadzenie bezpiecznie Magento-2.2 w trybie oddzielnego właściciela plików aniżeli serwer WWW czy demon PHP, to już spore wyzwanie, i często ani myśli działać w takiej konfiguracji.
Prestashop 1.7 dzielnie podąża w tym samym kierunku.

Pozdro


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

Offline

 

#3  2018-03-10 21:27:02

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Re: Podstawy - konfiguracja chmod i chown dla WWW

Właśnie na tym polega problem. Gdyby chodziło o zwykłą statyczną stronę, której skrypty nie potrzebują mieć możliwości zapisywania czy edytowania plików to sprawa jest raczej oczywista. Tutaj w grę wchodzi Prestashop 1,7.

Offline

 

#4  2018-03-10 22:44:50

  Jacekalex - Podobno człowiek...;)

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

Re: Podstawy - konfiguracja chmod i chown dla WWW

To zobacz w dokumentacji Presty, wersja 1.7 to jest wersja developerska, 50 razy trudniejsza od Prestashopa 1.6, ale dalej łatwiejsza od Magento -2.2.

W każdym razie, jak na VPSie dla testu ściągnąłem z Githuba Preste 1.7,
i doinstalowałem koniecznych modułów Composera, to folder Presty miał 400 MB pojemności, czyli mniej więcej tyle co 6 instalacji systemu Puppy Linux, albo instalka Androida.

Pozdro


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

Offline

 

#5  2018-03-10 23:27:37

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Re: Podstawy - konfiguracja chmod i chown dla WWW

Wiem, swój sklep mam na preście 1,6 i na razie nie aktualizuje do 1,7. Tę stronę działającą mam na hostingu, na VPSa wrzuciłem prestę 1,7 dla testu. Rzeczywiście, masz rację - jest ciężka, sam folder po rozpakowaniu waży grubo ponad 100 megabajtów.

Nie mniej, wracając do tematu. Czy dodanie użytkownika do grupy www-data, chown katalogu strony na tę grupę i hostowanie strony z /var/www to jest rozwiązanie bezpieczne czy profesjonalnie powinno wyglądać to inaczej?

Offline

 

#6  2018-03-10 23:40:42

  Jacekalex - Podobno człowiek...;)

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

Re: Podstawy - konfiguracja chmod i chown dla WWW

Jeżeli strona działa, a serwer www i demon php nie mogą zapisywać skryptów PHP, JS i layoutów w folderze Presty, to może trudniej się instaluje rozszerzenia, ale też nie da się w prosty sposób wpakować backdoora do sklepu, albo dokleić jakiegoś syfu do sktyptów sklepu, co kończy się eleganckim czerwonym ostrzeżeniem w przeglądarce Chrome.

Jeżeli ten stan osiągniesz, to pierwsza ważna linia obrony będzie załatwiona.


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

Offline

 

#7  2018-03-11 14:41:51

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Re: Podstawy - konfiguracja chmod i chown dla WWW

OK dzięki za odpowiedź, właśnie takiej informacji potrzebowałem. Jak już dobrze się z tym zaznajomię to na pewno będę jeszcze pytał o bezpieczeństwo bazy danych i kilka innych spraw, ale to w innym temacie. Pozdrawiam.

Offline

 

#8  2018-03-14 00:17:01

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Re: Podstawy - konfiguracja chmod i chown dla WWW

A jeszcze jedno pytanie: czy jest sens robić chroot dla katalogu strony? Wiele o tym czytałem, ale większość sensownych artykułów pochodzi sprzed kilku, kilkunastu lat i argumenty w nich zawarte mogą być nieaktualne.

Na tę chwilę udało mi się skonfigurować Apache tak, że Presta działa bez problemu (choć w trybie debugowania wywala trochę błędów z powodu braku praw do zapisywania w niektórych katalogach cache podczas pacy w backoffice). Właścicielem katalogu /var/www/strona jest użytkownik systemu, grupą tego katalogu jest www-data. Wszystkie katalogi i podkatalogi presty mają chmod 750 a pliki 640. Nie wiem tylko czemu nadal mogę instalować moduły przez panel presty... nie mogę przez panel zmienić np. loga bo wyrzuca brak uprawnień do zapisu, ale stworzyć katalog z nowym modułem presta może.

Offline

 

#9  2018-03-14 03:06:36

  Jacekalex - Podobno człowiek...;)

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

Re: Podstawy - konfiguracja chmod i chown dla WWW

Chroot ma coś zabezpieczać?

Teoretycznie tak, praktycznie chroot to prehistoria, raczej Apparmor albo jak chcesz koniecznie coś podobniejszego do chroota, to Docker lub LXC.

Chroot z resztą nigdy zbyt bezpieczny nie był.


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

Offline

 

#10  2018-03-14 11:30:20

  777 - Użytkownik

777
Użytkownik
Zarejestrowany: 2018-03-10

Re: Podstawy - konfiguracja chmod i chown dla WWW

A możesz wytłumaczyć (pytam z ciekawości) dlaczego chroot nigdy bezpieczny nie był?

Do Apparmor już sobie czytam manuala, bardzo ciekawe narzędzie. Kontenerowanie zaś to chyba zbyt wiele jak na moje potrzeby. :)

Offline

 

#11  2018-03-14 13:02:53

  Jacekalex - Podobno człowiek...;)

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

Re: Podstawy - konfiguracja chmod i chown dla WWW

[quote=777]A możesz wytłumaczyć (pytam z ciekawości) dlaczego chroot nigdy bezpieczny nie był?

Do Apparmor już sobie czytam manuala, bardzo ciekawe narzędzie. Kontenerowanie zaś to chyba zbyt wiele jak na moje potrzeby. :)[/quote]
https://access.redhat.com/blogs/766093/posts/1975883


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

Offline

 

Stopka forum

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

[ Generated in 0.013 seconds, 9 queries executed ]

Informacje debugowania

Time (s) Query
0.00013 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00131 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='54.226.126.38' WHERE u.id=1
0.00129 UPDATE punbb_online SET logged=1711664331 WHERE ident='54.226.126.38'
0.00070 SELECT * FROM punbb_online WHERE logged<1711664031
0.00072 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=30352 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00313 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=30352 ORDER BY p.id LIMIT 0,25
0.00158 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=30352
Total query time: 0.00895 s