![](https://secure.gravatar.com/avatar/261c28a008ef56e3bdb4bc0b0506de94.jpg?s=120&d=mm&r=g)
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):
Dnia 12 lutego 2015 13:34 Dariusz Kowalczyk dariusz@kowalczyk.it napisał(a):
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
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”.
-- Pozdrawiam Jacek Cieplok _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms