Инсталирайте Lets Encrypt SSL в приложението WordPress с едно щракване
Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,
Целта на този урок е да се отървете от публичните SSH и публичните RDP връзки. Като поставим всичко това зад много удобен HTML5 клиент, можем да добавим слой сигурност за достъп до нашия облак.
Guacamole също регистрира всеки отдалечен достъп, така че неоторизираният достъп става много по-проследим.
Забележка: За Let's encrypt (опция B) имаме нужда от име на домейн. Ако нямате такъв, можете да пропуснете тази стъпка и просто изпълнява опция А .
Започнете със завъртане на VPS в желаната от вас зона Vultr. А 1024 MB
VPS ще бъде достатъчно, тъй като не е Гуакамоле че взискателни.
Започнете, като активирате частната мрежа на VPS. Това е добре документирано тук
Първо нека втвърдим малко изображението. И нека проверим дали предоставеното изображение е ufw
активирано.
root@vultr:~# ufw status
Status: inactive
По подразбиране е деактивиран, така че ще трябва да добавим няколко правила.
Нека започнем с конфигурирането на тези портове.
ufw allow 22/tcp
ufw allow 8080/tcp
След това активирайте защитната стена.
ufw enable
Не се притеснявайте, ако получите предупреждение. Ако добавите порт 22
, няма да се сблъскате с никакви проблеми.
root@vultr:~# ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
След като бъде активирано, поискайте състоянието на защитната стена и ще видим конфигурацията на нашия порт.
ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
8080/tcp (v6) ALLOW Anywhere (v6)
Преди да започнем да инсталираме, трябва да актуализираме и надстроим репо. С пакети като Tomcat
, който е базиран на Java, има постоянен поток от открити грешки и свързаните с тях корекции на грешки. Обикновено е добра идея да направим това първо, вместо да бързаме директно към нашата инсталация.
apt-get update
apt-get -y upgrade
Следват всички зависимости. Гуакамоле има доста от тях. (Пълен списък на зависимостите и тяхната функция можете да намерите тук ). Нека продължим, като инсталираме всички тях.
apt-get -y install build-essential tomcat8 freerdp libcairo2-dev libjpeg-turbo8-dev libpng12-dev libossp-uuid-dev libavcodec-dev libavutil-dev libfreerdp-dev libpango1.0-dev libssh2-1-dev libtelnet-dev libvorbis-dev libwebp-dev mysql-server mysql-client mysql-common mysql-utilities libswscale-dev libvncserver-dev libpulse-dev libssl-dev
Когато инсталаторът поиска root парола за MySQL, предоставете я и не забравяйте да я вземете под внимание. Ще използваме тази парола по-късно, за да създадем базата данни Guacamole.
Сега, когато имаме всичките си зависимости, можем да продължим с изтеглянето на Guacamole. Самото гуакамоле идва предимно в изходна форма, а не в двоичен файл. Първо ще се преместим в /tmp
папката, за да избегнем претрупване на други части на диска. След това изтеглете целия изходен код.
Има четири изходни/двоични файла за изтегляне:
guacamole-0.9.13-incubating.war
: Това е уеб приложението. А WAR
файла е компресиран уеб пакет, който осигурява единен уебсайт се хоства на сайта Tomcatguacamole-server-0.9.13-incubating.tar.gz
: Този файл ще предостави бекенд guacd
приложението. Това създава потоците през RDP и SSH.guacamole-auth-jdbc-0.9.13-incubating.tar.gz
: Ще използваме локална MySQL база данни, така че се нуждаем от свързания JDBC
конектор.mysql-connector-java-5.1.43.tar.gz
: Без драйвер за база данни JDBC конекторът не прави нищо. Този файл е предоставен от самия екип на MySQL.Забележка: изтеглянията са разрешени до най-близкия сървър .
cd /tmp
wget http://apache.belnet.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-0.9.13-incubating.war
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/source/guacamole-server-0.9.13-incubating.tar.gz
wget http://apache.cu.be/incubator/guacamole/0.9.13-incubating/binary/guacamole-auth-jdbc-0.9.13-incubating.tar.gz
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.43.tar.gz
След като изтеглим всички тези файлове, извлечете tar.gz
's.
tar -xzvf guacamole-server-0.9.13-incubating.tar.gz
tar -xzvf guacamole-auth-jdbc-0.9.13-incubating.tar.gz
tar -xzvf mysql-connector-java-5.1.43.tar.gz
След като извлечехме целия изходен код, нека направим няколко guacamole
папки, които ще бъдат използвани от приложението guacamole и неговите зависимости.
mkdir -p /etc/guacamole/lib
mkdir -p /etc/guacamole/extensions
Всичко е готово за нашите нови бинарни файлове Guacamole. Сега можем да започнем процеса на компилация и инсталиране. Преминете към извлечената папка на Guacamole Server.
cd /tmp/guacamole-server-0.9.13-incubating
Конфигурирайте приложението също така да създаде init.d
файл за стартиране като услуга по-късно.
./configure --with-init-dir=/etc/init.d
Командата трябва да завършва с „да“ за всички библиотеки и протоколи. Ако не, върнете се и проверете командата apt-get, за да се уверите, че не сте пропуснали нито един пакет.
------------------------------------------------
guacamole-server version 0.9.13-incubating
------------------------------------------------
Library status:
freerdp ............. yes
pango ............... yes
libavcodec .......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... yes
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ yes
libwebp ............. yes
Protocol support:
RDP ....... yes
SSH ....... yes
Telnet .... yes
VNC ....... yes
Services / tools:
guacd ...... yes
guacenc .... yes
Init scripts: /etc/init.d
Type "make" to compile guacamole-server.
След това компилирайте и инсталирайте сървъра Gucamole.
make && make install
След като всичко това е направено, стартирайте, за ldconfig
да изградите отново пътя за търсене за добавени библиотеки.
ldconfig
Продължете, като използвате systemctl
to setup guacd
(Guacamole Daemon), за да стартирате при стартиране.
systemctl enable guacd
Бинарните файлове на Guacamole вече са инсталирани. Сега ще подготвим уеб приложението за Tomcat.
Започнете с преместване на war
файла в guacamole
папката, която току-що създадохме, след като това стане, създайте логическа връзка в директорията tomcat, която да сочи към нашия war
файл.
cd /tmp
mv guacamole-0.9.13-incubating.war /etc/guacamole/guacamole.war
ln -s /etc/guacamole/guacamole.war /var/lib/tomcat8/webapps/
След това се нуждаем от mysql конектора и JDBC. Драйверът JDBC е необходим в extensions
папката, конекторът в lib
папката.
cp mysql-connector-java-5.1.43/mysql-connector-java-5.1.43-bin.jar /etc/guacamole/lib/
cp guacamole-auth-jdbc-0.9.13-incubating/mysql/guacamole-auth-jdbc-mysql-0.9.13-incubating.jar /etc/guacamole/extensions/
Once the connector and JDBC are in place, we need to edit the tocamt8
file. This file contains a lot of tomcat8
settings, and in our case we need to add the GUACAMOLE_HOME
variable at the end of the file.
nano /etc/default/tomcat8
Append with the following.
GUACAMOLE_HOME=/etc/guacamole
Next up is creating the database. Guacamole stores its connection configuration in a database, not inside a file.
Login with the root password
you used during the installation.
mysql -u root -p
The first step is to create a database called 'guacamole_db'.
create database guacamole_db;
Then run the create user
command. This will create a user with a password mysupersecretpassword
, this user will only be able to connect from localhost
.
create user 'guacamole_user'@'localhost' identified by "mysupersecretpassword";
Grant CRUD
operations to this user for the database guacamole_db
.
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'localhost';
Flush privileges and exit the shell.
flush privileges;
exit
Finish up by adding the Guacamole schema to our newly created database.
cat /tmp/guacamole-auth-jdbc-0.9.13-incubating/mysql/schema/*.sql | mysql -u root -p guacamole_db
Once this is done, we need to edit the guacamole.properties
file. This file contains our recently created MySQL server configuration.
nano /etc/guacamole/guacamole.properties
Append the MySQL connection details and credentials.
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacamole_db
mysql-username: guacamole_user
mysql-password: mysupersecretpassword
Finish up by creating a symbolic link to the tomcat share folder, as this is where the WAR
file will search these properties.
ln -s /etc/guacamole /usr/share/tomcat8/.guacamole
End by restarting the tomcat8
server and start the guacd
server daemon.
service tomcat8 restart
service guacd start
You can verify by using the status command.
service tomcat8 status
service guacd status
Now you can browse to your VPS on port 8080
http://<yourpublicip>:8080/guacamole/
Use the username guacadmin
and the same password guacadmin
. This will grant you access to an empty Guacamole server.
Click in the top right corner on your username guacadmin
and select Settings
. Once you are in the settings page go to the Users
tab and select the user guacadmin
.
Now change your password to something else or create a new admin user and delete the default guacadmin
one.
These are the final steps: cleaning up after you are done.
Delete the downloaded source code and binaries from the /tmp
folder.
rm -rf /tmp/guacamole-*
rm -rf /tmp/mysql-connector-java-*
Also, make the Guacamole web application the default one. In the tomcat ecosystem the application that gets the ROOT
folder is the one that is started by default when you access the website.
Delete the old ROOT
placeholder.
rm -rf /var/lib/tomcat8/webapps/ROOT
And make a symbolic link for the guacamole server to be the ROOT
one.
ln -s /var/lib/tomcat8/webapps/guacamole /var/lib/tomcat8/webapps/ROOT
This requires a tomcat restart.
service tomcat8 restart
Edit the tomcat8/server.xml
file and change the connector port.
nano /etc/tomcat8/server.xml
Search for the Connector port
.
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />
And replace 8080
with 80
.
By default, tomcat doesn't allow the binding of ports below 1024
. To enable this we need to tell tomcat8 to create authenticated binds.
Edit the default
file of tomcat8 and uncomment the AUTHBIND
line and use the option yes
nano /etc/default/tomcat8
AUTHBIND=yes
Once this is done, intall authbind
.
apt-get install authbind
Configure it so that port 80
can be claimed by tomcat8.
touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown tomcat8 /etc/authbind/byport/80
Allow port 80
through the firewall and delete the rule for 8080
.
ufw allow 80/tcp
ufw delete allow 8080/tcp
Restart tomcat.
service tomcat8 restart
That's it, now Guacamole should be running on port 80
.
Tomcat really isn't one of the best and most robust applications to use with certbot
. Luckily Nginx is. We will just to proxy tomcat to Nginx. It uses the out-of-the-box functionality of certbot at the cost of sacrificing a little bit of RAM.
apt-get install nginx
Once installed, edit the default configuration.
nano /etc/nginx/sites-available/default
Delete all example configurations and add the following configuration.
server {
listen 0.0.0.0:80;
proxy_request_buffering off;
proxy_buffering off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
This will create a proxy for the website running at 8080
. Restart Nginx, and enable it at boot.
systemctl restart nginx
systemctl enable nginx
Check if everything is working.
systemctl status nginx
Disable the testing port 8080
and allow traffic on port 80
.
ufw allow 80/tcp
ufw delete allow 8080/tcp
Before we can use certbot
, we need to add the correct ppa
to the system containing our certbot packages.
add-apt-repository ppa:certbot/certbot
Press "ENTER
" to accept the configuration change.
Update apt
to gather the new packages.
apt-get update
Finally, install the Nginx module for assigning the certificates.
apt-get -y install python-certbot-nginx
Configure the firewall to allow HTTPS
.
ufw allow 443/tcp
Before we can request new certificates, we need a DNS name.
nano /etc/nginx/sites-available/default
Add the following server_name
setting.
server_name rdp.example.com;
Change the configuration to reflect this new setting.
server {
server_name rdp.example.com;
listen 0.0.0.0:80;
proxy_request_buffering off;
proxy_buffering off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Check if all is working and restart Nginx.
nginx -t
service nginx restart
Now request a certificate with certbot.
certbot --nginx -d rdp.example.com
Предоставете своя имейл и се съгласете с въпросите, зададени от инсталатора. (Можете спокойно да изберете " No
" за споделяне на вашия имейл.) Certbot автоматично ще попита какво трябва да прави с HTTPS
. Ще използваме вариант 2: redirect to HTTPS
.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Последното нещо, което ще направим, е да актуализираме DH
параметрите. Те по подразбиране са малко слаби за стандартите за 2017 г.
Създайте няколко нови.
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
След това ги добавете към сайта по подразбиране в Nginx.
nano /etc/nginx/sites-available/default
Добавете ги към конфигурацията на сървъра.
server {
server_name rdp.example.com;
listen 0.0.0.0:80;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
proxy_request_buffering off;
proxy_buffering off;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Проверете за грешки.
nginx -t
Приложете промените, като рестартирате сървъра.
service nginx restart
Почистете старото 8080
правило
ufw delete allow 8080/tcp
Забележка: ако трябва да получите "502 Bad Gateway", ще трябва да рестартирате tomcat8 .
service tomcat8 restart
Сертификатите Let's Encrypt изискват подновяване. Можем да създадем cron работа за това. Започнете с редактиране на crontab
.
crontab -e
Добавете следния ред.
00 2 * * * /usr/bin/certbot renew --quiet
Това ще провери в 2:00 часа сутринта дали сертификатите изискват подновяване и ще ги поднови, ако го направят.
Отидете на вашия сървър Guacamole ( http://<ip>/
или https://rdp.example.com)
).
За този тест ще ви трябват още два екземпляра: една Linux VM и друга Windows Server 2012 R2 с активиран частен IP и на двете.
Щракнете върху " username
" в горния десен ъгъл и отидете на " Settings
". След това отидете на " Connections
" и изберете " New Connection
".
Попълнете следните настройки (можете да оставите другите по подразбиране).
Name: Windows Server 2012 R2
Location: ROOT
Protocol: RDP
Maximum number of connections: 1
Maximum number of connections per user: 1
Parameters > Hostname: 10.99.0.12
Parameters > Port: 3389
Username: Administrator
Password: <password> (provided by Vultr)
Security mode: Any
Ignore server certificate: <checked>
Натиснете " save
" и се върнете към началния екран. Сега можете да щракнете върху връзката " Windows Server 2012 R2
" и тя ще RDP към тази машина.
Натиснете " Ctrl+Shift+Alt
". Това ще изскочи менюто отстрани. Тук можете да прекъснете връзката или да изпълнявате други административни задачи за Guacamole.
Щракнете username
върху горната част на менюто и отидете на " Settings
". След това отидете на раздела " Connections
" и изберете " New Connection
".
Попълнете следните настройки (можете да оставите другите по подразбиране).
Name: Linux
Location: ROOT
Protocol: SSH
Maximum number of connections: 5
Maximum number of connections per user: 2
Parameters > Hostname: 10.99.0.11
Parameters > Port: 22
Username: root
Password: <password> (provided by Vultr)
Натиснете " save
" и се върнете към началния екран. Сега можете да щракнете върху тази новосъздадена връзка и да бъдете свързани към вашия Linux сървър чрез SSH.
Вече имате уеб RDP/SSH HTML5 шлюз. Сега можете да защитите стената на публичния RDP и SSH достъп на вашата платформа и да получите достъп до вашата среда от всеки модерен браузър. За повече информация за това, което може да предложи Гуакамоле, има голяма видеоклип, показващ всички possiblities на платформата тук .
Въведение Lets Encrypt е услуга на сертифициращ орган, която предлага безплатни TLS/SSL сертификати. Процесът на инсталиране е опростен от Certbot,
Използване на различна система? Ако закупите сървър на Debian, винаги трябва да имате най-новите корекции за сигурност и актуализации, независимо дали спите или не
PHP и свързаните с него пакети са най-често използваните компоненти при разгръщане на уеб сървър. В тази статия ще научим как да настроим PHP 7.0 или PHP 7.1 o
Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне
Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте
1. Virtualmin/Webmin Virtualmin е мощен и гъвкав контролен панел за уеб хостинг за Linux и UNIX системи, базиран на добре познатата уеб база с отворен код
Yii е PHP рамка, която ви позволява да разработвате приложения по-бързо и лесно. Инсталирането на Yii в Ubuntu е лесно, както ще научите точно l
Този урок обяснява как да настроите DNS сървър с помощта на Bind9 на Debian или Ubuntu. В цялата статия заменете your-domain-name.com съответно. При th
Въведение Logrotate е помощна програма за Linux, която опростява администрирането на лог файлове. Обикновено се изпълнява веднъж на ден чрез cron задание и управлява базата от регистрационни файлове
Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент
Използване на различна система? Red5 е медиен сървър с отворен код, внедрен в Java, който ви позволява да стартирате Flash многопотребителски приложения, като например предаване на живо
В тази статия ще видим как да компилирате и инсталирате основната линия на Nginx от официалните източници на Nginx с модула PageSpeed, който ви позволява да
Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока
Използване на различна система? Vanilla forum е приложение за форум с отворен код, написано на PHP. Той е напълно адаптивен, лесен за използване и поддържа външен
Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира
Използване на различна система? Въведение Kanboard е безплатна програма за управление на проекти с отворен код, която е предназначена да улеснява и визуализира
Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от Git. Gitea е написана на Голанг и е
Използване на различна система? Gitea е алтернатива с отворен код, самостоятелно хоствана система за контрол на версиите, задвижвана от git. Gitea е написана на Голанг и е
Въведение Lynis е безплатен инструмент за одит на системата с отворен код, който се използва от много системни администратори за проверка на целостта и заздравяване на техните системи. аз
Използване на различна система? Thelia е инструмент с отворен код за създаване на уебсайтове за е-бизнес и управление на онлайн съдържание, написано на PHP. Изходен код на Thelia i
Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.
Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.
Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.
Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.
Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…
Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.
Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.
Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.
В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.
Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече