Ř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é:
- ServerRoot: adresář, kde jsou uloženy soubory konfigurace, chyb a protokolů serveru.
- Poslouchat: Instruuje Apache, aby naslouchal na konkrétní IP adrese a/nebo portech.
- 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í.
- Uživatel a skupina: jméno uživatele/skupiny, pod kterou bude služba httpd spuštěna.
- 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í.
- 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.