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 OrderAllowDeny, 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