RHCSA Serie: Installéieren, konfiguréieren a sécheren e Web- a FTP-Server - Deel 9


E Webserver (och bekannt als HTTP-Server) ass e Service deen Inhalt (meeschtens Websäiten, awer och aner Aarte vun Dokumenter) iwwer e Client an engem Netz handhabt.

En FTP-Server ass ee vun den eelsten an am meeschte benotzte Ressourcen (och bis haut) fir Dateien op engem Netzwierk verfügbar ze maachen a Fäll wou keng Authentifikatioun néideg ass well FTP Benotzernumm a Passwuert ouni Verschlësselung benotzt.

De Webserver verfügbar am RHEL 7 ass Versioun 2.4 vum Apache HTTP Server. Wat den FTP Server ugeet, benotze mir de Very Secure Ftp Daemon (alias vsftpd) fir Verbindungen opzebauen, déi vun TLS geséchert sinn.

An dësem Artikel erkläre mir wéi Dir e Webserver an e FTP-Server an RHEL 7 installéiere, konfiguréieren a séchert.

Installéiert Apache an FTP Server

An dësem Guide benotze mir e RHEL 7 Server mat enger statesch IP Adress vun 192.168.0.18/24. Fir Apache a VSFTPD z'installéieren, fuert de folgende Kommando:

# yum update && yum install httpd vsftpd

Wann d'Installatioun fäerdeg ass, ginn déi zwee Servicer ufanks deaktivéiert, also musse mir se fir de Moment manuell starten an aktivéieren se automatesch unzefänken mam nächste Boot:

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

Zousätzlech musse mir d'Ports 80 an 21 opmaachen, wou de Web- a ftp-Dämone respektiv lauschteren, fir Zougang zu dëse Servicer vu baussen z'erméiglechen:

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

Fir ze bestätegen datt de Webserver richteg funktionnéiert, brennt Äre Browser a gitt d'IP vum Server an. Dir sollt d'Test Säit gesinn:

Wat den ftp-Server ugeet, musse mir et weider konfiguréieren, wat mir an enger Minutt maachen, ier mir bestätegen datt et funktionnéiert wéi erwaart.

Apache Web Server konfiguréieren a sécheren

D'Haaptkonfiguratiounsdatei fir Apache ass an /etc/httpd/conf/httpd.conf, awer et kann op aner Dateien, déi am /etc/httpd/conf.d präsent sinn, vertrauen. .

Och wann d'Standardkonfiguratioun fir déi meescht Fäll genuch sollt sinn, ass et eng gutt Iddi mat all verfügbaren Optiounen vertraut ze ginn wéi an der offizieller Dokumentatioun beschriwwen.

Wéi ëmmer, maacht eng Backupkopie vun der Haaptkonfiguratiounsdatei ier Dir se ännert:

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

Da öffnen et mat Ärem gewënschte Texteditor a kuckt no de folgende Variablen:

  1. ServerRoot: den Dossier wou d'Konfiguratioun, d'Fehler an d'Logdateien vum Server gespäichert ginn.
  2. Nolauschteren: Instruéiert Apache fir op spezifesch IP Adressen an/oder Ports ze lauschteren.
  3. Include: erlaabt d'Inklusioun vun anere Konfiguratiounsdateien, déi musse existéieren. Soss fällt de Server aus, am Géigesaz zu der IncludeOptional Direktiv, déi roueg ignoréiert gëtt wann déi spezifizéiert Konfiguratiounsdateien net existéieren.
  4. Benotzer a Grupp: den Numm vum Benotzer/Grupp fir den httpd Service auszeféieren.
  5. DocumentRoot: De Verzeichnis aus deem Apache Är Dokumenter servéiert. Par défaut ginn all Ufroen aus dësem Verzeichnis geholl, awer symbolesch Linken an Aliasen kënne benotzt ginn fir op aner Plazen ze weisen.
  6. ServerName: Dës Direktiv setzt den Hostnumm (oder IP Adress) an den Hafen fest, deen de Server benotzt fir sech selwer z'identifizéieren.

