Re: [lms] Paczka lms, Tom 86, Numer 15

Dzięki za pomoc ;)
@Dariusz Kowalczyk Wbrew pozorom bardzo dużo ma do tego serwer www. Poczynając od dyrektyw i sposobu wykonywania skryptu po stronie serwera kończąc na regułach rewrite. Rzuć okiem na instalację prostej joomli czy wordpressa pod nginx, a apache. Proste serwisy, a jednak trzeba to i owo pozmieniać żeby działało (dla przykładu brak obsługi .htaccess). Stąd moje pytanie. Wszystko się da dostosować tylko nie wszystko łatwo. Jeśli twórcy LMS silnie rekomendują w manualach Apache to byłem przekonany, że coś może być na rzeczy.
Pozdrawiam
W dniu 12 lutego 2015 00:15 użytkownik lms-request@lists.lms.org.pl napisał:

Moje pytanie było retoryczne :-) Ale jak już zacząłeś to odpowiem. Lms jest napisany w php i do działania potrzebuje serwera www który potrafi pracować z interpreterem php, sam serwer nie ma znaczenia. Po prostu trzeba się nauczyć konfigurować dany serwer www żeby działał szybko i bezpiecznie.
Można narzekać, że Apache jest wolny ale Nginx nie wprowadził funkcji podobnej do .htaccess specjalnie żeby być szybkim. Na szczęście w Apache można to wyłączyć i konfigurować wszystkie reguły (także modrewite) w sekcji virtualhost.
Włączenie wspomnianą dyrektywą obsługi .htaccess zabija wydajność maszyny, bo apache za każdym żądaniem dostępu do pliku musi przeglądać całe drzewo katalogów w poszukiwaniu plików .htaccess. jak takie bezsensowne przeszukiwanie wpływa na wydajność łatwo sobie wyobrazić.
A że .htaccess wiele ułatwia bo pozwala się odpierwiastkować użytkownikom od admina, a niech sobie użytkownicy knują reguły w .htaccess...to inna sprawa, zawsze jest coś za coś,a tutaj jest albo albo, albo wygoda albo wydajność i bezpieczeństwo.
Łatwo narzekać na apache że jest wolny ...ale nie jest to do końca prawdą, jest elastyczny bo zapewnia mnogość funkcji ...np wspomniany .htaccess ale gdy się go okroi z funkcjonalności i wywali niepotrzebne moduły jego wydajność znacząco rośnie.
lms używa plików .htaccess w katalogach
lms/backups/.htaccess lms/documents/.htaccess lms/lib/.htaccess lms/templates_c/.htaccess lms/modules/.htaccess lms/.htaccess lms/contrib/bin/.htaccess lms/userpanel/lib/.htaccess lms/userpanel/templates_c/.htaccess
ale jedyne co w tych plikach jest to
Order deny,allow Deny from all
jak widać .htaccess jest użyte tylko po to by zabezpieczyć dostęp do tych katalogów.
jedynym wyjątkiem jest lms/.htaccess
w którym jest
<Files lms.ini> Order Deny,Allow Deny From All
to zabezpieczenie na wypadek sytuacji gdy ktoś plik lms.ini umieszcza w katalogu
lms/
zamiast /etc/lms
Wrzucenie kodu lms-a na serwerze z nginx zmieni tylko tyle że te katalogi nie będą domyślnie chronione i trzeba to zrobić w konfiguracji nginx-a ale lms działać będzie bez żadnego problemu.
Przyśpieszenie działania serwera apache uzyskać można wyłączając globalnie w pliku httpd.conf dyrektywę AllowOverride
AllowOverride None
i konfigurując odpowiednie reguły w virtualhost obsługującym lms-a.
i dodanie (tu przykładowa ścieżka do katalogu w którym znajduje się lms)
<Directory "/var/www/html/lms/backups"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/documents"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/lib"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/templates_c"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/modules"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/contrib/bin"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/userpanel/lib"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/userpanel/templates_c"> Order deny,allow Deny from all </Directory>
oraz ochrona lms.ini jeśłi nie jest umieszczony w /etc/lms
<Files "/var/www/html/lms/lms.ini"> Order allow,deny Deny from all </Files>
Konfiguracja virtualhost dla lms-a w apache beż użycia .htaccess wtedy wygląda tak
<VirtualHost *:80> ServerAdmin administrator@wsb-nlu.edu.pl DocumentRoot /var/www/html/lms ServerName lms.org.pl ErrorLog logs/lms.org.pll-error_log CustomLog logs/lms.org.pl-access_log common
<Directory "/var/www/html/lms"> AllowOverride None Order allow,deny Allow from all </Directory>
<Directory "/var/www/html/lms/backups"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/documents"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/lib"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/templates_c"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/modules"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/contrib/bin"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/userpanel/lib"> Order deny,allow Deny from all </Directory>
<Directory "/var/www/html/lms/userpanel/templates_c"> Order deny,allow Deny from all </Directory>
<Files "/var/www/html/lms/lms.ini"> Order allow,deny Deny from all </Files>
</VirtualHost>
I taka tez konfiguracja powinna być proponowana jako domyślna w dokumentacji lms-a.
Analogicznie trzeba to zabezpieczyć dla nginx-a
W dniu 12 lutego 2015 08:40 użytkownik Marcin Nastałek < mnastalek@egov4you.info> napisał:

