Это первый раз, когда мне пришлось настроить Unix Server в качестве удаленного сервера для веб-сайта, основанного на LAMP. Также необходимо предложить поддержку SFTP и GIT. Я прочитал много руководств и записал все шаги, которые я сделал.
Это работает прямо сейчас. Я хотел бы спросить вас, есть ли какие-либо проблемы с безопасностью в моем рабочем процессе или как я могу повысить безопасность системы.
Приступим:
На моем сервере есть пользователь « root
» и пользователь « dev
». dev
должен иметь возможность входить на сервер с помощью sftp, выгружать и скачивать файлы в папку / var / www / html
. Его домашняя папка - / var / www /
, и она привязана к этой папке (надеюсь!). У него нет доступа на запись к / var / www /
, а только к папке / html
.
Вот что я сделал:
############ LAMP
useradd --home-dir /var/www -g www-data dev
chown -R dev:www-data /var/www/html && chmod 755 /var/www/html
apt-get install apache2
apt-get install mysql-server php5-mysql
mysql_install_db
mysql_secure_installation
apt-get install php5 libapache2-mod-php5 php5-mcrypt
apt-get install phpmyadmin apache2-utils
nano /etc/apache2/apache2.conf
(add Include /etc/phpmyadmin/apache.conf
change AllowOverride to All on /var/www/html/)
a2enmod rewrite
apt-get install php5-gd php5-curl php5-xmlrpc php5-pspell
service apache2 restart
nano /etc/phpmyadmin/apache.conf
(add AllowOverride All inside <Directory /usr/share/phpmyadmin>)
nano /usr/share/phpmyadmin/.htaccess
(add AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/apache2/.phpmyadmin.htpasswd
Require valid-user)
htpasswd -c /etc/apache2/.phpmyadmin.htpasswd dev
service apache2 restart
############ PHP EMAILS
apt-get install ssmtp
nano /etc/ssmtp/ssmtp.conf
(delete all and replace with (gmail example):
mailhub=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=<YOUR-EMAIL>@gmail.com
AuthPass=<YOUR-PASSWORD>
FromLineOverride=YES)
############ FTP WITH SSH
apt-get install vsftpd
apt-get install openssh-server
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
nano /etc/vsftpd.conf
(local_enable=YES
write_enable=YES
local_umask=022
chroot_local_user=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH)
nano /etc/ssh/sshd_config
(Match group www-data <-- with this I can a broken pipe error on ssh connection
ChrootDirectory /var/www
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication yes)
etc/init.d/vsftp restart
############ GIT
apt-get install git
git config --global user.name "Name"
git config --global user.email email@email.com
mkdir /var/www/.shh && chown dev:dev /var/www/.ssh/ && chmod 700 /var/www/.ssh
su dev && ssh-keygen -t rsa -b 4096 -C "email@email.com"
(path: /var/www/.ssh/)
cd /var/www/git-repo-sever
git init --bare
Это безопасно? Это хороший подход?
Я думаю, вам вообще не нужен сервер vsftpd. Сервер OpenSSH позволяет загружать файлы с помощью sftp. Вы настроили vsftpd как ftp-сервер с поддержкой SSL (ftps). подробнее
Также вы можете улучшить безопасность своего сервера, используя следующие простые шаги:
Порт 422
; PasswordAuthentication no
использовать только ключи ssh;