Déi éischt Sécherheetsmoossnam besteet aus der Schafung vun engem dedizéierten Benotzer a Grupp (dh tecmint/tecmint) fir de Webserver als ze lafen an de Standardport op e méi héijen z'änneren (9000 an dësem Fall):

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

Dir kënnt d'Konfiguratiounsdatei testen mat.

# apachectl configtest

a wann alles OK ass, da restart de Webserver.

# systemctl restart httpd

a vergiesst net den neien Hafen z'aktivéieren (an deen alen auszeschalten) an der Firewall:

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

Notéiert datt, wéinst der SELinux Politik, Dir kënnt nëmmen d'Ports benotzen, déi zréckginn vun

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

fir de Webserver.

Wann Dir en anere Port benotze wëllt (dh TCP Port 8100), musst Dir en an den SELinux Port Kontext fir den httpd Service addéieren:

# semanage port -a -t http_port_t -p tcp 8100

Fir Är Apache Installatioun weider ze sécheren, befollegt dës Schrëtt:

1. De Benotzer Apache leeft wéi soll keen Zougang zu enger Shell hunn:

# usermod -s /sbin/nologin tecmint

2. Desaktivéiere vun der Verzeechneslëscht fir ze verhënneren datt de Browser den Inhalt vun engem Verzeechnes weist wann et keen index.html an deem Verzeichnis ass.

Änneren /etc/httpd/conf/httpd.conf (an d'Konfiguratiounsdateien fir virtuelle Hosten, wann iwwerhaapt) a vergewëssert Iech datt d'Optiounsdirektiv, souwuel um Top wéi och um Verzeechnesblockniveau, agestallt ass zu Keen:

Options None

3. Verstoppt Informatioun iwwer de Webserver an de Betribssystem an HTTP-Reaktiounen. Änneren /etc/httpd/conf/httpd.conf wéi follegt:

ServerTokens Prod 
ServerSignature Off

Elo sidd Dir prett fir Inhalt vun Ärem /var/www/html Verzeichnis ze servéieren.

FTP Server konfiguréieren an ofsécheren

Wéi am Fall vun Apache ass d'Haaptkonfiguratiounsdatei fir Vsftpd (/etc/vsftpd/vsftpd.conf) gutt kommentéiert a wärend d'Standardkonfiguratioun fir déi meescht Applikatiounen duergeet, sollt Dir Iech mat Dokumentatioun an d'Man-Säit (man vsftpd.conf) fir den ftp-Server méi effizient ze bedreiwen (ech kann dat net genuch betounen!).

An eisem Fall sinn dës Direktiven benotzt:

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

Andeems Dir chroot_local_user=JO benotzt, ginn lokal Benotzer (par défaut) an engem chroot'ed Prisong an hirem Heemverzeichnis direkt nom Login gesat. Dëst bedeit datt lokal Benotzer keng Dateien ausserhalb vun hiren entspriechende Heemverzeichnisser kréien.

Schlussendlech, fir ftp z'erlaaben Dateien am Heemverzeechnes vum Benotzer ze liesen, set de folgende SELinux boolean:

# setsebool -P ftp_home_dir on

Dir kënnt elo mam ftp-Server verbannen mat engem Client wéi Filezilla:

Notéiert datt de /var/log/xferlog-Log d'Downloads an d'Eropluede registréiert, déi mat der uewe genannter Verzeechneslëscht stëmmen:

Resumé

An dësem Tutorial hu mir erkläert wéi een e Web an e ftp Server opstellt. Wéinst der Breetheet vum Thema ass et net méiglech all Aspekter vun dësen Themen ze decken (dh virtuell Webhosten). Also, ech recommandéieren Iech och aner exzellent Artikelen op dëser Websäit iwwer Apache ze kontrolléieren.