Ubuntu 22.04 LTS 是迄今为止最好的 Ubuntu 版本之一。是什么让它如此安全? 其安全更新的延长支持、新的硬件支持和其他林林总总的改进,使它在安全方面远远超过了之前的所有版本。 但它是如
Ubuntu 22.04 LTS 是迄今为止最好的 Ubuntu 版本之一。是什么让它如此安全? 其安全更新的延长支持、新的硬件支持和其他林林总总的改进,使它在安全方面远远超过了之前的所有版本。 但它是如何做到这一点的呢?还有,是什么让这个版本与以前的版本不同的呢? 嗯,有几个原因,Canonical 在一篇新的博客文章中为我们重点指出了这些。在这里,让我总结一下,以帮助你了解更多。 是什么让 Ubuntu 22.04 LTS 变得安全?在这个版本中,Ubuntu 团队似乎投入了大量的工作来确保其长期的安全性和可靠性。尽管多年来他们以难以想象的方式做到了这一点,但我将强调其中的几件事: 改进的硬件安全措施支持 更新了安全包私有家目录 OpenSSL 3 GCC 11 nftables 作为默认的防火墙后端 Linux 内核改进1、改进的硬件安全措施支持 随着英特尔、AMD 和 ARM 的 CPU/SoC 开始推出更多的安全措施,拥有足够的软件来让这些功能发挥作用就变得越来越重要。 截至目前,Ubuntu 22.04 支持三种主要的硬件安全措施。 英特尔的 “软件保护扩展(Software Guard eXtensions)”(SGX)提供了一个安全独立的区域来进行敏感计算。例如,理想情况下,密码处理将在这里进行,因为它确保没有其他应用程序可以访问这些数据。 还有 AMD 的“安全加密虚拟化(Secure Encrypted Virtualization)”(SEV)。这项技术旨在防止主机操作系统干扰正在运行的虚拟机。 尽管这与桌面用户的相关性不如其他技术,但要知道,很多数据中心的基础设施都依赖虚拟机来实现应用的容器化。总的来说,此类针对硬件的安全措施应该会加强对桌面和服务器用户的保护。 2、Linux 内核安全的改进 随着 Ubuntu 的每一次发布,Linux 内核都会得到升级,提供了许多有用的功能和支持。 但是,这一次,Canonical 推出了针对不同的平台的优化内核版本。对于 OEM 认证的桌面设备,它提供了 Linux 内核 5.17。 而对于所有的桌面和服务器用户,可以使用 Linux 内核 5.15 LTS。 不仅仅限于这个概念,在 博文 中提到的一些基本内核安全增强措施包括: 支持 核心调度,它允许进程控制哪些线程可以在 SMT 同级之间调度,以便让它们保护敏感信息,而不泄露给系统中其他不受信任的进程。 内核堆栈随机化提供了一种加固措施,以挫败希望在内核内进行内存破坏攻击的攻击者。 BPF 子系统也有一些安全方面的增强,包括默认情况下限制为只有特权进程可以使用,以及对签名的 BPF 程序的初步支持。 新的 Landlock Linux 安全模块的加入为应用程序沙箱提供了另一种机制,可以通过 AppArmor 或 SELinux 与更传统的方式结合使用。 总之,所有这些改进使 Ubuntu 22.04 LTS 成为开发者、用户和系统管理员的更安全的选择。 3、更新的安全软件包 让我们从技术性的安全概念退后一步,回到每个 Ubuntu 用户都应该已经熟悉的概念:软件包。每一个新的 Ubuntu 版本,软件库中的大多数软件包都会更新,以带来更好的安全性和新功能。 尽管对于 Ubuntu 22.04 来说,这并不完全是新的东西,但这确实包括了很多安全方面的更新。这方面的例子包括 openSSL 3 和 GCC 11。 4、OpenSSL 3 OpenSSL 是所有安全通信的支柱。 考虑到包括 MD2 和 DES 在内的许多传统算法已经被废弃并默认禁用,OpenSSL 3 作为一个重大的升级特别值得关注。 因此,除非用户特别想使用不太安全的算法,否则你将在默认情况下获得最好的安全性。 5、GCC 11 另一方面,GCC 是许多开发者用来将他们的代码变成可以在你的计算机上运行的程序的编译器。 它带来了许多改进,但有一项特别显著地提高了安全性。静态分析得到了极大的加强,使开发人员能够更快地发现软件的漏洞,在第一步就防止有漏洞的代码被发布。 这可能不会直接影响到用户,许多开发人员使用 Ubuntu 来开发他们的应用程序。因此,你下载的很多程序,即使在非 Ubuntu 系统上,也应该比以前更安全。 6、私有家目录 作为一个传统上以桌面为重点的发行版,Ubuntu 经常选择方便而不是安全。然而,随着他们越来越努力地推动云计算的采用,这种情况必须改变。 以前,任何有权限进入电脑的人都可以打开并查看任何用户的家目录。然而,你可以想象,这给非桌面用户带来了很多问题。因此,需要改变为私有家目录。 对于多用户系统来说,这可能稍显不方便,但这可以相对容易地改变。而且,对于那些不太熟悉技术的人来说,他们不需要做任何事情就可以得到更好的安全保障。 7、nftables 作为默认防火墙后端 25 年来,防火墙一直是将你的计算机与更广泛的互联网隔离开来的一个关键部分。这些年来,Linux 发行版通常使用两种不同的防火墙解决方案:iptables 和 xtables。 然而,近些年来,一种不同的解决方案进入了人们的视野:nftables。它提供了显著的性能和灵活性的改进,使网络管理员能够更好地保护你的设备。 一、部署环境
二、安装系统2.1安装1.安装方式,选第一条。 2.选择语言,建议英语,报错时比较好百度,中文版报错不容易搜索。 3.选择键盘标准,默认即可。 4.选择安装版本为标准server,键盘方向键控制光标,空格键选中。 5. 设置网卡,联网环境下稍稍等待一下,即可自动获取到IP地址。 6.配置代理,没特殊需求不用理,直接下一步。 7.设置镜像源,后面可以设置,这里直接下一步。 8.选择装系统的硬盘,多块硬盘时需要进行选择。 9.硬盘分区,默认即可。 10.设置名字、主机名、用户名,设置用户名密码。 11.升级Ubuntu pro,不升级,选择跳过。(默认选项即是跳过。Skip) 12.开启ssh服务,这个建议开启,否则还需进系统修改,比较麻烦。空格选中。 13.选中服务快照,这里不做选择,直接下一步。 14.系统自动执行安装,等待进度结束,点击重启即可。 15.点击重启,等待服务器自动重启。 16.输入先前自己设置的用户名与密码。密码为不可见状态,输入完直接Enter。 ##若半天不进入到用户登录页,就手动重启一遍或多变。## 17.进入系统 2.2系统设置进入系统后可使用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编辑器打开、创建一个名为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与企业内部自己的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 #出现版本号为部署成功。有问题请自行百度。 四、部署Nginx4.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 #查看服务状态 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+pgrouting5.1部署postgresql5.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 #查看服务状态 sudo systemctl status postgresql.service 5.1.2设置优化#进入数据库并设置密码 #切换至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同步基础数据创建一个数据库 #恢复备份好的数据文件。 六、nVisual项目部署6.1部署nVisual前端#在/home/目录下创建 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下,创建 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即可,**有域名的用户,手动填写域名。 #点击生成用户识别码,并把生成码复制出来,发给实施或客服进行授权。 #授权生成后,会有两个文件,一个是TXT文件,里面是后端授权码,点击去输入授权码。并把授权码输入进文本框,点击注册。 #授权成功 #授权那成功后,重新打开一页浏览器页面,输入服务ip或域名进行访问nVisual。就可进入到系统。 #授权文件里的另一个“header.js”文件,为前端授权文件,复制到/home/nvisual-frontend/dist/libs/ht/core/about/目录下。 #刷新浏览器页面生效,拖拽一两个节点进行测试,拖拽出的节点或设备可编辑表示授权成功。如果不生效,请清楚浏览器缓存重试。 七、部署rabbitmq7.1部署#进入以上传的rabbitmq文件目录 cd nVisual/rabbitmq/ #安装所有.deb包。 sudo dpkg -i *.deb #等待安装完成 #启动 sudo systemctl start rabbitmq-server #重启 sudo systemctl restart rabbitmq-server #状态 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 ##报错显示只能本地访问,简易使用下方“解决方法” #修改配置文件 #所以需要手动创建以下配置文件。 vim /etc/rabbitmq/rabbitmq.conf #文件内容为 loopback_users = none #保存退出 #配置文件创建完成后重启RabbitMQ即可在本地进行登录。 sudo systemctl restart rabbitmq-server #(RabbitMQ重启有点慢,多等几秒即可) #重启结束成功后,再次访问图形化界面。 7.4创建admin用户#使用命令创建新用户并设置权限。 #创建用户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创建交换机#创建交换机 交换机名称(Name): nvisual-exchange 类型(Type): direct 7.6测试7.6.1测试用户操作日志点击 “管理->日志” 可查看到用户操作过的日志记录。 7.6.2测试用户登录日志点击 “管理->日志->登录日志” 可查看到用户登录和退出的日志记录。 7.6.3测试报表点击 “管理->报表"可查看初始的报表数据。(初始部署是没有数据的,可以拖拽一两个设备过节点。) 八、登录优化8.1登录页优化8.1.1注册入口优化#服务器的/home/nvisual-frontend/dist/config/目录下为页面配置文件目录。 #使用修改diagram.js.sample为diagram.js。 mv diagram.js.sample diagram.js #按照说明,把代码前后的注释删除掉。 8.1.2登录视图优化#用vim打开access.js文件。 vim access.js #根据注释设置边框,自定义名称,logo等 8.2主页优化#无监“测模”块的项目,隐藏“监测”功能。 九、数据库备份 9.1创建备份脚本 #第一步 创建目录结构 /home/pgsql/pgsql_backup sudo mkdir -p /home/pgsql/pgsql_backup #第二步 设置变量 用vim或vi打开/etc/profile 在最后另起一行写入下列。保存退出。 PGPASSWORD='NWEpassword' #刷新环境变量 source /etc/profile #备份机制为,每天凌晨4点备份,保留时常为7天,时间可修改。 #在pgsql目录下创建备份名为pgsql_backup.sh的脚本文件,创建备份脚本,内容如下 : #用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` -------------------------------------------------------------------------- #手动执行脚本已确认脚本是否生效 bash /home/pgsql/pgsql_backup.sh |
2024-04-02
2024-02-26
2023-01-24
2024-09-30
2022-08-15