A web server (also known as a HTTP server) is a service that handles content (most commonly web pages, but other types of documents as well) over to a client in a network.
A FTP server is one of the oldest and most commonly used resources (even to this day) to make files available to clients on a network in cases where no authentication is necessary since FTP uses username and password without encryption.
De webserver die beschikbaar is in RHEL 7 is versie 2.4 van de Apache HTTP-server. Wat betreft de FTP-server, zullen we de Very Secure Ftp Daemon (ook wel vsftpd genoemd) gebruiken om verbindingen te maken die beveiligd zijn met TLS.

In dit artikel zullen we uitleggen hoe je een webserver en een FTP-server kunt installeren, configureren en beveiligen in RHEL 7.
Apache en FTP-server installeren
In deze handleiding zullen we een RHEL 7-server met een statisch IP-adres van 192.168.0.18/24 gebruiken. Voer de volgende opdracht uit om Apache en VSFTPD te installeren:
# yum update && yum install httpd vsftpd
Wanneer de installatie is voltooid, zullen beide services in eerste instantie zijn uitgeschakeld, dus we moeten ze voorlopig handmatig starten en ze inschakelen om automatisch te starten vanaf de volgende boot:
# systemctl start httpd # systemctl enable httpd # systemctl start vsftpd # systemctl enable vsftpd
Bovendien moeten we poorten 80 en 21 openen, waar de web- en ftp-daemons respectievelijk naar luisteren, om toegang tot die services van buitenaf toe te staan:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --zone=public --add-service=ftp --permanent # firewall-cmd --reload
Om te bevestigen dat de webserver correct werkt, start je je browser op en voer je het IP van de server in. Je zou de testpagina moeten zien:

Wat betreft de ftp-server, zullen we deze verder moeten configureren, wat we zo meteen zullen doen, voordat we bevestigen dat deze naar verwachting werkt.
Apache webserver configureren en beveiligen
Het hoofdconfiguratiebestand voor Apache bevindt zich in /etc/httpd/conf/httpd.conf
, maar het kan afhankelijk zijn van andere bestanden die aanwezig zijn in /etc/httpd/conf.d
.
Hoewel de standaardconfiguratie meestal voldoende is voor de meeste gevallen, is het een goed idee om vertrouwd te raken met alle beschikbare opties zoals beschreven in de officiële documentatie.
Zoals altijd, maak een back-up van het hoofdconfiguratiebestand voordat je het bewerkt:
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)
Vervolgens open je het met je voorkeurteksteditor en zoek je naar de volgende variabelen:
- ServerRoot: de map waar de serverconfiguratie, fouten en logbestanden worden bewaard.
- Luisteren: instrueert Apache om te luisteren op een specifiek IP-adres en/of poorten.
- Include: maakt het mogelijk om andere configuratiebestanden op te nemen, die moeten bestaan. Anders zal de server falen, in tegenstelling tot de IncludeOptional-instructie, die stilzwijgend wordt genegeerd als de gespecificeerde configuratiebestanden niet bestaan.
- Gebruiker en Groep: de naam van de gebruiker/groep om de httpd-service als uit te voeren.
- DocumentRoot: De map waaruit Apache je documenten zal serveren. Standaard worden alle verzoeken uit deze map gehaald, maar symbolische koppelingen en aliassen kunnen worden gebruikt om naar andere locaties te verwijzen.
- ServerName: deze instructie stelt de hostnaam (of IP-adres) en poort in die de server gebruikt om zichzelf te identificeren.
De eerste beveiligingsmaatregel zal bestaan uit het aanmaken van een speciale gebruiker en groep (bijv. tecmint/tecmint) om de webserver uit te voeren en het standaard poortnummer te wijzigen naar een hoger nummer (9000 in dit geval):
ServerRoot "/etc/httpd" Listen 192.168.0.18:9000 User tecmint Group tecmint DocumentRoot "/var/www/html" ServerName 192.168.0.18:9000
U kunt het configuratiebestand testen met
# apachectl configtest
en als alles OK is, herstart dan de webserver.
# systemctl restart httpd
en vergeet niet om de nieuwe poort in te schakelen (en de oude uit te schakelen) in de firewall:
# firewall-cmd --zone=public --remove-port=80/tcp --permanent # firewall-cmd --zone=public --add-port=9000/tcp --permanent # firewall-cmd --reload
Merk op dat u, vanwege de SELinux-beleidsregels, alleen de poorten kunt gebruiken die worden geretourneerd door
# semanage port -l | grep -w '^http_port_t'
voor de webserver.
Als u een andere poort wilt gebruiken (bijv. TCP-poort 8100), dan moet u deze toevoegen aan de SELinux-poortcontext voor de httpd-service:
# semanage port -a -t http_port_t -p tcp 8100

Om uw Apache-installatie verder te beveiligen, volgt u deze stappen:
1. De gebruiker waar Apache op draait, mag geen toegang hebben tot een shell:
# usermod -s /sbin/nologin tecmint
2. Schakel de directorylijst uit om te voorkomen dat de browser de inhoud van een directory weergeeft als er geen index.html aanwezig is in die directory.
Bewerk /etc/httpd/conf/httpd.conf
(en de configuratiebestanden voor virtuele hosts, indien aanwezig) en zorg ervoor dat de Options-instructie, zowel bovenaan als op directoryniveau, is ingesteld op None:
Options None
3. Verberg informatie over de webserver en het besturingssysteem in HTTP-responses. Bewerk /etc/httpd/conf/httpd.conf
als volgt:
ServerTokens Prod ServerSignature Off
Nu ben je klaar om inhoud te serveren vanuit je /var/www/html map.
Configuratie en Beveiliging van FTP Server
Net als bij Apache, is het hoofdconfiguratiebestand voor Vsftpd (/etc/vsftpd/vsftpd.conf)
goed gedocumenteerd en hoewel de standaardconfiguratie voldoende zou moeten zijn voor de meeste toepassingen, dien je vertrouwd te raken met de documentatie en de man-pagina (man vsftpd.conf)
om de ftp-server efficiënter te bedienen (ik kan dit niet genoeg benadrukken!).
In ons geval worden de volgende richtlijnen gebruikt:
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
Door chroot_local_user=YES
te gebruiken, worden lokale gebruikers (standaard) direct na het inloggen in een ‘chroot’-gevangenis in hun thuismap geplaatst. Dit betekent dat lokale gebruikers geen toegang zullen hebben tot bestanden buiten hun overeenkomstige thuismappen.
Tenslotte, om ftp toe te staan bestanden te lezen in de thuismap van de gebruiker, stel de volgende SELinux boolean in:
# setsebool -P ftp_home_dir on
Je kunt nu verbinding maken met de ftp-server met een client zoals Filezilla:

Merk op dat het logboek /var/log/xferlog
downloads en uploads registreert, wat overeenkomt met de bovenstaande maplijst:

Samenvatting
In deze tutorial hebben we uitgelegd hoe je een web- en een ftp-server kunt opzetten. Vanwege de omvang van het onderwerp is het niet mogelijk om alle aspecten van deze onderwerpen te behandelen (bijv. virtuele webhosts). Daarom raad ik je aan ook andere uitstekende artikelen op deze website te bekijken over Apache.
Source:
https://www.tecmint.com/rhcsa-series-install-and-secure-apache-web-server-and-ftp-in-rhel/