Vyhledávání na webu

Řada RHCSA: Instalace, konfigurace a zabezpečení webového a FTP serveru – část 9


Webový server (také známý jako HTTP server) je služba, která zpracovává obsah (nejčastěji webové stránky, ale i jiné typy dokumentů) ke klientovi v síti.

FTP server je jedním z nejstarších a nejběžněji používaných zdrojů (dokonce dodnes) ke zpřístupnění souborů klientům v síti v případech, kdy není nutné žádné ověřování, protože FTP používá uživatelské jméno a heslobez šifrování.

Webový server dostupný v RHEL 7 je verze 2.4 Apache HTTP Server. Pokud jde o FTP server, použijeme velmi zabezpečeného FTP démona (aka vsftpd) k navázání spojení zabezpečených TLS.

V tomto článku vysvětlíme, jak nainstalovat, nakonfigurovat a zabezpečit webový server a FTP server v RHEL 7.

Instalace Apache a FTP serveru

V této příručce budeme používat server RHEL 7 se statickou IP adresou 192.168.0.18/24. Chcete-li nainstalovat Apache a VSFTPD, spusťte následující příkaz:


yum update && yum install httpd vsftpd

Po dokončení instalace budou obě služby zpočátku zakázány, takže je musíme prozatím spustit ručně a povolit, aby se spouštěly automaticky počínaje dalším spuštěním:


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

Kromě toho musíme otevřít porty 80 a 21, kde naslouchají weboví a ftp démoni, abychom umožnili přístup k těmto službám zvenčí:


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

Chcete-li potvrdit, že webový server funguje správně, spusťte prohlížeč a zadejte IP adresu serveru. Měli byste vidět testovací stránku:

Pokud jde o ftp server, budeme jej muset dále nakonfigurovat, což provedeme za minutu, než potvrdíme, že funguje podle očekávání.

Konfigurace a zabezpečení webového serveru Apache

Hlavní konfigurační soubor pro Apache je umístěn v /etc/httpd/conf/httpd.conf, ale může se spoléhat na další soubory v /etc/httpd /conf.d.

Ačkoli by výchozí konfigurace měla být pro většinu případů dostatečná, je dobré se seznámit se všemi dostupnými možnostmi, jak je popsáno v oficiální dokumentaci.

Jako vždy si před úpravou hlavního konfiguračního souboru vytvořte záložní kopii:


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

Poté jej otevřete pomocí preferovaného textového editoru a vyhledejte následující proměnné:

  1. ServerRoot: adresář, kde jsou uloženy soubory konfigurace, chyb a protokolů serveru.
  2. Poslouchat: Instruuje Apache, aby naslouchal na konkrétní IP adrese a/nebo portech.
  3. Zahrnout: umožňuje zahrnutí dalších konfiguračních souborů, které musí existovat. V opačném případě server selže, na rozdíl od direktivy IncludeOptional, která je tiše ignorována, pokud zadané konfigurační soubory neexistují.
  4. Uživatel a skupina: jméno uživatele/skupiny, pod kterou bude služba httpd spuštěna.
  5. DocumentRoot: Adresář, ze kterého bude Apache obsluhovat vaše dokumenty. Ve výchozím nastavení jsou všechny požadavky přebírány z tohoto adresáře, ale symbolické odkazy a aliasy mohou být použity k ukázání na jiná umístění.
  6. ServerName: tato direktiva nastavuje název hostitele (nebo IP adresu) a port, který server používá k identifikaci.

První bezpečnostní opatření bude spočívat ve vytvoření vyhrazeného uživatele a skupiny (tj. tecmint/tecmint), kteří budou webový server provozovat jako, a ve změně výchozího portu na vyšší (9000 v tomto případě):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

Konfigurační soubor můžete otestovat pomocí.


apachectl configtest

a pokud je vše OK, restartujte webový server.


systemctl restart httpd

a nezapomeňte povolit nový port (a deaktivovat starý) ve firewallu:


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

Všimněte si, že kvůli zásadám SELinux můžete použít pouze porty, které vrátí


semanage port -l | grep -w '^http_port_t'

pro webový server.

Pokud chcete použít jiný port (tj. TCP port 8100), budete jej muset přidat do kontextu portu SELinux pro službu httpd:


semanage port -a -t http_port_t -p tcp 8100

Chcete-li dále zabezpečit instalaci Apache, postupujte takto:

1. Uživatel Apache běží, protože by neměl mít přístup k shellu:


usermod -s /sbin/nologin tecmint

2. Zakažte výpis adresáře, aby prohlížeč nemohl zobrazit obsah adresáře, pokud v tomto adresáři není index.html.

Upravte /etc/httpd/conf/httpd.conf (a konfigurační soubory pro virtuální hostitele, pokud existují) a ujistěte se, že direktiva Options, jak nahoře, tak na úrovni bloku adresáře je nastaveno na Žádný:


Options None

3. Skrýt informace o webovém serveru a operačním systému v odpovědích HTTP. Upravte /etc/httpd/conf/httpd.conf následovně:


ServerTokens Prod 
ServerSignature Off

Nyní jste připraveni začít poskytovat obsah z vašeho adresáře /var/www/html.

Konfigurace a zabezpečení FTP serveru

Stejně jako v případě Apache je hlavní konfigurační soubor pro Vsftpd (/etc/vsftpd/vsftpd.conf) dobře okomentován a zatímco výchozí konfigurace by měla pro většinu aplikací stačit , měli byste se seznámit s dokumentací a manuálovou stránkou (man vsftpd.conf), abyste mohli provozovat ftp server efektivněji (to nemohu dostatečně zdůraznit!).

V našem případě se jedná o tyto použité směrnice:


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

Pomocí chroot_local_user=YES budou místní uživatelé (ve výchozím nastavení) umístěni do chrootovaného vězení ve svém domovském adresáři hned po přihlášení. To znamená, že místní uživatelé nebudou mít přístup k žádným souborům mimo jejich odpovídající domovské adresáře.

Nakonec, chcete-li povolit ftp číst soubory v domovském adresáři uživatele, nastavte následující logickou hodnotu SELinux:


setsebool -P ftp_home_dir on

Nyní se můžete připojit k ftp serveru pomocí klienta, jako je Filezilla:

Všimněte si, že protokol /var/log/xferlog zaznamenává stahování a nahrávání, které se shoduje s výše uvedeným seznamem adresářů:

Čtěte také: Omezte šířku pásma FTP sítě využívanou aplikacemi v systému Linux pomocí funkce Trickle

souhrn

V tomto tutoriálu jsme vysvětlili, jak nastavit web a ftp server. Vzhledem k obsáhlosti tématu není možné pokrýt všechny aspekty těchto témat (tj. virtuální webhostingy). Proto vám doporučuji, abyste si také prohlédli další skvělé články na tomto webu o Apache.