Przejdź do głównej zawartości

Linux RHCSA cz.45 - Usługi WEB - Serwer Apache

Najczęściej używaną na świecie usługa sieciową udostępniającą strony WWW jest Apache. Apache jest solidnym i stabilnym serwerem stron www. W zakresie jego możliwości jest również możliwość zastosowania protokołu SSL w celu tworzenie bezpiecznych stron WWW. 

INSTALACJA SERWERA APACHE

Krok 1 - Instalacja pakietu serwera

yum install -y httpd mod_ssl

Krok 2 - Sprawdzenie poprawności instalacji

[root@RHEL01 vsftpd]# rpm -qa | grep http
httpd-2.2.15-15.el6.i686
httpd-tools-2.2.15-15.el6.i686

Krok 3 - Ustawienie by usługa uruchamiała się automatycznie z systemem

# chkconfig httpd on

Krok 4 - Weryfikacja wprowadzonych zmian 

[root@RHEL01 vsftpd]# chkconfig httpd --list
httpd 0:off   1:off   2:on    3:on    4:on    5:on    6:off

KONFIGURACJA SERWERA APACHE

Jeżeli serwer został zainstalowany można zająć się konfiguracją plików i katalogów. Istnieją trzy istotne lokalizacje związane z serwerem apache: 

/etc/httpd/conf/httpd.conf - główny plik konfiguracyjny 

/var/log/httpd - Logi związane z web serwerem

/usr/lib64/httpd/modules - Moduły serwera Apache

Główny plik konfiguracyjny zawiera mnóstwo opcji i trzeba poświęcić chwilę czasu by się z nim zapoznać i nauczyć używać. Został on podzielony na 3 odpowiednie sekcje i opatrzony komentarzami. 

# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as a
# whole (the ‘global environment’).

# 2. Directives that define the parameters of the ‘main’ or ‘default’ server,
# which responds to requests that aren’t handled by a virtual host.
# These directives also provide default values for the settings
# of all virtual hosts.

# 3. Settings for virtual hosts, which allow Web requests to be sent to
# different IP addresses or hostnames and have them handled by the
# same Apache server process.

Kilka opcji dotyczących ustawień globalnych

ServerRoot - Definiuje gdzie znajdują sie pliki konfiguracyjne 

Timeout - Ustawia czas po jakim następuję zerwanie połączenia 

Listen - Ustawia domyślny port nasłuchu (standardowo 80) 

User - Ustawia z jakiego użytkownika serwer zostaje uruchomiony 

Group - Identyfikuje grupę użytkowników serwera

LoadModule - Definiuje moduły uruchamiane przy starcie

Poniższe opcje są już ustawione ale warto wiedzieć co oznaczają: 

DecumentRoot - Lokalizacja plików stron WWW

ServerName - Ustawienia nazwy serwera, adresu IP i nr portu

Domyślnie lokalizacją plików strony WWW jest katalog : 

/var/www/html 

To również można zmienić w pliku konfiguracyjnym odszukujemy wpis : 

<Directory “/var/www/html”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Opcja ta definiuje miejsce przechowywania plików stron oraz jej domyślną strukturę. Jeżeli postanowimy zmienić to ustawienie trzeba wykonać zmianę : 

DocumentRoot “/var/www/html”

By dowiedzieć się czy ustawienia pliku konfiguracyjnego są poprawne możemy wydać polecenie: 

# service httpd configtest
Syntax OK

By zrestartować usługę wydajemy polecenie : 

# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

Jeżeli chcemy zaczytać nowe pliki stron WWW 

# service httpd reload
Reloading httpd: [ OK ]

KONFIGURACJA FIREWALL I SELINUX DLA APACHE

Aby serwer stron www byl w pełni funkcjonalny należy dokonać zmian w zabezpieczeniach systemu. Po pierwsze należy otworzyć ruch na porcie 80. 

Krok 1 - Otworzenie ruchu dla portu 80 w iptables 

iptables -I INPUT 5 -p tcp -m tcp --dport 80 -j ACCEPT

Krok 2 - Zapis ustawień iptables 

[root@RHEL01 vsftpd]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[OK]

Krok 3 - Restart usługi iptables 

[root@RHEL01 vsftpd]# service iptables restart
iptables: Flushing firewall rules:                      [  OK  ]
iptables: Setting chains to policy ACCEPT: filter       [  OK  ]
iptables: Unloading modules:                            [  OK  ]
iptables: Applying firewall rules:                      [  OK  ]
iptables: Loading additional modules: nf_conntrack_ftp  [  OK  ]

Teraz zobaczmy ustawienia SELinux dla usługi Apache: 

httpd_can_network_relay - Zezwala na przekazywanie 

httpd_can_network_connect_db - Umożliwia połączenie z bazami danych 

httpd_use_gpg - Zezwala na użycie gpg w gpg-web domain 

httpd_enable_cgi - Wsparcie CGI 

httpd_use_cifs - Zezwala na dostęp CIF

allow_httpd_mod_auth_pam - Zezwala na użycie mod_auth-pam 

allow_httpd_anon_write - Zezwala na modyfikacje publicznych plików 

httpd_enables_homedirs - Zezwala na odczyt katalogów domowych przez httpd 

allow_httpd_sys_scripts_anon_write - Zezwolenie skryptom apache pisania w katalogu publicznym 

http_dbus_avahi - Zezwolenie na komunikacje z usługami avahi i dbus

httpd_unified - Umożliwia uchwyt do wszystkich treści plików. 

Jeżeli uporaliśmy się z iptables oraz SELinux można zobaczyć jak to wszystko działa 

Krok 1 - Utwórzmy katalogi stron WWW

# mkdir /var/www/site1
# mkdir /var/www/site2

Krok 2 - Sprawdzenie aktualnego kontekstu plików

# ls -Z /var/www/
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 site1
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 site2

Krok 3 - Zmiana kontekstu dla użytkowników i domeny 

[root@RHEL01 www]# chcon -Rvu system_u site1
changing security context of `site1'
[root@RHEL01 www]# chcon -Rvu system_u site2
changing security context of `site2'

Krok 4 - sprawdzenie zmian 

# ls -Z /var/www/
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 error
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 icons
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 site1
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 site2

Komentarze

  1. Przydała by się informacja odnośnie uruchamiania kilku stron na jednym serwerze + konfiguracja DNS-ów.

    OdpowiedzUsuń

Prześlij komentarz

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości