Je suis en train de réinstaller le système d'exploitation sur une machine qui sera utilisée pour héberger quelques applications pour notre entreprise. Les candidatures seront locales uniquement; l'accès à partir de clients externes se fera uniquement via VPN.
La configuration précédente utilisait un panneau de contrôle d'hébergement (Plesk) pour la plupart des administrateurs, et je cherchais à utiliser un autre logiciel similaire pour la réinstallation - mais j'ai pensé que je devrais enfin apprendre comment tout cela fonctionne. Je peux faire la plupart des choses que le logiciel ferait pour moi, mais je ne suis pas sûr de la symbiose de tout cela. Tout cela est une tentative de m'éloigner davantage du pays de Configuration Programmer / Programmer , si possible.
Je ne trouve aucune solution complète pour ce que je recherche, alors j'ai pensé poser cette question, et si les gens peuvent m'aider sur le chemin, je vais modifier cela avec les réponses et documenter mes progrès / pièges. J'espère qu'un jour cela aidera quelqu'un.
Les détails:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (à mettre à niveau)
- PHP: 5.1 (à mettre à niveau)
Les exigences:
- SÉCURITÉ!!
- Transfert de fichiers sécurisé
- Accès client sécurisé (certificats SSL et CA)
- Stockage sécurisé des données
- Connexion sécurisée à une autre machine locale (MySQL)
- Hôtes virtuels / sous-domaines multiples
- L'email local serait bien, mais pas critique
Les marches:
lors de l'installation, j'ai vérifié l'option Composants du serveur en pensant que j'allais utiliser un autre administrateur de type Plesk. Avec le recul, étant donné que j'ai décidé d'essayer de suivre mon propre chemin, ce n'était probablement pas la meilleure idée.
Configuration de base: configuration des utilisateurs, mise en réseau / adresse IP, etc. Mise à jour / mise à niveau Yum.
Mettre à jour PHP / MySQL: Pour mettre à jour PHP et MySQL vers les dernières versions, j'ai dû chercher un autre dépôt en dehors de CentOS. IUS est superbe et je suis heureux de l'avoir trouvé!
Ajouter le référentiel IUS à notre gestionnaire de packages
cd /tmp
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
yum list | grep -w \.ius\. # list all the packages in the IUS repository; use this to find PHP/MySQL version and libraries you want to install
Supprimer l'ancienne version de PHP et installer la nouvelle version d'IUS
rpm -qa | grep php # to list all of the installed php packages we want to remove
yum shell # open an interactive yum shell
remove php-common php-mysql php-cli #remove installed PHP components
install php53 php53-mysql php53-cli php53-common #add packages you want
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
php -v
PHP 5.3.2 (cli) (built: Apr 6 2010 18:13:45)
Mettre à niveau MySQL à partir du référentiel IUS
/etc/init.d/mysqld stop
rpm -qa | grep mysql # to see installed mysql packages
yum shell
remove mysql mysql-server #remove installed MySQL components
install mysql51 mysql51-server mysql51-devel
transaction solve #important!! checks for dependencies
transaction run #important!! does the actual installation of packages.
[control+d] #exit yum shell
service mysqld start
mysql -v
Server version: 5.1.42-ius Distributed by The IUS Community Project
Instructions de mise à niveau fournies par IUS wiki: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
et sftp
accéder, sans autoriser la ssh
connexioncd /tmp
wget http://dag.wieers.com/rpm/packages/rssh/rssh-2.3.2-1.2.el5.rf.x86_64.rpm
rpm -ivh rssh-2.3.2-1.2.el5.rf.x86_64.rpm
useradd -m -d /home/dev -s /usr/bin/rssh dev
passwd dev
Modifier /etc/rssh.conf
pour accorder l'accès à SFTP aux utilisateurs rssh.
vi /etc/rssh.conf
Décommentez ou ajoutez:
allowscp
allowsftp
Cela me permet de me connecter à la machine via le protocole SFTP dans Transmit (mon programme FTP de choix; je suis sûr que c'est similaire avec d'autres applications FTP).
Instructions rssh appropriées (avec appréciation!) sur http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html .
ifconfig eth1:1 192.168.1.3 up #start up the virtual interface
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth1 ifcfg-eth1:1 #copy default script and match name to our virtual interface
vi ifcfg-eth1:1 #modify eth1:1 script
# ifcfg-eth1: 1 | modifier pour qu'il ressemble à ceci:
DEVICE = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = oui
NAME = eth1: 1
Ajoutez plus d'interfaces virtuelles au besoin en répétant. En raison de la ONBOOT=yes
ligne du fichier ifcfg-eth1: 1, cette interface sera affichée au démarrage du système ou au démarrage / redémarrage du réseau.
service network restart
Arrêt de l'interface eth0: [OK]
Arrêt de l'interface eth1: [OK]
Arrêt de l'interface de bouclage: [OK]
Affichage de l'interface de bouclage: [OK]
Affichage de l'interface eth0: [OK]
Affichage de l'interface eth1: [OK]
ping 192.168.1.3
64 octets de 192.168.1.3: icmp_seq = 1 ttl = 64 temps = 0,105 ms
Dans la section rssh ci-dessus, j'ai ajouté un utilisateur à utiliser pour SFTP. Dans le répertoire personnel de cet utilisateur, j'ai créé un dossier appelé «https». C'est là que vivront les documents de ce site, je dois donc ajouter un hôte virtuel qui le pointera. J'utiliserai l'interface virtuelle ci-dessus pour ce site (appelé ici dev.site.local).
vi /etc/http/conf/httpd.conf
Ajoutez ce qui suit à la fin de httpd.conf:
<VirtualHost 192.168.1.3:80>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
J'ai mis un fichier fictif index.html dans le répertoire https juste pour tout vérifier. J'ai essayé d'y accéder et j'ai rencontré des erreurs d'autorisation refusée. Les journaux ne donnaient qu'une référence obscure à ce qui se passait:
[Lun 17 mai 14:57:11 2010] [erreur] [client 192.168.1.100] (13) Autorisation refusée: accès à /index.html refusé
J'ai essayé chmod 777 et. al., mais en vain. Il s'avère que j'avais besoin de chmod + x le répertoire https et ses répertoires parents.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Cela a résolu ce problème.
Je gère le DNS via notre boîte Windows Server 2003 locale. Cependant, la documentation CentOS pour BIND est disponible ici: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
Pour faire fonctionner SSL, j'ai changé ce qui suit dans httpd.conf:
NameVirtualHost 192.168.1.3:443 #make sure this line is in httpd.conf
<VirtualHost 192.168.1.3:443> #change port to 443
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Malheureusement, je continue de recevoir des erreurs (code d'erreur: ssl_error_rx_record_too_long) lorsque j'essaie d'accéder à une page avec SSL. Comme JamesHannah l'a gracieusement souligné ci - dessous , je n'avais pas configuré les emplacements des certificats dans httpd.conf, et je recevais donc la page lancée sur le navigateur en tant que certificat faisant reculer le navigateur.
Donc, d'abord, je devais configurer une autorité de certification et créer des fichiers de certificat. J'ai trouvé une grande (si ancienne) procédure pas à pas sur le processus ici: http://www.debian-administration.org/articles/284 .
Voici les étapes pertinentes que j'ai prises à partir de cet article:
mkdir /home/CA
cd /home/CA/
mkdir newcerts private
echo '01' > serial
touch index.txt #this and the above command are for the database that will keep track of certs
Créez un openssl.cnf
fichier dans le répertoire /home/CA/
et modifiez-le selon la procédure pas à pas liée ci-dessus. (Pour référence, mon fichier openssl.cnf terminé ressemblait à ceci: http://pastebin.com/raw.php?i=hnZDij4T )
openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf #this creates the cacert.pem which gets distributed and imported to the browser(s)
Modifié à openssl.cnf
nouveau selon les instructions pas à pas.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Modifié à openssl.cnf
nouveau selon les instructions pas à pas.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
IMPORTANT!
Déplacez les fichiers et référencez-les depuis httpd.conf dans le nouvel emplacement
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
J'ai mis à jour httpd.conf pour refléter les certificats et activer SSLEngine:
NameVirtualHost 192.168.1.3:443
<VirtualHost 192.168.1.3:443>
ServerAdmin dev@site.local
DocumentRoot /home/dev/https
SSLEngine on
SSLCertificateFile /home/dev/certs/cert.pem
SSLCertificateKeyFile /home/dev/certs/key.pem
ServerName dev.site.local
ErrorLog /home/dev/logs/error_log
TransferLog /home/dev/logs/access_log
</VirtualHost>
Placez le CA cert.pem dans un endroit accessible sur le Web et téléchargez / importez-le dans mon navigateur. Maintenant, je peux visiter https: //dev.site.local sans erreurs ni avertissements.
Et c'est là que j'en suis. Je continuerai de le modifier au fur et à mesure de mes progrès. Tous les conseils sur la configuration de la messagerie SSL et / ou la configuration d'une connexion sécurisée à une autre Box qui sera le serveur MySQL seraient appréciés.