Ubuntu?22.04?服務器安裝部署(nginx+postgresql)
Ubuntu 22.04 LTS 是迄今為止最好的 Ubuntu 版本之一。是什么讓它如此安全?
其安全更新的延長支持、新的硬件支持和其他林林總總的改進,使它在安全方面遠遠超過了之前的所有版本。
但它是如何做到這一點的呢?還有,是什么讓這個版本與以前的版本不同的呢?
嗯,有幾個原因,Canonical 在一篇新的博客文章中為我們重點指出了這些。在這里,讓我總結一下,以幫助你了解更多。
是什么讓 Ubuntu 22.04 LTS 變得安全?
在這個版本中,Ubuntu 團隊似乎投入了大量的工作來確保其長期的安全性和可靠性。盡管多年來他們以難以想象的方式做到了這一點,但我將強調其中的幾件事:
改進的硬件安全措施支持
更新了安全包
私有家目錄
OpenSSL 3
GCC 11
nftables 作為默認的防火墻后端
Linux 內核改進
1、改進的硬件安全措施支持
隨著英特爾、AMD 和 ARM 的 CPU/SoC 開始推出更多的安全措施,擁有足夠的軟件來讓這些功能發(fā)揮作用就變得越來越重要。
截至目前,Ubuntu 22.04 支持三種主要的硬件安全措施。
英特爾的 “軟件保護擴展(Software Guard eXtensions)”(SGX)提供了一個安全獨立的區(qū)域來進行敏感計算。例如,理想情況下,密碼處理將在這里進行,因為它確保沒有其他應用程序可以訪問這些數據。
還有 AMD 的“安全加密虛擬化(Secure Encrypted Virtualization)”(SEV)。這項技術旨在防止主機操作系統(tǒng)干擾正在運行的虛擬機。
盡管這與桌面用戶的相關性不如其他技術,但要知道,很多數據中心的基礎設施都依賴虛擬機來實現應用的容器化。總的來說,此類針對硬件的安全措施應該會加強對桌面和服務器用戶的保護。
2、Linux 內核安全的改進
隨著 Ubuntu 的每一次發(fā)布,Linux 內核都會得到升級,提供了許多有用的功能和支持。
但是,這一次,Canonical 推出了針對不同的平臺的優(yōu)化內核版本。對于 OEM 認證的桌面設備,它提供了 Linux 內核 5.17。
而對于所有的桌面和服務器用戶,可以使用 Linux 內核 5.15 LTS。
不僅僅限于這個概念,在 博文 中提到的一些基本內核安全增強措施包括:
支持 核心調度,它允許進程控制哪些線程可以在 SMT 同級之間調度,以便讓它們保護敏感信息,而不泄露給系統(tǒng)中其他不受信任的進程。
內核堆棧隨機化提供了一種加固措施,以挫敗希望在內核內進行內存破壞攻擊的攻擊者。
BPF 子系統(tǒng)也有一些安全方面的增強,包括默認情況下限制為只有特權進程可以使用,以及對簽名的 BPF 程序的初步支持。
新的 Landlock Linux 安全模塊的加入為應用程序沙箱提供了另一種機制,可以通過 AppArmor 或 SELinux 與更傳統(tǒng)的方式結合使用。
總之,所有這些改進使 Ubuntu 22.04 LTS 成為開發(fā)者、用戶和系統(tǒng)管理員的更安全的選擇。
3、更新的安全軟件包
讓我們從技術性的安全概念退后一步,回到每個 Ubuntu 用戶都應該已經熟悉的概念:軟件包。每一個新的 Ubuntu 版本,軟件庫中的大多數軟件包都會更新,以帶來更好的安全性和新功能。
盡管對于 Ubuntu 22.04 來說,這并不完全是新的東西,但這確實包括了很多安全方面的更新。這方面的例子包括 openSSL 3 和 GCC 11。
4、OpenSSL 3
OpenSSL 是所有安全通信的支柱。
考慮到包括 MD2 和 DES 在內的許多傳統(tǒng)算法已經被廢棄并默認禁用,OpenSSL 3 作為一個重大的升級特別值得關注。
因此,除非用戶特別想使用不太安全的算法,否則你將在默認情況下獲得最好的安全性。
5、GCC 11
另一方面,GCC 是許多開發(fā)者用來將他們的代碼變成可以在你的計算機上運行的程序的編譯器。
它帶來了許多改進,但有一項特別顯著地提高了安全性。靜態(tài)分析得到了極大的加強,使開發(fā)人員能夠更快地發(fā)現軟件的漏洞,在第一步就防止有漏洞的代碼被發(fā)布。
這可能不會直接影響到用戶,許多開發(fā)人員使用 Ubuntu 來開發(fā)他們的應用程序。因此,你下載的很多程序,即使在非 Ubuntu 系統(tǒng)上,也應該比以前更安全。
6、私有家目錄
作為一個傳統(tǒng)上以桌面為重點的發(fā)行版,Ubuntu 經常選擇方便而不是安全。然而,隨著他們越來越努力地推動云計算的采用,這種情況必須改變。
以前,任何有權限進入電腦的人都可以打開并查看任何用戶的家目錄。然而,你可以想象,這給非桌面用戶帶來了很多問題。因此,需要改變?yōu)樗接屑夷夸洝?/p>
對于多用戶系統(tǒng)來說,這可能稍顯不方便,但這可以相對容易地改變。而且,對于那些不太熟悉技術的人來說,他們不需要做任何事情就可以得到更好的安全保障。
7、nftables 作為默認防火墻后端
25 年來,防火墻一直是將你的計算機與更廣泛的互聯網隔離開來的一個關鍵部分。這些年來,Linux 發(fā)行版通常使用兩種不同的防火墻解決方案:iptables 和 xtables。
然而,近些年來,一種不同的解決方案進入了人們的視野:nftables。它提供了顯著的性能和靈活性的改進,使網絡管理員能夠更好地保護你的設備。
一、部署環(huán)境
環(huán)境 | 服務 | 版本號 |
系統(tǒng) | Ubuntu | 22.04 server lts |
運行環(huán)境1 | JDK | 1.8 |
前端WEB | Nginx | 1.8 |
數據庫 | postgresql | postgresql13+postgis3.1+pgrouting3.1 |
消息隊列 | rabbitmq | 3.X(3.0以上) |
運行環(huán)境2 | erlang | 23.3.3.1 |
二、安裝系統(tǒng)
2.1安裝
1.安裝方式,選第一條。
2.選擇語言,建議英語,報錯時比較好百度,中文版報錯不容易搜索。
3.選擇鍵盤標準,默認即可。
4.選擇安裝版本為標準server,鍵盤方向鍵控制光標,空格鍵選中。
5. 設置網卡,聯網環(huán)境下稍稍等待一下,即可自動獲取到IP地址。
6.配置代理,沒特殊需求不用理,直接下一步。
7.設置鏡像源,后面可以設置,這里直接下一步。
8.選擇裝系統(tǒng)的硬盤,多塊硬盤時需要進行選擇。
9.硬盤分區(qū),默認即可。
10.設置名字、主機名、用戶名,設置用戶名密碼。
11.升級Ubuntu pro,不升級,選擇跳過。(默認選項即是跳過。Skip)
12.開啟ssh服務,這個建議開啟,否則還需進系統(tǒng)修改,比較麻煩??崭襁x中。
13.選中服務快照,這里不做選擇,直接下一步。
14.系統(tǒng)自動執(zhí)行安裝,等待進度結束,點擊重啟即可。
15.點擊重啟,等待服務器自動重啟。
16.輸入先前自己設置的用戶名與密碼。密碼為不可見狀態(tài),輸入完直接Enter。
##若半天不進入到用戶登錄頁,就手動重啟一遍或多變。##
17.進入系統(tǒng)
2.2系統(tǒng)設置
進入系統(tǒng)后可使用ip a命令查看現有ip與網卡名稱,在通過終端工具連接,我使用xshell 7進行連接。
2.2.1配置ip
#進入到/etc/netplan/
cd /etc/netplan/
#此目錄下有一個為.yaml的文件,此文件為網卡配置文件,修改現有配置文件名稱為.bak如:00-installer-config.yaml修改為00-installer-config.yaml.bak
sudo mv 00-installer-config.yaml 00-installer-config.yaml.bak
#用vi或vim編輯器打開、創(chuàng)建一個名為01-netcfg.yaml的文件。
##注意,所有命令都需要在前面加上sudo。
sudo vim 01-netcfg.yaml
#第一次使用sudo 命令需要輸入密碼。輸入你登錄的密碼,密碼為不可見。
#---------------------------------------------------------
network:
version: 2
renderer: networkd
ethernets:
ens33: #網卡名稱
addresses: [10.0.0.22/24] #IP地址/子網掩碼
gateway4: 10.0.0.2 #網關
nameservers:
addresses: #DNS不聯網不用加,聯網就百度,查公用DNS與企業(yè)內部自己的DNS
#---------------------------------------------------------
#ens33:為服務器的網卡名稱。
#addresses: [10.0.0.22/24] 為此臺服務器的ip/子網掩碼。
#gateway4: 10.0.0.2 網關
#下面是DNS 不需要連外網可以不設
#保存退出--先按一下esc,然后輸入“:wq”點擊“Enter”。
#重啟網卡或服務器生效
#重啟網卡
sudo netplan apply
#重啟服務器
sudo reboot
三、部署JDK
#上傳nVisual-ubuntu_22.04_x86.tar.gz至服務器。
#使用cd命令進入到所上傳的目錄。
#進入到解壓開的目錄內
cd nVisual/jdk
#查看JDK名稱
sudo dpkg -i *.deb
#驗證JDK安裝是否成功
java -version
#出現版本號為部署成功。有問題請自行百度。
四、部署Nginx
4.1部署
#在剛剛已經上傳的包里 已有NGINX部署文件,進入到NGINX目錄。
cd nginx/
#使用dpkg命令安裝所有包。" * 代表所有文件"
sudo dpkg -i *
#啟動NGINX
sudo systemctl start nginx.service
#重啟NGINX
sudo systemctl restart nginx.service
#停止NGINX
sudo systemctl stop nginx.service
#查看服務狀態(tài)
sudo systemctl status nginx.service
#加入到開機自啟動
sudo systemctl enable nginx.service
4.2修改配置文件
#將標準配置文件替換現有Nginx配置文件。
#備份現有配置文件。
cd /etc/nginx
mv ngnx.conf nginc.conf.bak
#在微盤里獲取Nginx配置文件,上傳至/etc/nginx目錄。
#獲取地址:
https://drive.weixin.qq.com/s?k=AN0AjwcKAAwPPJlnYV
##修改NGINX啟動用戶,第一行的user修改為“登錄Ubuntu的用戶名”,否則會重啟報錯。
user [hostmane];
##修改Nginx訪問地址。
server_name localhost;
五、部署postgresql13+postgis+pgrouting
5.1部署postgresql
5.1.1部署
#在之前上傳的tar包內,以有postgresql13的安裝包。
#進入到postgresql目錄
cd nVisual/pgsql/postgresql
#安裝所有deb包。
sudo dpkg -i *.deb
#等待安裝結束。
#啟動命令
sudo systemctl start postgresql.service
#重啟命令
sudo systemctl restart postgresql.service
#加入到開機自啟
sudo systemctl enable postgresql.service
#查看服務狀態(tài)
sudo systemctl status postgresql.service
5.1.2設置優(yōu)化
#進入數據庫并設置密碼
#切換至postgres用戶
sudo su - postgres
#進入數據庫
psql
#設置密碼
alter user postgres with password 'NWEpassword';
#退出PostgreSQL數據庫
"\q" 或 "ctrl+d" 或 "quit" 或 "exit"
5.1.3配置遠程連接
#配置/etc/postgresql/13/main/pg_hba.conf
#pg_hba.conf修改項:
sudo vim /etc/postgresql/13/main/pg_hba.conf
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 trust
#配置 /etc/postgresql/13/main/postgresql.conf
sudo vim /etc/postgresql/13/main/postgresql.conf
#postgresql.conf修改項:
#listen_addresses = 'localhost'
#改為
listen_addresses = '*'
#重啟生效
systemctl restart postgresql
PGAdmin 4 測試連接
連接成功
5.2部署postgis
#進入到以上傳的文件目錄
cd nVisual/pgsql/postgis
#安裝postgis
sudo dpkg -i *.deb
#開啟postgis插件
--------------------------------------
#進入到數據庫
sudo -u postgres psql
#開啟postgis插件
create extension postgis;
create extension postgis_topology;
create extension fuzzystrmatch;
create extension address_standardizer;
create extension address_standardizer_data_us;
create extension postgis_tiger_geocoder;
#查看postgis版本,成功打印出版本號為開啟postgis插件成功。
SELECT PostGIS_full_version();
#退出查看模式(鍵入q就會自動退出。)
q
5.3部署pgrouting
#進入到以上傳的文件目錄。
cd nVisual/pgsql/pgrouting
#安裝pgrouting。
sudo dpkg -i *.deb
#等待安裝完成。
#開啟pgrouting的插件。
CREATE EXTENSION pgrouting;
#查看pgrouting版本。
select pgr_version();
#打印出pgrouting版本號為開啟插件成功。
5.4導入基礎數據
5.4.1備份基礎數據
使用PGadmin 4 備份一份基礎數據庫,基礎數據庫為nvisual_empty_template。
5.4.2同步基礎數據
創(chuàng)建一個數據庫
#恢復備份好的數據文件。
六、nVisual項目部署
6.1部署nVisual前端
#在/home/目錄下創(chuàng)建 nvisual-frontend 文件夾
sudo mkdir /home/nvisual-frontend/
#給 home 目錄以及home下的所有文件及目錄授權給登錄用戶。
#命令為:詞條命令為,給根下的 home目錄,包括以下所有文件、文件夾的用戶與用戶組授權為nvisual用戶與nvisual組。
shdo chown nvisual:nvisual -R /home
---------------------------------------
#上傳dist包至nvisual-frontend下并解壓。
tar xvf dist.tar.gz
---------------------------------------
## 如果dist目錄有更新,可以找前端人員獲取更新包,上傳至服務器解壓更新包后,使用“\cp -a”對原dist目錄進行覆蓋
---------------------------------------
#dist目錄不為dist如“dist-2.0.71.2”請修改為“dist”
sudo mv dist-2.0.71.2 dist
##注意nvisual的前端標準部署目錄路徑為/home/nvisual-frontend/若修改了前端文件的路徑,需要修改在微盤內獲取的Nginx配置文件的相關路徑。批量替換可使用 :%s###g,具體使用方法如下。
##使用vi或vim編輯文件時先不進入編輯模式,直接鍵入 :%s#要替換的內容#替換成的內容#g
-----------------------------------------------------------------------
##導入SSL證書
如果項目部署沒有跳轉https的需求,請注釋掉nginx配置文件中的ssl部分,并忽略這一步。
01. 將SSL證書導入至客戶服務器
將兩個SSL證書導入客戶服務器的/etc/nginx/ssl/目錄下
02. 檢查nginx語法并重啟nginx
nginx -t
systemctl restart nginx
03. 如果客戶服務器不需要配置https跳轉,則不需要進行SSL證書的相關配置
6.2訪問測試
使用電腦瀏覽器訪問所部署的nVisual的服務器。出現以下頁面為前端配置成功。
6.3部署nVisual后端
#在/home下,創(chuàng)建 nvisual-backend 目錄
sudo mkdir /home/nvisual-backend
#上傳后端jar包至/home/nvisual-backend/下
#進入/home/nvisual-backend/
#修改后端jar包配置文件
##**檢查數據庫地址與端口、數據庫名稱、數據庫密碼**
#啟動命令
sudo java -Dfile.encoding=utf-8 -jar xxx.jar
#在程序加載后無報錯,并出現(JVM***)表示啟動成功,轉至后臺啟動。
sudo nohup java -Dfile.encoding=utf-8 -jar xxx.jar &
#后端啟動完成,查看下Java進程
ps -ef | grep java
6.4授權
訪問服務地址:ip
管理員賬號:admin_user
管理員密碼:Admin
初次登錄會提示Mac地址錯誤,并跳轉到授權頁面。
#授權頁面,點擊服務器地址,會自動彈出服務器所存在的ip,只需點擊想要授權的ip即可,**有域名的用戶,手動填寫域名。
#點擊生成用戶識別碼,并把生成碼復制出來,發(fā)給實施或客服進行授權。
#授權生成后,會有兩個文件,一個是TXT文件,里面是后端授權碼,點擊去輸入授權碼。并把授權碼輸入進文本框,點擊注冊。
#授權成功
#授權那成功后,重新打開一頁瀏覽器頁面,輸入服務ip或域名進行訪問nVisual。就可進入到系統(tǒng)。
#授權文件里的另一個“header.js”文件,為前端授權文件,復制到/home/nvisual-frontend/dist/libs/ht/core/about/目錄下。
#刷新瀏覽器頁面生效,拖拽一兩個節(jié)點進行測試,拖拽出的節(jié)點或設備可編輯表示授權成功。如果不生效,請清楚瀏覽器緩存重試。
七、部署rabbitmq
7.1部署
#進入以上傳的rabbitmq文件目錄
cd nVisual/rabbitmq/
#安裝所有.deb包。
sudo dpkg -i *.deb
#等待安裝完成
#啟動
sudo systemctl start rabbitmq-server
#重啟
sudo systemctl restart rabbitmq-server
#狀態(tài)
sudo systemctl status rabbitmq-server
#加入到開機自啟
sudo systemctl enable rabbitmq-server
----------------------
7.2開啟可視化圖形管理界面
RabbitMQ是自帶了圖形化操作界面插件的,端口默認是15672,圖形化界面默認是關閉的,可以通過命令開啟。
#開啟RabbitMQ圖形化界面并查看端口
#啟動圖形化界面:
sudo rabbitmq-plugins enable rabbitmq_management
7.3訪問 rabbitmq
#瀏覽器嘗試訪問
訪問地址:服務器地址ip:15672
默認用戶名:guest
默認密碼: guest
##報錯顯示只能本地訪問,簡易使用下方“解決方法”
#修改配置文件
#所以需要手動創(chuàng)建以下配置文件。
vim /etc/rabbitmq/rabbitmq.conf
#文件內容為
loopback_users = none
#保存退出
#配置文件創(chuàng)建完成后重啟RabbitMQ即可在本地進行登錄。
sudo systemctl restart rabbitmq-server
#(RabbitMQ重啟有點慢,多等幾秒即可)
#重啟結束成功后,再次訪問圖形化界面。
7.4創(chuàng)建admin用戶
#使用命令創(chuàng)建新用戶并設置權限。
#創(chuàng)建用戶admin 密碼admin
sudo rabbitmqctl add_user admin admin
#授予admin用戶默認visual host "/" 下的所有資源的配置、寫、讀的權限
sudo rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
#授予admin用戶管理員角色
sudo rabbitmqctl set_user_tags admin administrator
7.5創(chuàng)建交換機
#創(chuàng)建交換機
交換機名稱(Name):
nvisual-exchange
類型(Type):
direct
7.6測試
7.6.1測試用戶操作日志
點擊 “管理->日志” 可查看到用戶操作過的日志記錄。
7.6.2測試用戶登錄日志
點擊 “管理->日志->登錄日志” 可查看到用戶登錄和退出的日志記錄。
7.6.3測試報表
點擊 “管理->報表"可查看初始的報表數據。(初始部署是沒有數據的,可以拖拽一兩個設備過節(jié)點。)
八、登錄優(yōu)化
8.1登錄頁優(yōu)化
8.1.1注冊入口優(yōu)化
#服務器的/home/nvisual-frontend/dist/config/目錄下為頁面配置文件目錄。
#使用修改diagram.js.sample為diagram.js。
mv diagram.js.sample diagram.js
#按照說明,把代碼前后的注釋刪除掉。
8.1.2登錄視圖優(yōu)化
#用vim打開access.js文件。
vim access.js
#根據注釋設置邊框,自定義名稱,logo等
8.2主頁優(yōu)化
#無監(jiān)“測模”塊的項目,隱藏“監(jiān)測”功能。
九、數據庫備份 9.1創(chuàng)建備份腳本
#第一步 創(chuàng)建目錄結構 /home/pgsql/pgsql_backup
sudo mkdir -p /home/pgsql/pgsql_backup
#第二步 設置變量 用vim或vi打開/etc/profile 在最后另起一行寫入下列。保存退出。
PGPASSWORD='NWEpassword'
#刷新環(huán)境變量
source /etc/profile
#備份機制為,每天凌晨4點備份,保留時常為7天,時間可修改。
#在pgsql目錄下創(chuàng)建備份名為pgsql_backup.sh的腳本文件,創(chuàng)建備份腳本,內容如下 :
#用vim編輯器打開
vi /home/pgsql/pgsql_backup.sh
--------------------------------------------------------------------------
# Backup Nvisual Database At 4am Everyday
# Delete The Backup File Made 7 Days Ago
DATE=`date "+%Y-%m-%d_%H:%M"`
PGPASSWORD='NWEpassword' pg_dump -U postgres -p 5432 nVisual > /home/pgsql/pgsql_backup/nvisual_$DATE.sql
rm -f `find /home/pgsql/pgsql_backup/ -name 'nvisual*.sql' -mtime +7`
--------------------------------------------------------------------------
#手動執(zhí)行腳本已確認腳本是否生效
bash /home/pgsql/pgsql_backup.sh
相關文章
Apache下禁止特定目錄執(zhí)行PHP 提高服務器安全性
之前在博文從PHP安全講DedeCms的安全加固中說過在PHP安全中保護“可寫目錄下的文件不允許被訪問到的重要性,還提出了改名文件夾的方式來保護該目錄。2009-11-11Linux VPS配置Web網站環(huán)境一鍵包(LNMP/LAMP/LNMPA)
如果我們是資深Linux用戶,可能不屑于網上免費Linux Web一鍵包、管理面板的安裝,然后自己編譯或者自由的一套環(huán)境安裝配置環(huán)境。但是,對于大部分用戶而言,麥子個人建議還是選擇較為成熟的WEB一鍵包或者面板安裝環(huán)境2017-02-02Linux VPS安全設置之三:使用DDOS deflate抵御少量DDOS攻擊
這篇文章主要介紹了Linux VPS安全設置之三:使用DDOS deflate抵御少量DDOS攻擊,需要的朋友可以參考下2016-10-10