Zoeken op website

RHCSA-serie: een web- en FTP-server installeren, configureren en beveiligen - Deel 9


Een webserver (ook bekend als een HTTP-server) is een service die inhoud (meestal webpagina's, maar ook andere typen documenten) naar een client in een netwerk verzendt.

Een FTP-server is een van de oudste en meest gebruikte bronnen (zelfs tot op de dag van vandaag) om bestanden beschikbaar te maken voor clients op een netwerk in gevallen waarin geen authenticatie nodig is, aangezien FTP gebruik maakt van gebruikersnaam en wachtwoord zonder codering.

De webserver die beschikbaar is in RHEL 7 is versie 2.4 van de Apache HTTP Server. Wat de FTP-server betreft, zullen we de Very Secure Ftp Daemon (ook bekend als vsftpd) gebruiken om verbindingen tot stand te brengen die zijn beveiligd door TLS.

In dit artikel leggen we uit hoe je een webserver en een FTP-server in RHEL 7 installeert, configureert en beveiligt.

Apache en FTP-server installeren

In deze handleiding gebruiken we een RHEL 7-server met een statisch IP-adres van 192.168.0.18/24. Om Apache en VSFTPD te installeren, voert u de volgende opdracht uit:


yum update && yum install httpd vsftpd

Wanneer de installatie is voltooid, worden beide services in eerste instantie uitgeschakeld, dus we moeten ze voorlopig handmatig starten en ervoor zorgen dat ze automatisch starten vanaf de volgende keer opstarten:


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

Bovendien moeten we de poorten 80 en 21 openen, waar respectievelijk de web- en ftp-daemons naar luisteren, om toegang tot die services van buitenaf mogelijk te maken:


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 goed werkt, start u uw browser en voert u het IP-adres van de server in. U zou de testpagina moeten zien:

Wat de ftp-server betreft, we zullen deze verder moeten configureren, wat we zo meteen zullen doen, voordat we kunnen bevestigen dat deze werkt zoals verwacht.

Apache-webserver configureren en beveiligen

Het hoofdconfiguratiebestand voor Apache bevindt zich in /etc/httpd/conf/httpd.conf, maar kan afhankelijk zijn van andere bestanden die aanwezig zijn in /etc/httpd /conf.d.

Hoewel de standaardconfiguratie in de meeste gevallen voldoende zou moeten zijn, is het een goed idee om vertrouwd te raken met alle beschikbare opties, zoals beschreven in de officiële documentatie.

Maak zoals altijd een reservekopie van het hoofdconfiguratiebestand voordat u het bewerkt:


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

Open het vervolgens met de teksteditor van uw voorkeur en zoek naar de volgende variabelen:

  1. ServerRoot: de map waar de configuratie-, fout- en logbestanden van de server worden bewaard.
  2. Luister: instrueert Apache om te luisteren naar een specifiek IP-adres en/of poorten.
  3. Opnemen: maakt het opnemen van andere configuratiebestanden mogelijk, die moeten bestaan. Anders zal de server falen, in tegenstelling tot de IncludeOptional-richtlijn, die stilzwijgend wordt genegeerd als de opgegeven configuratiebestanden niet bestaan.
  4. Gebruiker en groep: de naam van de gebruiker/groep waaronder de httpd-service moet worden uitgevoerd.
  5. DocumentRoot: de map van waaruit Apache uw documenten zal weergeven. Standaard worden alle verzoeken uit deze directory gehaald, maar symbolische links en aliassen kunnen worden gebruikt om naar andere locaties te verwijzen.
  6. Servernaam: deze richtlijn stelt de hostnaam (of het IP-adres) en de poort in die de server gebruikt om zichzelf te identificeren.

De eerste beveiligingsmaatregel zal bestaan uit het aanmaken van een specifieke gebruiker en groep (d.w.z. tecmint/tecmint) om de webserver als te laten draaien en het wijzigen van de standaardpoort naar een hogere poort (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, start dan de webserver opnieuw op.


systemctl restart httpd

en vergeet niet 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 je, vanwege het SELinux beleid, alleen de poorten kunt gebruiken die teruggezonden worden


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

voor de webserver.

Als je een andere poort wilt gebruiken (d.w.z. TCP-poort 8100), zul je deze moeten 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 die Apache gebruikt, zou geen toegang moeten 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 in die directory aanwezig is.

Bewerk /etc/httpd/conf/httpd.conf (en de configuratiebestanden voor virtuele hosts, indien aanwezig) en zorg ervoor dat de Options-richtlijn, zowel bovenaan als op mapblokniveaus is ingesteld op Geen:


Options None

3. Verberg informatie over de webserver en het besturingssysteem in HTTP-reacties. Bewerk /etc/httpd/conf/httpd.conf als volgt:


ServerTokens Prod 
ServerSignature Off

Nu bent u klaar om inhoud aan te bieden vanuit uw /var/www/html directory.

FTP-server configureren en beveiligen

Net als in het geval van Apache is het hoofdconfiguratiebestand voor Vsftpd (/etc/vsftpd/vsftpd.conf) goed becommentarieerd en hoewel de standaardconfiguratie voor de meeste toepassingen zou moeten volstaan , moet u vertrouwd raken met de documentatie en de manpagina (man vsftpd.conf) om de ftp-server efficiënter te kunnen gebruiken (dat kan ik niet genoeg benadrukken!).

In ons geval zijn dit de gebruikte richtlijnen:


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 hebben tot bestanden buiten hun corresponderende thuismappen.

Ten slotte, om ftp toe te staan bestanden in de homedirectory van de gebruiker te lezen, stelt u de volgende SELinux boolean in:


setsebool -P ftp_home_dir on

U kunt nu verbinding maken met de ftp-server met behulp van een client zoals Filezilla:

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

Lees ook: Beperk de FTP-netwerkbandbreedte die wordt gebruikt door applicaties in een Linux-systeem met Trickle

Samenvatting

In deze tutorial hebben we uitgelegd hoe je een web- en ftp-server instelt. Vanwege de uitgestrektheid van het onderwerp is het niet mogelijk om alle aspecten van deze onderwerpen (d.w.z. virtuele webhosts) te behandelen. Daarom raad ik u aan ook andere uitstekende artikelen over Apache op deze website te lezen.