Dnia 12 lutego 2015 13:34 Dariusz Kowalczyk dariusz@kowalczyk.it napisał(a):
Witam, ośmielam się zwrócić uwagę, że te dyrektywy nie zadziałają z nowszą wersją apache. Zamiast „order deny,allow” i „deny/allow from all” należy użyć dyrektywy „require all denied/granted”.

Nowszą czyli jaką, podaj proszę numer wersji na której nie zadziałają dotychczasowe dyrektywy.
Dariusz Kowalczyk
Dnia 16 lut 2015 o godz. 18:31 Jacek Cieplok jackii@o2.pl napisał(a):

W dniu 16.02.2015 18:54, Dariusz Kowalczyk napisał(a):
Nowszą czyli jaką, podaj proszę numer wersji na której nie zadziałają dotychczasowe dyrektywy.
Przecież to gołym okiem widać, że w apache 2.4 te dyrektywy nie będą działać.

E tam gołym, przestań świntuszyć :-) p.s. Zwróciłem grzecznie koledze uwagę żeby był precyzyjny w tym co pisze, zamiast pisać nowym apache niech poda wersję, takie precyzyjne informacje mają swoją wartość, choćby edykacyjną. Jak już zadawać dobievtrud żeby coś napisać niech to ma jak największą wartość dla czytających :-)
pozdrawiam
Dariusz Kowalczyk
Dnia 16 lut 2015 o godz. 18:59 Tomasz Chiliński tomasz.chilinski@chilan.com napisał(a):

Dnia 16 lutego 2015 19:05 Dariusz Kowalczyk dariusz@kowalczyk.it napisał(a):
Witam ponownie Jak przypuszczam, wszystko może zależeć od systemu. U mnie stare wpisy przestały działać po aktualizacji do bodajże 2.4.6. Na każdej otwieranej stronie pojawiał się błąd 403. Żeby było śmieszniej, to na liście załadowanych modułów można zobaczyć „access_compat_module (shared)” - mimo to do momentu zamiany dyrektyw Order, Deny/Allow na odpowiednie Require serwisy odmawiały dostępu wszystkim. Dlatego też zwróciłem uwagę na zastosowanie w tych przykładach przestarzałych dyrektyw.

zadziałają, wyjaśnienie poniżej
In 2.2, access control based on client hostname, IP address, and other characteristics of client requests was done using the directives Order, Allow, Deny, and Satisfy.
In 2.4, such access control is done in the same way as other authorization checks, using the new module mod_authz_host. The old access control idioms should be replaced by the new authentication mechanisms, although for compatibility with old configurations, the new module mod_access_compat is provided.
Dariusz Kowalczyk
Dnia 16 lut 2015 o godz. 18:31 Jacek Cieplok jackii@o2.pl napisał(a):
uczestnicy (5)
-
Dariusz Kowalczyk
-
Jacek
-
Jacek Cieplok
-
Marcin Nastałek
-
Tomasz Chiliński