Linux Systeembeheer/Webservers
Uit Wikibooks
Inhoud |
[bewerken] Leerdoelen
- Een LAMP-server (d.w.z. Linux+Apache+MySQL+PHP). kunnen installeren en configureren in een RedHat-gebaseerd Linux-systeem
- Ondersteuning voor PHP toevoegen
- Ondersteuning voor SSL (HTTPS) toevoegen
- Een self-signed certificaat kunnen aanmaken en gebruiken
- Een Apache-webserver kunnen beveiligen met SELinux
[bewerken] Labo-opdracht: een Drupal appliance opzetten
Drupal is een bekend Content Management System, ontwikkeld door Dries Buytaert (een Vlaming, trouwens). Drupal is gebaseerd op de LAMP stack en is erg populair voor het snel opzetten van dynamische websites. Veel hostingbedrijven maken er dan ook gebruik van. LAMP is ongetwijfeld een van de meest gebruikte toepassingen van Linux. Vele bekende websites (onder andere ook Facebook) zijn gebaseerd op dit platform. Het doel van dit labo is het opzetten van een Drupal server in een virtuele machine. De naam “appliance” in de titel wordt tegenwoordig vaak gebruikt (o.a. door VMWare) voor een virtuele machine met een minimale installatie voor een specifiek doel.
- Installeer een minimale versie van (Fedora of CentOS) Linux onder een virtualisatiesysteem naar keuze (vb. Sun VirtualBox, VMWare Server, Hyper-V, ...). Met minimaal bedoelen we dat enkel en alleen de nodige packages geïnstalleerd worden die nodig zijn voor het uitvoeren van het labo. Een grafische omgeving is bijvoorbeeld niet nodig. Onder Fedora komt de “netinstall” variant in aanmerking. Bij Package installation zorg je ervoor dat geen van de voorgestelde opties ("Kantoor en productiviteit", enz) geselecteerd is, en dat onderaan "Nu aanpassen" aangevinkt is. In het volgende scherm ("Softwareselectie aanpassen") vink je eveneens alle categorieën uit.
- Installeer MySQL op je appliance
- Zet een Apache webserver op met ondersteuning voor PHP en SSL. Genereer zelf een self-signed certificate en installeer het. Het moet mogelijk zijn om vanaf het host-besturingssysteem de webserver van je appliance te contacteren via SSL (https://x.x.x.x/).
- Installeer Drupal op je appliance. Zorg dat je Drupal-site bereikbaar is via een versleutelde verbinding.
[bewerken] MySQL
Installeer MySQL op je appliance. Beschrijf de gevolgde procedure:
Ik heb gebruik gemaakt van de volgende commando’s:
- sudo yum install mysql mysql-devel mysql-server;
- sudo /sbin/chkconfig mysqld on --> server aanzettenl;
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT toevoegen in /etc/sysconfig/iptables --> poort 3306 open zetten zodat clients de mysql server kunnen bereiken;
- sudo /sbin/service iptables restart --> om de regels van de firewall opnieuw te laden;
- sudo /sbin/service mysqld start --> starten van mysql server;
- mysqladmin –u root password (root had bij mij geen wachtwoord) --> aanmelden als root;
- create user ‘jeroen’@’localhost’ identified by ‘Client66’;
[bewerken] Apache
Zet een Apache webserver op met ondersteuning voor PHP en SSL. Genereer zelf een self-signed certificate en installeer het. Het moet mogelijk zijn om vanaf het host-besturingssysteem de webserver van je appliance te contacteren via SSL (https://x.x.x.x/). Documenteer de gevolgde procedure. Toon in het bijzonder aan dat het gebruikte certificaat datgene is dat je zelf genereerde i.p.v. het standaard geïnstalleerde.
Apache heb ik reeds geïnstalleerd toen ik Fedora installeerde. Om er zeker van te zijn dat Apache geïnstalleerd was heb ik het commando: ‘rpm –q httpd’. Vervolgens heb ik de volgende commando’s uitgevoerd:
- sudo /sbin/service httpd start --> Apache starten;
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT >> /etc/sysconfig/iptables --> om ervoor te zorgen dat poort 80 open staat + nano /etc/sysconfig/iptables en COMMIT helemaal onderaan plaatsen;
- sudo /sbin/service iptables restart --> om de regels van de firewall opnieuw te laden;
[bewerken] PHP
- sudo yum install php php-mysql --> installeren van PHP en PHP-MYSQL;
- sudo /sbin/service httpd restart --> herstarten van Apache;
[bewerken] SSL
- sudo openssl genrsa -des3 -out server.key 1024 --> genereren van private key (hier kies je een wachtwoord);
- sudo openssl req -new -key server.key -out server.csr --> maken van CSR (Certificate Signing Request) + wachtwoord ingeven;
- openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt --> instellen dat certificaat 365 dagen geldig is;
- cp server.key server.key.secure --> kopiëren van server.key om wachtwoord te verwijderen
- openssl rsa -in server.key.secure -out server.key;
- mkdir /etc/httpd/conf/ssl.csr/ --> map maken om .csr bestand in te plaatsen;
- mkdir /etc/httpd/conf/ssl.crt/ --> map maken om .crt bestand in te plaatsen;
- mkdir /etc/httpd/conf/ssl.key/ --> map maken om .key en .key.secure bestand in te plaatsen;
- Verplaatsen van de files naar de overeenkomstige directory:
- mv server.csr /etc/httpd/conf/ssl.csr/host_domain_tld.csr;
- mv server.crt /etc/httpd/conf/ssl.crt/host_domain_tld.crt;
- mv server.key /etc/httpd/conf/ssl.key/host_domain_tld.key;
- mv server.key.secure /etc/httpd/conf/ssl.key/host_domain_tld.key.secure;
Permissies wijzigen zodat enkel de gebruiker root deze gegevens kan lezen:
- chmod 400 /etc/httpd/conf/ssl.csr/host_domain_tld.csr;
- chmod 400 /etc/httpd/conf/ssl.crt/host_domain_tld.crt;
- chmod 400 /etc/httpd/conf/ssl.key/host_domain_tld.key;
- chmod 400 /etc/httpd/conf/ssl.key/host_domain_tld.key.secure;
Gegevens aanpassen in /etc/httpd/conf.d/ssl.conf:
- <VirtualHost _default_:443> wordt <VirtualHost *:443>;
- SSLCertificateFile /etc/httpd/conf/ssl.crt/host_domain_tld.crt;
- SSLCertificateKeyFile /etc/httpd/conf/ssl.key/host_domain_tld.key;
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT >> /etc/sysconfig/iptables --> om ervoor te zorgen dat poort 443 open staat + nano /etc/sysconfig/iptables en COMMIT helemaal onderaan plaatsen;
- sudo /sbin/service iptables restart --> om de regels van de firewall opnieuw te laden;
- sudo /sbin/service httpd restart --> herstarten van Apache;
[bewerken] Drupal
Installeer Drupal op je webserver. Toon aan dat je Drupal-site bereikbaar is via een versleutelde verbinding (HTTPS). Beschrijf de gevolgde procedure:
- Mysqladmin –u root –p create drupallogin --> database maken;
- Mysql –u root –p --> inloggen op mysql
- GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON druppallogin.* TO ‘jeroen’@'localhost' IDENTIFIED BY ‘Client66’; --> gebruiker jeroen volledige toegang geven tot database (kan alles doen wat root kan doen);
Rechten op de map /var/www/html wijzigen:
- chown -R jeroen /var/www/html;
- chgrp -R apache /var/www/html;
- wget http://ftp.drupal.org/files/projects/drupal-6.6.tar.gz --> drupal downloaden (de huidige directory is /var/www/html);
- tar -xzvpf drupal-* --strip-components=1 --> files uitpakken;
- cp ./sites/default/default.settings.php ./sites/default/settings.php --> kopiëren van de standaard settings;
- Rechten op de map wijzigen:
- chgrp -R apache . ;
- chown -R apache ./sites/default;
- chgrp -R myuser ./sites/default;
- chmod -R g+w sites/default;