Secure Apache2 HTTPS Websites with Let’s Encrypt Free SSL/TLS Certificates on Ubuntu 16.04 | 18.04
Настройка Apache для 1С
Имеем локальный сервер с именем http и установленной samba
в локальной сети резолвиться http
192.168.0.111 ip в локальной сети
10.10.10.101 ip в сети vpn
X.X.X.X ip в сети интернет (проброшен 443 порт)
$ sudo dpkg -i 1c-enterprise83-ws_8.3.13-1690_amd64.deb
$ sudo apt-get install apache2 -y
Создаем директорию для vrd-файла:
$ sudo mkdir -p /var/www/ib/demo
А также файл конфигурации Apache:
$ sudo touch /etc/apache2/conf-available/demo.conf
Переходим в каталог со утилитой публикации веб-клиента:
$ cd /opt/1C/v8.3/x86_64/
Запускаем утилиту:
$ sudo ./webinst -apache24 -wsdir demo -dir '/var/www/ib/demo' -connstr 'Srvr="test";Ref="demo";' -confPath /etc/apache2/conf-available/demo.conf
Подключаем конфигурацию:
$ sudo a2enconf demo
Перезагрузка Apache:
$ sudo service apache2 reload
# systemctl restart apache2
Смотрим:
http://test/demo или https://test/demo
========================
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/cert/
$ sudo -i
# cd /etc/cert
$ sudo mkdir /var/www/html/http/
$ sudo chown -R www-data:www-data /var/www/html/http/
$ sudo chmod -R 755 /var/www/html/http/
$ sudo a2enmod rewrite
$ sudo a2enmod ssl
$ sudo a2enmod headers
$ sudo openssl dhparam -out /etc/cert/dhparam.pem 2048
$ sudo nano /etc/apache2/sites-available/http.conf
<VirtualHost *:80>
ServerName http
Redirect permanent / https://http/
</VirtualHost>
<VirtualHost *:443>
ServerName http
DocumentRoot /var/www/html/http
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == '192.168.0.111'"> Redirect permanent / https://http/
</If>
ErrorLog ${APACHE_LOG_DIR}/http-error.log
CustomLog ${APACHE_LOG_DIR}/http-access.log combined
SSLEngine On
SSLCertificateFile /etc/cert/server-cert.pem
SSLCertificateKeyFile /etc/cert/server-key.pem
SSLOpenSSLConfCmd DHParameters "/etc/cert/dhparam.pem"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCompression off
SSLUseStapling on
<Directory /var/www/html/http/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html/http/>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [PT,L]
</Directory>
</VirtualHost>
Сохранить.
$ sudo nano /etc/apache2/mods-available/ssl.conf
Добавить после <IfModule mod_ssl.c> :
<IfModule mod_ssl.c>
# Set the location of the SSL OCSP Stapling Cache
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
Сохранить.
$ sudo nano /var/www/html/http/.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^192\.168\.0\.111
RewriteRule (.*) https://http/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^10\.10\.10\.101
RewriteRule (.*) https://10.10.10.101/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^X\.X\.X\.X
RewriteRule (.*) https://X.X.X.X/$1 [R=301,L]
Сохранть.
$ sudo chown -R www-data:www-data /var/www/html/http/
$ sudo chmod -R 755 /var/www/html/http/
$ sudo a2dissite 000-default.conf
$ sudo a2ensite http.conf
$ sudo service apache2 reload
$ sudo systemctl restart apache2
https://http/demo
Для windows скачать /etc/cert/ca-sert.pem переименовать в ca-sert.crt
Установка корневого сертификата в браузере Mozilla Firefox
Для IE, Google Chrome и других браузеров ca-sert.crt установить в Доверенные корневые центры сертификации
Настройка ufw для ограничения доступа по vpn
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo ufw reset
$ sudo ufw status
$ sudo ufw enable
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ ip a
... enp0s3 ...
$ sudo ufw allow out on enp0s3
$ sudo ufw allow in onenp0s3
$ sudo ufw allow out on tun0 to any port 22
$ sudo ufw allow in on tun0 to any port 22
$ sudo ufw allow out on tun0 to any port 443
$ sudo ufw allow in on tun0 to any port 443
$ sudo ufw disable && sudo ufw enable
$ sudo ufw status
Таким образом локальная сеть без ограничений, по tun0 открыт ssh, а доступ к нему по сертификату.
Удаление правил:
# ufw status numbered
.........
# ufw delete 2
Настройка Apache для 1С
Имеем локальный сервер с именем http и установленной samba
в локальной сети резолвиться http
192.168.0.111 ip в локальной сети
10.10.10.101 ip в сети vpn
X.X.X.X ip в сети интернет (проброшен 443 порт)
$ sudo dpkg -i 1c-enterprise83-ws_8.3.13-1690_amd64.deb
$ sudo apt-get install apache2 -y
Создаем директорию для vrd-файла:
$ sudo mkdir -p /var/www/ib/demo
А также файл конфигурации Apache:
$ sudo touch /etc/apache2/conf-available/demo.conf
Переходим в каталог со утилитой публикации веб-клиента:
$ cd /opt/1C/v8.3/x86_64/
Запускаем утилиту:
$ sudo ./webinst -apache24 -wsdir demo -dir '/var/www/ib/demo' -connstr 'Srvr="test";Ref="demo";' -confPath /etc/apache2/conf-available/demo.conf
Где /var/www/ib/demo
- директория где будет создан vrd-файл, demo
- имя ИБ, test - адрес сервера 1С:Предпрятие, а /etc/apache2/conf-available/demo.conf
- путь до конфигурационного файла Apache.Подключаем конфигурацию:
$ sudo a2enconf demo
Перезагрузка Apache:
$ sudo service apache2 reload
# systemctl restart apache2
Смотрим:
http://test/demo или https://test/demo
========================
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/cert/
$ sudo -i
# cd /etc/cert
Генерация CA
# certtool --generate-privkey --outfile ca-key.pem
# cat << _EOF_ >ca.tmpl
cn = "VPN CA"
organization = "Big Corp"
serial = 1
expiration_days = -1
ca
signing_key
cert_signing_key
crl_signing_key
_EOF_
# certtool --generate-self-signed --load-privkey ca-key.pem \
--template ca.tmpl --outfile ca-cert.pem
Генерация сертификата локального сервера
В следующем примере создается ключ сервера и пара сертификатов.
# certtool --generate-privkey --outfile server-key.pem
# cat << _EOF_ >server.tmpl
cn = "VPN server"
dns_name = "http"
ip_address = "192.168.0.111"
ip_address = "10.10.10.101"
ip_address = "X.X.X.X"
organization = "MyCompany"
expiration_days = -1
signing_key
encryption_key #only if the generated key is an RSA one
tls_www_server
_EOF_
# sudo nano server.tmpl
cn = "VPN server"
dns_name = "http"
ip_address = "192.168.0.111"
ip_address = "10.10.10.101"
organization = "MyCompany"
expiration_days = -1
signing_key
encryption_key #only if the generated key is an RSA one
tls_www_server
# certtool --generate-certificate --load-privkey server-key.pem \
--load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem \
--template server.tmpl --outfile server-cert.pem
$ sudo mkdir /var/www/html/http/
$ sudo chown -R www-data:www-data /var/www/html/http/
$ sudo chmod -R 755 /var/www/html/http/
$ sudo a2enmod rewrite
$ sudo a2enmod ssl
$ sudo a2enmod headers
$ sudo openssl dhparam -out /etc/cert/dhparam.pem 2048
$ sudo nano /etc/apache2/sites-available/http.conf
<VirtualHost *:80>
ServerName http
Redirect permanent / https://http/
</VirtualHost>
<VirtualHost *:443>
ServerName http
DocumentRoot /var/www/html/http
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == '192.168.0.111'"> Redirect permanent / https://http/
</If>
ErrorLog ${APACHE_LOG_DIR}/http-error.log
CustomLog ${APACHE_LOG_DIR}/http-access.log combined
SSLEngine On
SSLCertificateFile /etc/cert/server-cert.pem
SSLCertificateKeyFile /etc/cert/server-key.pem
SSLOpenSSLConfCmd DHParameters "/etc/cert/dhparam.pem"
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCompression off
SSLUseStapling on
<Directory /var/www/html/http/>
Options FollowSymlinks
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/html/http/>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) index.php [PT,L]
</Directory>
</VirtualHost>
Сохранить.
$ sudo nano /etc/apache2/mods-available/ssl.conf
Добавить после <IfModule mod_ssl.c> :
<IfModule mod_ssl.c>
# Set the location of the SSL OCSP Stapling Cache
SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
Сохранить.
$ sudo nano /var/www/html/http/.htaccess
RewriteEngine On
RewriteCond %{HTTP_HOST} ^192\.168\.0\.111
RewriteRule (.*) https://http/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^10\.10\.10\.101
RewriteRule (.*) https://10.10.10.101/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^X\.X\.X\.X
RewriteRule (.*) https://X.X.X.X/$1 [R=301,L]
Сохранть.
$ sudo chown -R www-data:www-data /var/www/html/http/
$ sudo chmod -R 755 /var/www/html/http/
$ sudo a2dissite 000-default.conf
$ sudo a2ensite http.conf
$ sudo service apache2 reload
$ sudo systemctl restart apache2
https://http/demo
Для windows скачать /etc/cert/ca-sert.pem переименовать в ca-sert.crt
Установка корневого сертификата в браузере Mozilla Firefox
Для IE, Google Chrome и других браузеров ca-sert.crt установить в Доверенные корневые центры сертификации
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo ufw reset
$ sudo ufw status
$ sudo ufw enable
$ sudo ufw default deny incoming
$ sudo ufw default deny outgoing
$ sudo ufw default deny forward
$ ip a
... enp0s3 ...
$ sudo ufw allow out on enp0s3
$ sudo ufw allow in onenp0s3
$ sudo ufw allow out on tun0 to any port 22
$ sudo ufw allow in on tun0 to any port 22
$ sudo ufw allow out on tun0 to any port 443
$ sudo ufw allow in on tun0 to any port 443
$ sudo ufw disable && sudo ufw enable
$ sudo ufw status
Таким образом локальная сеть без ограничений, по tun0 открыт ssh, а доступ к нему по сертификату.
Удаление правил:
# ufw status numbered
.........
# ufw delete 2
.
Комментариев нет:
Отправить комментарий