Saya sedang dalam proses menginstal ulang OS pada mesin yang akan digunakan untuk meng-host beberapa aplikasi untuk bisnis kami. Aplikasi hanya akan bersifat lokal; akses dari klien eksternal hanya akan melalui VPN.
Pengaturan sebelumnya menggunakan panel kontrol hosting (Plesk) untuk sebagian besar admin, dan saya sedang melihat menggunakan perangkat lunak lain yang serupa untuk menginstal ulang - tetapi saya pikir saya akhirnya harus belajar bagaimana semuanya bekerja. Saya dapat melakukan sebagian besar hal yang akan dilakukan oleh perangkat lunak untuk saya, tetapi saya tidak jelas tentang simbiosis dari semuanya. Ini semua adalah upaya untuk menjauhkan diri dari tanah Programmer / Programmer Konfigurasi , jika memungkinkan.
Saya tidak dapat menemukan langkah-langkah lengkap di mana pun untuk apa yang saya cari, jadi saya pikir saya akan mengajukan pertanyaan ini, dan jika orang dapat membantu saya dalam perjalanan saya akan mengedit ini dengan jawaban, dan mendokumentasikan kemajuan saya / perangkap. Semoga suatu hari nanti ini akan membantu seseorang di telepon.
Rinciannya:
- CentOS 5.5 x86_64
- httpd: Apache / 2.2.3
- MySQL: 5.0.77 (akan ditingkatkan)
- PHP: 5.1 (akan ditingkatkan)
Persyaratan:
- KEAMANAN!!
- Transfer file aman
- Akses klien aman (Sertifikat SSL dan CA)
- Penyimpanan data yang aman
- Koneksi aman ke mesin lokal lain (MySQL)
- Virtualhosts / beberapa subdomain
- Email lokal akan baik, tetapi tidak kritis
Langkah langkah:
Ketika sedang menginstal, saya memeriksa opsi Server Components dengan berpikir saya akan menggunakan admin lain yang mirip Plesk. Kalau dipikir-pikir, mengingat saya telah memutuskan untuk mencoba menempuh jalan saya sendiri, ini mungkin bukan ide terbaik.
Pengaturan pengguna, jaringan / alamat IP, dll. Pembaruan / peningkatan Yum.
Untuk meningkatkan PHP dan MySQL ke versi terbaru, saya harus melihat repo lain di luar CentOS. IUS terlihat hebat dan saya senang saya menemukannya!
Tambahkan repositori IUS ke manajer paket kami
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
Hapus versi lama PHP dan instal versi yang lebih baru dari 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)
Tingkatkan MySQL dari repositori 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
Tingkatkan instruksi milik IUS wiki: http://wiki.iuscommunity.org/Doc/ClientUsageGuide .
scp
dan sftp
mengakses, tanpa mengizinkan ssh
masukcd /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
Edit /etc/rssh.conf
untuk memberikan akses ke SFTP kepada pengguna rssh.
vi /etc/rssh.conf
Batalkan komentar atau tambahkan:
allowscp
allowsftp
Ini memungkinkan saya untuk terhubung ke mesin melalui protokol SFTP di Transmit (program FTP pilihan saya; saya yakin itu mirip dengan aplikasi FTP lainnya).
instruksi rssh disesuaikan (dengan apresiasi!) dari 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 | ubah sehingga terlihat seperti ini:
PERANGKAT = eth1: 1
IPADDR = 192.168.1.3
NETMASK = 255.255.255.0
NETWORK = 192.168.1.0
ONBOOT = yes
NAME = eth1: 1
Tambahkan lebih banyak antarmuka virtual sesuai kebutuhan dengan mengulangi. Karena ONBOOT=yes
baris dalam file ifcfg-eth1: 1, antarmuka ini akan muncul ketika sistem melakukan boot, atau jaringan memulai / me-restart.
service network restart
Mematikan antarmuka eth0: [OK]
Mematikan antarmuka eth1: [OK]
Mematikan antarmuka loopback: [OK]
Memunculkan antarmuka loopback: [OK]
Memunculkan antarmuka eth0: [OK]
Memunculkan antarmuka eth1: [OK] Memunculkan antarmuka eth1: [OK]
ping 192.168.1.3
64 byte dari 192.168.1.3: icmp_seq = 1 ttl = 64 waktu = 0,105 ms
Di bagian rssh di atas saya menambahkan pengguna untuk digunakan untuk SFTP. Di direktori home pengguna ini, saya membuat folder bernama 'https'. Di sinilah dokumen untuk situs ini akan hidup, jadi saya perlu menambahkan virtualhost yang akan menunjukkannya. Saya akan menggunakan antarmuka virtual di atas untuk situs ini (di sini disebut dev.site.local).
vi /etc/http/conf/httpd.conf
Tambahkan berikut ini ke akhir 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>
Saya meletakkan file index.html dummy di direktori https hanya untuk memeriksa semuanya. Saya mencoba menjelajahinya, dan mendapat izin yang ditolak kesalahannya. Log hanya memberikan referensi yang tidak jelas tentang apa yang sedang terjadi:
[Senin 17 Mei 14:57:11 2010] [kesalahan] [klien 192.168.1.100] (13) Izin ditolak: akses ke /index.html ditolak
Saya mencoba chmod 777 et. al., tetapi tidak berhasil. Ternyata, saya perlu chmod + x direktori https dan direktori induknya.
chmod +x /home
chmod +x /home/dev
chmod +x /home/dev/https
Ini menyelesaikan masalah itu.
Saya menangani DNS melalui kotak Windows Server 2003 lokal kami. Namun, dokumentasi CentOS untuk BIND dapat ditemukan di sini: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/ch-bind.html
Agar SSL berfungsi, saya mengubah yang berikut di 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>
Sayangnya, saya terus mendapatkan kesalahan (Kode galat: ssl_error_rx_record_too_long) ketika mencoba mengakses halaman dengan SSL. Seperti yang ditunjukkan oleh James Hannah dengan anggun di bawah ini , saya belum mengatur lokasi sertifikat di httpd.conf, dan dengan demikian mendapatkan halaman yang dilemparkan ke bros sebagai sertifikat membuat browser menolak.
Jadi pertama-tama, saya perlu mengatur CA dan membuat file sertifikat. Saya menemukan langkah-langkah (jika tua) yang hebat pada proses di sini: http://www.debian-administration.org/articles/284 .
Berikut langkah-langkah relevan yang saya ambil dari artikel itu:
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
Buat openssl.cnf
file di /home/CA/
dir dan edit per walkthrough yang ditautkan di atas. (Untuk referensi, file openssl.cnf saya yang sudah selesai tampak seperti ini: 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)
Dimodifikasi openssl.cnf
lagi per petunjuk langkah-langkah.
#generates certificate request, and key.pem which I renamed dev.key.pem.
openssl req -sha1 -new -nodes -out dev.req.pem -config ./openssl.cnf
Dimodifikasi openssl.cnf
lagi per petunjuk langkah-langkah.
#create and sign certificate.
openssl ca -out dev.cert.pem -md sha1 -config ./openssl.cnf -infiles dev.req.pem
PENTING!
Pindahkan file dan rujuk dari httpd.conf di lokasi baru
cp dev.cert.pem /home/dev/certs/cert.pem
cp dev.key.pem /home/certs/key.pem
Saya memperbarui httpd.conf untuk mencerminkan sertifikat dan mengaktifkan SSLEngine pada:
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>
Masukkan CA cert.pem di tempat yang dapat diakses web, dan unduh / impor ke browser saya. Sekarang saya dapat mengunjungi https: //dev.site.local tanpa kesalahan atau peringatan.
Dan inilah tempat saya berada. Saya akan terus mengedit ini saat saya membuat kemajuan. Setiap tips tentang cara mengkonfigurasi email SSL, dan / atau mengkonfigurasi koneksi aman ke Box lain yang akan menjadi server MySQL akan dihargai.
Jawaban:
Panduan ini memiliki banyak jawaban tentang penggunaan SSL dengan Apache, memberi tahu Anda cara membuat sertifikat yang ditandatangani sendiri, cara mendapatkan sertifikat yang tepat dari otoritas sertifikat yang diakui (CA) dan cara membuat CA Anda sendiri, tidak dipercaya untuk membuat sertifikat lengkap. http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html
Sedangkan untuk host virtual dan SSL, setiap host akan memerlukan alamat IP sendiri atau solusi yang lebih kotor adalah untuk menampung mereka di port yang berbeda, daripada standar
:443
karena sifat sertifikat SSL, hosting virtual berbasis nama tidak cocok dengan SSL; itulah sebabnya Anda perlu metode lain untuk membedakan; port / IP berbeda.Menyiapkan SSH cukup mudah, itu seharusnya sudah berjalan di server Anda. Anda akan ingin melakukan sejumlah hal untuk menguncinya.
Ini dapat ditambahkan ke Anda
/etc/ssh/sshd_config
untuk membatasi akses root jarak jauh, dan menghapus otentikasi kata sandi, alih-alih menggunakan keypairs publik / pribadi untuk masuk.Untuk membuat keypair SSH Anda, Anda dapat menggunakannya
puttygen
di Windows; http://putty.very.rulez.org/download.html atau Anda dapat menciptakan keypair di lingkungan Linux seperti:ssh-keygen -b 2048 -t RSA -f my_keypair
. Ini akan membuatmy_keypair
file danmy_keypair.pub
file (hanya diberi nama untuk contoh ini, saya mungkin menyarankan penamaan untuk nama pengguna Anda atau meninggalkan-f
, dan membiarkannya menghasilkan~/.ssh/id_rsa
).Transfer
my_keypair
ke workstation Anda dengan aman, untuk akses SSH di masa depan, ini adalah kunci pribadi, Anda tidak boleh membaginya dengan siapa pun. Kemudian, di server, buat$HOME/.ssh
jika belum ada,,mkdir ~/.ssh
lalu salin kunci publik (my_keypair.pub
) ke~/.ssh/
, jika Anda sudahauthorized_keys
masuk~/.ssh
karena Anda telah melakukan ini untuk hal-hal lain, Anda dapat lakukancat my_keypair.pub >> authorized_keys
untuk menambahkan kunci publik Anda, ataucp my_keypair.pub authorized_keys
jika itu tidak ada.Sekarang jalankan
chmod 700 ~/.ssh
danchmod 644 ~/.ssh/my_keypair.pub ~/.ssh/authorized_keys
untuk mengatur izin. Anda dapat menyimpan salinanmy_keypair
dalam~/.ssh/
untuk digunakan saat menghubungkan ke host lain, tetapi Anda harus melakukannyachmod 600 ~/.ssh/my_keypair
untuk memastikan tidak ada orang lain yang dapat mengaksesnya.Anda ingin menambahkan akun pengguna normal untuk diri sendiri, dan menambahkan diri Anda ke grup selain
users
, sepertiadmins
dalam contoh saya.Anda mungkin juga ingin menambahkan pengguna atau grup Anda
/etc/sudoers
untuk mengaktifkansudo
penggunaan, jika Anda belum melakukannya. Ini dilakukan dengan perintahvisudo
yang merupakan satu-satunya cara Anda mengedit file ini.visudo
menjalankan kesalahan dan sintaks memeriksa konfigurasi Anda sebelum menuliskannya, mencegah hilangnyasudo
penggunaan.ditambahkan ke
/etc/sudoers
akan memungkinkanusername
untuk berjalansudo yum install blah
dan akan meminta Anda untuk kata sandi Anda sendiri. Ini berguna jika Anda memiliki administrator lain atau administrator sementara, Anda tidak perlu membagikan kata sandi root.sumber
Masalah dengan konfigurasi SSL Anda adalah Anda belum benar-benar mengaktifkan SSL, Anda memerlukan arahan Apache untuk itu:
Tanpa ini Anda akan mendapatkan catatan yang terlalu lama kesalahan, itu karena bukan header SSL yang diharapkan browser Anda, itu mendapatkan hanya halaman web tidak terenkripsi dalam potongan besar.
sumber
MySQL dari paket asli mendukung SSL. Untuk memeriksa build MySQL Anda, jalankan
Anda harus menemukan sesuatu seperti
have_ssl yes
. Atur opsissl-ca
,ssl-key
danssl-cert
.Buat akun pengguna dengan persyaratan SSL:
sumber