我正在将计算机重新安装操作系统的过程中,该计算机将用于为我们的业务托管几个应用程序。这些应用程序将仅在本地;来自外部客户端的访问将仅通过VPN。
先前的设置使用了主机控制面板(Plesk)来管理大多数管理员,而我当时正在考虑使用另一种类似的软件进行重新安装-但我认为我应该最终了解其所有工作原理。我可以做软件可以为我做的大部分事情,但是我对这一切的共生性还不清楚。这是所有尝试,如果可能的话,进一步使自己远离Configuration Programmer / Programmer。
我在任何地方都找不到完整的演练,因此我想我要提出这个问题,并且如果有人可以在我的帮助下帮助我编辑答案并记录进度/陷阱。希望有一天这将帮助某人。
细节:
- CentOS 5.5 x86_64
- httpd:Apache / 2.2.3
- MySQL:5.0.77(待升级)
- PHP:5.1(待升级)
要求:
- 安全!!
- 安全的文件传输
- 安全的客户端访问(SSL证书和CA)
- 安全的数据存储
- 安全连接到另一台本地计算机(MySQL)
- 虚拟主机/多个子域
- 本地电子邮件会很好,但并不重要
步骤:
在安装过程中,我检查了Server Components选项,以为我将要使用另一个类似Plesk的管理员。事后看来,考虑到我已经决定尝试自己的方式,这可能不是最好的主意。
设置用户,网络/ IP地址等。Yum更新/升级。
要将PHP和MySQL升级到最新版本,我不得不寻找CentOS之外的另一个仓库。IUS看起来很棒,我很高兴找到了它!
将IUS存储库添加到我们的包管理器中
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
从IUS删除旧版本的PHP并安装新版本
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)
从IUS存储库升级MySQL
/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
升级说明由IUS Wiki提供:http : //wiki.iuscommunity.org/Doc/ClientUsageGuide。
scp
和sftp
访问权限,而不允许ssh
登录cd /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
编辑/etc/rssh.conf
以向rssh用户授予对SFTP的访问权限。
vi /etc/rssh.conf
取消注释或添加:
allowscp
allowsftp
这使我可以通过Transmit中的SFTP协议连接到计算机(我选择的FTP程序;我确定它与其他FTP应用程序类似)。
从http://www.cyberciti.biz/tips/linux-unix-restrict-shell-access-with-rssh.html中获得了 rssh指令(非常感谢!)。
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 | 进行修改,如下所示:
DEVICE = eth1:1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT =是
NAME = eth1:1
重复根据需要添加更多虚拟接口。由于ONBOOT=yes
ifcfg-eth1:1文件中的一行,因此在系统引导或网络启动/重新启动时将打开此接口。
service network restart
关闭接口eth0:[确定]
关闭接口eth1:[确定]
关闭回送接口:[确定]
打开回送接口:[确定]
打开接口eth0:[确定]
打开接口eth1:[确定]
ping 192.168.1.3
来自192.168.1.3的64个字节:icmp_seq = 1 ttl = 64时间= 0.105 ms
在上面的rssh部分中,我添加了一个用于SFTP的用户。在此用户的主目录中,我创建了一个名为“ https”的文件夹。这是该站点文档所在的位置,因此我需要添加一个指向它的虚拟主机。我将在网站上使用上面的虚拟界面(在这里称为dev.site.local)。
vi /etc/http/conf/httpd.conf
将以下内容添加到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>
我将虚拟的index.html文件放在https目录中只是为了检查所有内容。我尝试浏览到它,并遇到权限被拒绝的错误。日志仅给出了模糊的参考:
[2010年5月17日星期一14:57:11] [错误] [客户端192.168.1.100](13)权限被拒绝:无法访问/index.html
我尝试过chmod 777等。等,但无济于事。原来,我需要chmod + x https目录及其父目录。
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
这解决了这个问题。
我正在通过本地Windows Server 2003框处理DNS。但是,可以在这里找到有关BIND的CentOS文档:http : //www.centos.org/docs/5/html/Deployment_Guide-zh-CN/ch-bind.html
为了使SSL正常运行,我在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>
不幸的是,当尝试使用SSL访问页面时,我不断收到(错误代码:ssl_error_rx_record_too_long)错误。正如JamesHannah 在下面优雅地指出的那样,我没有在httpd.conf中设置证书的位置,因此,由于证书使浏览器不受欢迎,因此该页面被扔到了浏览器中。
因此,首先,我需要设置一个CA并制作证书文件。我在这里找到了一个很好的(如果很旧的话)过程:http : //www.debian-administration.org/articles/284。
这是我从那篇文章中采取的相关步骤:
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
openssl.cnf
在/home/CA/
目录中创建一个文件,并根据上面链接的演练对其进行编辑。(作为参考,我完成的openssl.cnf文件如下所示: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)
openssl.cnf
根据演练说明再次进行修改。
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
openssl.cnf
根据演练说明再次进行修改。
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
重要!
移动文件并在新位置从httpd.conf引用它们
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
我更新了httpd.conf以反映证书并打开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>
将CA cert.pem放置在可访问网络的地方,并将其下载/导入到我的浏览器中。现在,我可以访问https://dev.site.local,没有任何错误或警告。
这就是我的位置。我将在不断进步的同时继续进行编辑。任何有关如何配置SSL电子邮件和/或配置与另一个将成为MySQL服务器的Box的安全连接的技巧,将不胜感激。