私は、ビジネス用のいくつかのアプリケーションをホストするために使用されるマシンにOSを再インストールしているところです。アプリケーションはローカルのみになります。外部クライアントからのアクセスはVPN経由のみになります。
以前のセットアップでは、ほとんどの管理者にホスティングコントロールパネル(Plesk)を使用し、再インストールに別の同様のソフトウェアを使用することを検討していましたが、最終的にすべてがどのように機能するかを学ぶ必要があると思いました。私はソフトウェアが私のために行うことのほとんどを行うことができますが、すべての共生についてははっきりしていません。これはすべて、可能であれば、 構成プログラマー/プログラマー の土地から自分自身をさらに遠ざける試みです。
私が探しているものの完全なウォークスルーがどこにも見つからないので、私はこの質問をするつもりでした、そして人々が途中で私を助けてくれるなら、私はこれを答えで編集し、私の進捗状況を文書化します/落とし穴。うまくいけば、いつかこれが誰かを助けてくれるでしょう。
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
古いバージョンのPHPを削除し、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)
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
繰り返して、必要に応じて仮想インターフェイスを追加します。 ifcfg-eth1:1ファイルのONBOOT=yes
行のため、このインターフェイスは、システムの起動時、またはネットワークの起動/再起動時に起動されます。
service network restart
インターフェイスeth0のシャットダウン:[OK]
インターフェースeth1のシャットダウン:[OK]
ループバックインターフェイスのシャットダウン:[OK]
ループバックインターフェイスの起動:[OK]
インターフェースeth0の起動:[OK]
インターフェースeth1の起動:[OK]
ping 192.168.1.3
192.168.1.3から64バイト:icmp_seq = 1 ttl = 64 time = 0.105 ms
上記のrsshセクションで、SFTPに使用するユーザーを追加しました。このユーザーのホームディレクトリに、「https」というフォルダを作成しました。これは、このサイトのドキュメントが存在する場所であるため、それを指す仮想ホストを追加する必要があります。このサイトには上記の仮想インターフェイス(ここではdev.site.localと呼びます)を使用します。
vi /etc/http/conf/httpd.conf
Httpd.confの最後に以下を追加します。
<VirtualHost 192.168.1.3:80>
ServerAdmin [email protected]
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へのアクセスが拒否されました
Chmod777などを試してみました。 al。、しかし役に立たない。結局、httpsディレクトリとその親ディレクトリをchmod + xする必要がありました。
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
これでその問題は解決しました。
ローカルのWindowsServer2003ボックスを介してDNSを処理しています。ただし、BINDのCentOSドキュメントは次の場所にあります: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/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 [email protected]
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
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 [email protected]
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をWebでアクセス可能な場所に置き、ブラウザにダウンロード/インポートしました。これで、エラーや警告なしで https://dev.site.local にアクセスできます。
そして、これが私がいるところです。進歩するにつれて、これを編集し続けます。 SSL電子メールを構成する方法、および/またはMySQLサーバーとなる別のボックスへの安全な接続を構成する方法に関するヒントをいただければ幸いです。
SSL構成の問題は、実際にはenabled SSLを使用していないことです。そのためには、Apacheディレクティブが必要です。
SSLEngine on
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/key.pem
これがないと、これらのレコードの長すぎるエラーが発生します。これは、ブラウザが予期していたSSLヘッダーの代わりに、暗号化されていないWebページだけが大きなチャンクで取得されるためです。
元のパッケージのMySQLはSSLをサポートしています。 MySQLビルドを確認するには、
mysqladmin variables | grep ssl
have_ssl yes
のようなものが見つかるはずです。オプションssl-ca
、ssl-key
、およびssl-cert
を設定します。
SSL要件を持つユーザーアカウントを作成します。
create user@Host identified by 'password'
grant privilegelist on database.tables to user@Host require ssl