首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,514 阅读
2
推荐31个docker应用,每一个都很实用
1,313 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
933 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
264
篇与
的结果
2023-02-17
黑客都使用什么编程语言?
信息泄露、源码曝光等事件屡见不鲜,黑客组织好像从未消停过。例如近期发生的一系列与Lapsus$ 黑客组织有关的事件:英伟达员工信息泄露、核心数据被窃取,三星190GB的机密文件数据遭曝光、再到微软Bing和Cortana源码被窃取,黑客组织 Lapsus$ 活跃在各大网站,而其幕后主谋被曝是一名16岁的少年。据外媒报道,英国警方逮捕了与Lapsus$ 黑客组织有关联的7名嫌疑人。他们的年龄在16到21岁,现已经释放,警方表示调查还在继续,但警方并未透露这位主谋是否被抓。与此同时,自称是欧洲最大的黑客协会Chaos计算机俱乐部做了一份调查,其目的是研究黑客们都使用哪些编程语言。在受访者中,有近75%的人表示他们有5年或者5年以上的黑客经验,93%的人5年以上的编程经验。其中他们最常用的编程语言是Bash、Shell、PowerShell,有72.5%的人表示他们在过去一年使用过这些语言,并从事了黑客行动。其次是Python,有70%的受访黑客表示他们在过去一年使用了Python。有32.5%的人使用了C语言、JavaScript,HTML/CSS占比是30%,C++是27.5%,Go是22.5%。除了编程语言,黑客们都使用什么操作系统呢?其中95%的受访黑客表示过去一年使用了Linux,只有40%的人使用Windows,macOS是32%,还有17.5%的人使用BSD。IDE方面,60%的人使用了Vim,50%的受访者使用Visual Studio Code。在回答“这些编程语言是你在攻击过程中的重要组成部分”一题时,只有25%的人表示编程语言对他们从事黑客攻击很重要,32.5%的人表示不重要,42.5%的不认同这样的说法,甚至认为与编程语言的选择无关。最后值得一提的是,Chaos计算机俱乐部表示:这份调查只有43名黑客参与,所以以上结论并不具备一定的代表性,但由于这方面的主题调查比较稀少,所以希望能成为未来调查模型的一部分。参考链接:https://www.theregister.com/2022/03/24/hacker_language_study/
2023年02月17日
54 阅读
0 评论
0 点赞
2023-02-16
太强了,推荐7个牛哄哄 Spring Cloud 实战项目,拿来即用(附源码)
今天,推荐几个GitHub上7个非常火的开源微服务项目。这是我目前见过的最好的微服务项目。功能完整,代码结构清晰。值得推荐。微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和加速。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交付变得更加简单。轻松阅读light reading cloud(轻松阅读)是一款图书阅读类APP,基于 SpringCloud 生态开发的微服务实践项目。涉及 SpringCloud-Gateway、Nacos、Hystrix、OpenFeign、Jwt、ElasticSearch 等技术栈的应用。项目的侧重点主要是基于实际业务场景使用微服务架构落地的思路,图+文的方式介绍每个服务或接口的原理以及为什么使用这种方式实现,想入门微服务的朋友可以试试。核心架构图:客户端:https://github.com/Zealon159/light-reading-cloud-clientapi:https://github.com/Zealon159/light-reading-cloudPiggyMetricsPiggyMetrics ,一个开源项目,适合微服务入门,可以指导开发者使用 Spring Boot、Spring Cloud 和 Docker 搭建微服务架构。该开源项目有一个典型的微服务实现案例 - 个人理财微服务系统。采用Spring Boot/Spring Cloud等技术栈,来实现微服务的开发、构建和治理。页面还很简洁,非常奈斯~PiggyMetrics 被分解为三个核心微服务,它们都是可独立部署的应用程序,围绕特定的业务领域进行组织。这个项目很适合积累微服务的实战经验。项目地址:https://github.com/sqshq/piggymetrics分布式电商项目基于 Spring Cloud 的分布式电商项目,目标打造顶级多模块,高可用,高扩展电商项目。目前这个项目使用分库设计方案,不同的模块依赖不同的数据库实例。技术栈基于 Spring Boot、Spring Cloud、Spring Oauth2 和 Spring Cloud Netflix 等框架,有助于进一步学习Spring Cloud 技术栈。项目截图项目地址:https://github.com/SiGuiyang/spring-cloud-shopCloud-PlatformCloud-Platform是国内首个Spring Cloud微服务化RBAC的管理平台,核心采用Spring Boot 2.4、Spring Cloud 2020.0.0 & Alibaba,前端采用d2-admin中台框架。其具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。模块说明功能截图项目地址:https://gitee.com/geek_qi/cloud-platformSpringBlade 微服务开发平台SpringBlade 是一个由商业级项目升级优化而来的SpringCloud分布式微服务架构、SpringBoot单体式微服务架构并存的综合型项目,采用Java8 API重构了业务代码,完全遵循阿里巴巴编码规范。采用Spring Boot 2.4 、Spring Cloud 2020 、Mybatis 等核心技术,同时提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。部分界面截图项目地址:https://gitee.com/smallc/SpringBlade互联网云快速开发框架互联网云快速开发框架,微服务分布式代码生成的敏捷开发系统架构。项目代码简洁,注释丰富,上手容易,还同时集中分布式、微服务,同时包含许多基础模块和监控、服务模块。基于SpringBoot2.0的后台权限管理系统,界面简洁美观,核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。还被评为 2018 年度最受欢迎中国开源软件项目~项目地址:https://gitee.com/JeeHuangBingGui/jeeSpringCloudOnlineTaxi项目演示项目地址:https://github.com/OiPunk/OnlineTaxi
2023年02月16日
286 阅读
2 评论
0 点赞
2023-02-16
Docker部署 Mysql、redis、Rabbitmq、Vue、Java 项目
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。本文主要讲解如何在Linux环境下使用 Docker 部署前后端分离项目,其中涉及到使用 Docker 安装本人项目相关的一些环境 ,例如mysql、rabbitmq、redis,基于CenterOS7.0。Docker 环境安装1.安装 Docker 客户端# step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新并安装 Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start2.配置镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://sq2b0kv9.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker安装 PortainerPortainer 是一个轻量级 Web 端的 Docker 管理 UI,Portainer 够轻松地管理不同的 Docker 环境(Docker 主机或集群)。Portainer 的部署和使用十分简单。Portainer 可以部署为 Linux 容器或 Windows 本机容器,也支持其他平台。Portainer 允许您管理所有 Docker 资源(容器、映像、卷、网络等)!它与独立的 Docker 引擎和 Docker 集群模式兼容。1.安装# 拉取官方镜像 docker pull portainer/portainer # 运行镜像到容器 docker run -d -p 9000:9000\ --restart=always\ -v /var/run/docker.sock:/var/run/docker.sock\ -m 20M --oom-kill-disable --memory-swap=-1\ --name portainer\ portainer/portainer2.访问页面访问地址:http://localhost:9000,第一次打开需要设置用户名、密码,docker 模式我一般选择 Local 本机模式。通过此工具我们可以更加简便的对镜像和容器进行操作和管理。登录页 面板页 安装 mysql# docker search mysql 可通过此命令查看可用版本 # 拉取mysql镜像,默认会拉取最新版本,我这里加上版本号 docker pull mysql:8.0.0 # 查看镜像是否拉取成功 docker images # 在/home/docker/mysql目录下创建mysql挂载目录 mkdir {data,logs,conf} # 运行容器 docker run -d -p 3306:3306 -v /home/docker/mysql/my.cnf:/etc/mysql/conf.d/mysqld.cnf -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=12345 --name mysql_test mysql:8.0.0说明:--name:容器名-e:配置信息,此处配置 mysql 的 root 用户登陆密码-d:后台运行容器,保证在退出终端后容器继续运行-p:端口映射,此处映射 主机 3306 端口 到 容器的 3306 端口-v:挂载目录此处需要注意不要直接挂载容器中的 mysql 配置文件目录,可能会将容器内的配置文件目录清空。个人建议将容器中的 my.cnf 文件复制出来进行选择性的修改,再挂载 mysql.cnf 文件即可。docker cp :用于容器与主机之间的数据拷贝。# 语法 docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- # 实例 docker cp 96f7f14e99ab:/etc/mysql/conf.d/mysqld.cnf /home/docker/mysql/my.cnf安装 redis因为 redis 默认配置只能够本地连接,不能进行远程访问,使用 Redis 客户端工具连接都会报错,因此需要手动挂载 redis 配置文件。# /home/docker/redis目录下新增挂载文件夹 mkdir {data,conf} # 下载最新版本的Redis镜像 docker pull redis # 新增redis配置文件 cd /home/docker/redis/conf touch redis.conf vim redis.conf添加以下内容#bind 127.0.0.1 protected-mode no appendonly yes requirepass 123456说明:bind 127.0.0.1 ,注释掉这部分,这是限制 redis 只能本地访问protected-mode:默认 yes,开启保护模式,限制为本地访问appendonly:redis 持久化(可选)requirepass:设置访问密码为 123456运行容器docker run --name myredis -p 6379:6379 -v /home/docker/redis/data:/data -v /home/docker/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf说明:--name:容器名称-p :表示将服务器的 6379(冒号前的 6379)端口映射到 docker 的 6379(冒号后的 6379)端口-d :表示以后台服务的形式运行 redis-v :挂载宿主机目录redis redis-server /etc/redis/redis.conf:表示运行 redis 服务器程序,并且指定运行时的配置文件经过以上步骤,便可以通过 redis 客户端工具进行连接,如果连接不上,检查安全组和服务器防火墙端口是否开放安装 rabbitmq# 拉取带图形化管理界面的镜像 docker pull rabbitmq:3.7.7-management # 根据下载的镜像创建和启动容器 docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin df80af9ca0c9说明:-d:后台运行容器;--name:指定容器名;-p:指定服务运行的端口(5672:应用访问端口;15672:控制台 Web 端口号);-v:映射目录或文件;--hostname :主机名(RabbitMQ 的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);-e:指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)Rabbitmq 访问地址:http://localhost:15672 至此,基本的运行环境都安装完毕,下面就是关键的打包步骤了。Vue 前端项目打包将 dist 下的所有文件目录拷贝到 SpringBoot 后端项目的 resources\static 目录下,static 目录需要新建。如果你的项目中用到了 shiro 或者 spring security 等安全框架,需要对静态资源放行。以上配置完成后,先在本地运行,再用 maven 进行打包。将 jar 包上传到服务器后,就要开始制作自己的镜像了,首先在与 jar 包同目录下新建 Dockerfile 文件。# 新建Dockerfile文件 touch Dockerfile # 编写Dockerfile文件 vim Dockerfile加入以下内容# Docker image for springboot file run # VERSION 0.0.1 FROM java:8 # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar ADD demo-01.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]执行 docker build -t [镜像名称] . ,至此镜像文件就制作完成了。docker images查看镜像是否存在。最后一步,创建并启动容器,docker run --name [容器名称] -d -p 80:8080 [镜像名]。
2023年02月16日
64 阅读
0 评论
0 点赞
2023-02-16
CentOS7离线安装Docker和卸载Docker步骤(亲测有效)
一、CentOS7离线安装 Docker 步骤1、docker 安装包下载地址https://download.docker.com/linux/static/stable/x86_64/2、将下载的 docker-18.06.3-ce.tgz 文件上传到 Centos7 服务器上(如上传到 /home/docker 目录下),并执行 tar 命令解压,如下图:tar -zxvf docker-18.06.3-ce.tgz3、将/home/docker 目录下解压出来的所有 docker 文件复制到 /usr/bin/ 目录下cp docker/* /usr/bin/4、将 docker 注册为 service,进入/etc/systemd/system/目录,并创建 docker.service 文件cd /etc/systemd/system/touch docker.service5、编辑 docker.service 文件,将以下内容复制到 docker.service 文件中注:以下内容中 --insecure-registry=192.168.3.10 此处改为你自己服务器 ipvim docker.service[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=192.168.3.10 ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target6、给 docker.service 文件添加执行权限chmod 777 /etc/systemd/system/docker.service7、重新加载配置文件注:每次修改 docker.service 这个文件时都要重新加载下。systemctl daemon-reload8、启动 Docker 服务systemctl start docker9、设置开机启动 Docker 服务systemctl enable docker.service10、验证 docker 是否启动成功查看 Docker 状态,显示 active(running)表示启动成功systemctl status docker查看 Docker 版本docker -v11、配置镜像加速器,默认是到国外拉取镜像速度慢,如下图:编辑 /etc/docker/目录下的 daemon.json 文件,将以下内容复制到 daemon.json 文件中vim /etc/docker/daemon.json{"registry-mirrors": ["http://hub-mirror.c.163.com"]}重启 docker,使其 daemon.json 文件配置生效service docker restart二、CentOS7 离线卸载Docker步骤1、删除服务取消开机自启systemctl disable docker取消注册文件rm -rf /etc/systemd/system/docker.service2、删除命令rm -rf /usr/bin/containerd rm -rf /usr/bin/containerd-shim rm -rf /usr/bin/ctr rm -rf /usr/bin/runc rm -rf /usr/bin/docker*3、删除配置rm -rf /etc/docker/4、删除镜像或容器rm -rf /var/lib/docker
2023年02月16日
75 阅读
0 评论
0 点赞
2023-02-16
Ubuntu18.04 安装 RabbitMQ (正确安装)
安装 erlang由于 rabbitMq 需要 erlang 语言的支持,在安装 rabbitMq 之前需要安装 erlangsudo apt-get install erlang-nox安装 Rabbitmq更新源sudo apt-get update安装sudo apt-get install rabbitmq-server启动、停止、重启、状态 rabbitMq 命令sudo rabbitmq-server start sudo rabbitmq-server stop sudo rabbitmq-server restart sudo rabbitmqctl status添加 admin,并赋予 administrator 权限添加 admin 用户,密码设置为 adminsudo rabbitmqctl add_user admin admin赋予权限sudo rabbitmqctl set_user_tags admin administrator赋予 virtual host 中所有资源的配置、写、读权限以便管理其中的资源sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'RabbitMQ GUID 使用1、官方提供的一个 web 管理工具(rabbitmq_management) 2、安装了 Rabbitmq 后,默认也安装了该管理工具,执行命令即可启动先定位到 rabbitmq 安装目录sudo rabbitmq-plugins enable rabbitmq_management浏览器访问 http://localhost:15672/ 使用刚刚创建的 admin 就可以登录,密码也为 admin
2023年02月16日
50 阅读
0 评论
0 点赞
2023-02-15
Ubuntu下使用ssmtp+mailutils配合163邮件配置自动发送邮件
安装 ssmtp mailutilsapt install -y ssmtp mailutils编辑配置ssmtp文件vim /etc/ssmtp/ssmtp.conf# cat /etc/ssmtp/ssmtp.conf | grep -v ^# root=postmaster #163邮箱smtp mailhub=smtp.163.com:465 hostname=ubuntu UseTLS=Yes #163邮箱 root=xxxxx@163.com #邮箱名 AuthUser=xxxxx #授权码 AuthPass=授权码 #注意这里是授权码,需要去邮件界面手动添加vim /etc/ssmtp/revaliases# cat /etc/ssmtp/revaliases | grep -v ^# root:123456@163.com:smtp.163.com:465 #用户名:发送邮箱地址:邮箱smtp地址:端口测试echo "hello world" | mail -s "title" 666666@qq.com配置定时任务crontab -e0 14 * * 1 cd /root/&&/root/sendMessage.sh
2023年02月15日
51 阅读
0 评论
0 点赞
2023-02-15
CentOS-Shell-监控公网IP-变化邮件报警
Shell监控公网IP-变化邮件报警公司用的动态公网IP,但是有时IP会改变,导致部分业务有问题,我们又不能及时发现,会造成一定的影响。现在使用shell监控公网的IP,如发生变化,立即邮件报警。CentOS邮件报警可以参考这个,默认是mailx安装邮件服务yum -y install mailx配置 mailx 文件进入qq邮箱首页,点击设置>账户,然后找到下图截取的地方(需要设置的,如图)设置完之后呢,就要把生成的授权码作为邮箱的password配置/etc/mail.rc文件【下面的配置qq是假的,别用】#设置发件人名称 set from=1832025651@qq.com #设置邮件服务器 set smtp=smtp.qq.com #填写自己邮箱地址 set smtp-auth-user=1832025651@qq.com #输入邮箱验证码 set smtp-auth-password=pfljngafoqaxecff #smtp的认证方式,默认是login set smtp-auth=login测试发送邮件echo "admin ,文件内容" | mail -s "标题" 你的qq@qq.com编写Shell脚本#!/bin/bash dirfile='/home/ip_change' new_ip=`curl icanhazip.com` #获取新公网ip mail_user=1794@qq.com #接收收邮件邮箱 mail_subject="IP已经发生变化,及时处理" #邮件主题 log="/var/log/tool.log" datetime=`date '+%Y-%m-%d %H:%M:%S'` #判断文件是否存在 if [ ! -f "$dirfile" ]; then touch "$file" echo "1.1.1.1" > $dirfile fi #判断new_ip是否获取 if [ ! -n "$new_ip" ]; then echo "$datetime 公网IP获取失败,检查'curl icanhazip.com' " >> $log exit 1 fi old_ip=`cat $dirfile` #查看旧ip # 判断两个IP是否相等 发邮件 if [ "$new_ip" = "$old_ip" ]; then echo "$datetime IP正常 - true " >> $log else echo $new_ip > $dirfile echo "IP已经发生变化, 新IP: $new_ip 旧IP: $old_ip !!! " | mail -s "$mail_subject" "$mail_user" echo "$datetime IP已经发生变化 - error 新IP :$new_ip 旧IP: $old_ip" >> $log fi然后设置定时任务执行,如下:crontab -e*/10 * * * * /data/shell/getIp/getIp.sh至此,每隔10分钟,自动获取最新公网ip,如果有更新,发送到目标邮箱。
2023年02月15日
70 阅读
0 评论
0 点赞
2023-02-15
Linux 怎么防止 ssh 被暴力破解
SSH 是一种广泛使用的协议,用于安全地访问 Linux 服务器。大多数用户使用默认设置的 SSH 连接来连接到远程服务器。但是,不安全的默认配置也会带来各种安全风险。具有开放 SSH 访问权限的服务器的 root 帐户可能存在风险。尤其是如果您使用的是公共 IP 地址,则破解 root 密码要容易得多。因此,有必要了解 SSH 安全性。这是在 Linux 上保护 SSH 服务器连接的方法。1、禁用root用户登录为此,首先,禁用 root 用户的 SSH 访问并创建一个具有 root 权限的新用户。关闭 root 用户的服务器访问是一种防御策略,可以防止攻击者实现入侵系统的目标。例如,您可以创建一个名为 exampleroot 的用户,如下所示:useradd -m exampleroot passwd exampleroot usermod -aG sudo exampleroot以下是上述命令的简要说明:useradd 创建一个新用户,并且-m参数在您创建的用户的主目录下创建一个文件夹。passwd 命令用于为新用户分配密码。请记住,您分配给用户的密码应该很复杂且难以猜测。usermod -aG sudo 将新创建的用户添加到管理员组。在用户创建过程之后,需要对 sshd_config 文件进行一些更改。您可以在 /etc/ssh/sshd_config 找到此文件。使用任何文本编辑器打开文件并对其进行以下更改:# Authentication: #LoginGraceTime 2m PermitRootLogin no AllowUsers examplerootPermitRootLogin 行将阻止 root 用户使用 SSH 获得远程访问。在 AllowUsers 列表中包含 exampleroot 会向用户授予必要的权限。最后,使用以下命令重启 SSH 服务:sudo systemctl restart sshd2、更改默认端口默认的 SSH 连接端口是 22。当然,所有的攻击者都知道这一点,因此需要更改默认端口号以确保 SSH 安全。尽管攻击者可以通过 Nmap 扫描轻松找到新的端口号,但这里的目标是让攻击者的工作更加困难。要更改端口号,请打开 /etc/ssh/sshd_config 并对文件进行以下更改:Include /etc/ssh/sshd_config.d/*.confPort 22099在这一步之后,使用 sudo systemctl restart ssh 再次重启 SSH 服务。现在您可以使用刚刚定义的端口访问您的服务器。如果您使用的是防火墙,则还必须在此处进行必要的规则更改。在运行 netstat -tlpn 命令时,您可以看到您的 SSH 端口号已更改。3、禁止使用空白密码的用户访问在您的系统上可能有您不小心创建的没有密码的用户。要防止此类用户访问服务器,您可以将 sshd_config 文件中的 PermitEmptyPasswords 行值设置为 no 。PermitEmptyPasswords no4、限制登录/访问尝试默认情况下,您可以根据需要尝试多次输入密码来访问服务器。但是,攻击者可以利用此漏洞对服务器进行暴力破解。通过指定允许的密码尝试次数,您可以在尝试一定次数后自动终止SSH 连接。为此,请更改 sshd_config 文件中的 MaxAuthTries 值。MaxAuthTries 35、使用 SSH 版本 2SSH 的第二个版本发布是因为第一个版本中存在许多漏洞。默认情况下,您可以通过将 Protocol 参数添加到 sshd_config 文件来启用服务器使用第二个版本。这样,您未来的所有连接都将使用第二个版本的SSH。Include /etc/ssh/sshd_config.d/*.conf Protocol 26、关闭TCP端口转发和X11转发攻击者可以尝试通过 SSH 连接的端口转发来访问您的其他系统。为了防止这种情况,您可以在 sshd_config 文件中关闭 AllowTcpForwarding 和 X11Forwarding 功能。X11Forwarding no AllowTcpForwarding no7、使用 SSH 密钥连接连接到服务器的最安全方法之一是使用 SSH 密钥。使用 SSH 密钥时,无需密码即可访问服务器。另外,您可以通过更改 sshd_config 文件中与密码相关的参数来完全关闭对服务器的密码访问。创建 SSH 密钥时,有两个密钥: Public 和 Private 。公钥将上传到您要连接的服务器,而私钥则存储在您将用来建立连接的计算机上。在您的计算机上使用 ssh-keygen 命令创建 SSH 密钥。不要将 密码短语字段 留空并记住您在此处输入的密码。如果将其留空,您将只能使用 SSH 密钥文件访问它。但是,如果您设置了密码,则可以防止拥有密钥文件的攻击者访问它。例如,您可以使用以下命令创建 SSH 密钥:ssh-keygen8、SSH 连接的 IP 限制大多数情况下,防火墙使用自己的标准框架阻止访问,旨在保护服务器。但是,这并不总是足够的,您需要增加这种安全潜力。为此,请打开 /etc/hosts.allow 文件。通过对该文件进行的添加,您可以限制 SSH 权限,允许特定 IP 块,或输入单个 IP 并使用拒绝命令阻止所有剩余的 IP 地址。下面您将看到一些示例设置。完成这些之后,像往常一样重新启动 SSH 服务以保存更改。Linux 服务器安全的重要性 所有服务器管理员都应该考虑数据和数据安全问题。服务器安全是一个非常敏感的问题,因为攻击的主要焦点是 Web 服务器,它们几乎包含有关系统的所有信息。由于大多数服务器都在 Linux 基础架构上运行,因此熟悉 Linux 系统和服务器管理非常重要。SSH 安全只是保护服务器的方法之一。可以通过停止、阻挡或减缓攻击来最大程度地减少您受到的伤害。除了提供 SSH 安全性之外,您还可以实施许多不同的方法来保护您的 Linux 服务器。--- EOF ---
2023年02月15日
88 阅读
2 评论
1 点赞
2023-02-15
从零搭建 Spring Cloud 服务(超级详细)
原作者:Anakki;从零搭建SpringCloud服务(史上最详细) 这里会介绍很多基础知识,直接想开始搭建微服务的可以看第二章,微服务的搭建。直接看第二章不会有什么影响,可以先学会开车再学习车的构造的,看个人习惯来。
2023年02月15日
117 阅读
0 评论
0 点赞
2023-02-15
VUE后台管理中使用富文本编辑器导入word 文档进行编辑
前言最近因业务需求在项目中嵌入了[tinymce]这个编辑器,用于满足平台给用户编辑各类新闻内容什么的业务需求,前后也花了不少时间体验和对比了市面上各类开源编辑器,直接将新闻部门的工作从半天工作量提升只要一个小时就可以搞到,一两分钟就可以搞定一个任务优点文档好,功能强,bug 少,无外部依赖。word 文档粘贴进来要带格式 兼容移动端 word 文档粘贴进来要正常显示并且还要兼容移动端 电脑网页里粘贴进来内容要正常显示并且排版还不能乱 电脑网页拷过来的内容还要兼容到移动端安装npm install tinymce @tinymce/tinymce-vue@3.2.8 -S下载语言包中文语言包下载开始操作文件将依赖包 node_modules 里找到 tinymce文件夹,复制到 public 里,【左图是 tinymce,右图是 public 复制后的目录】一下是注意点:很多的博客的写法是将 node_modules 里面的skins文件夹复制到public/tinymce目录下,经过尝试是不完善的,需要将整个目录倒入进 public 里不完全导入的错误显示,我还以为是语言包的问题,一个个语言包版本去试,这种展示一半英文一半中文的导入 tinymcejspublic/index.html 添加 tinymce.js<div id="app"></div> <script src="/tinymce/tinymce.min.js"></script>引入基本文件// 引入组件 import tinymce from 'tinymce/tinymce' import Editor from '@tinymce/tinymce-vue' // 引入富文本编辑器主题的js和css import 'tinymce/themes/silver/theme.min.js' import 'tinymce/skins/ui/oxide/skin.min.css' // 扩展插件 import 'tinymce/plugins/image' import 'tinymce/plugins/link' import 'tinymce/plugins/code' import 'tinymce/plugins/table' import 'tinymce/plugins/lists' import 'tinymce/plugins/wordcount'注册组件components: { Editor },使用组件<div class="activeConfig-container"> <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit" /> </div>tinymce 初始化配置data() { return { // tinymce的绑定值 tinymceHtml: '', // tinymce的初始化配置 editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword', //点击富文本图片上传的时候将图片转成base64再通过success插入 images_upload_handler: (blobInfo, success) => { const img = 'data:image/jpeg;base64,' + blobInfo.base64() success(img) }, importword_filter: function(result, insert, message) { // console.log(result) // console.log(insert) // console.log(message) // 自定义操作部分 insert(result) // 回插函数 }, // statusbar: false // 是否隐藏底部的状态栏 // menubar: false, // 是否隐藏最上方的菜单 branding: false // 是否禁用“Powered by TinyMCE” } } },整体代码<template> <div class="activeConfig"> <div class="activeConfig-container"> <Editor id="tinymce" v-model="tinymceHtml" :init="editorInit" /> </div> </div> </template> <script> // 引入组件 import tinymce from 'tinymce/tinymce' import Editor from '@tinymce/tinymce-vue' // 引入富文本编辑器主题的js和css import 'tinymce/themes/silver/theme.min.js' import 'tinymce/skins/ui/oxide/skin.min.css' // 扩展插件 import 'tinymce/plugins/image' import 'tinymce/plugins/link' import 'tinymce/plugins/code' import 'tinymce/plugins/table' import 'tinymce/plugins/lists' import 'tinymce/plugins/wordcount' // import { uploadImgage } from '@/api/activeConfig' export default { name: 'ActiveConfig', components: { Editor }, data() { return { // tinymce的绑定值 tinymceHtml: '', // tinymce的初始化配置 editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword', // 此处为图片上传处理函数 // images_upload_handler: (blobInfo, success, failure) => { // this.handleImgUpload(blobInfo, success, failure) // }, images_upload_handler: (blobInfo, success) => { const img = 'data:image/jpeg;base64,' + blobInfo.base64() success(img) }, importword_filter: function(result, insert, message) { // console.log(result) // console.log(insert) // console.log(message) // 自定义操作部分 insert(result) // 回插函数 }, // statusbar: false // 是否隐藏底部的状态栏 // menubar: false, // 是否隐藏最上方的菜单 branding: false // 是否禁用“Powered by TinyMCE” } } }, mounted() { tinymce.init({}) }, methods: { // 图片上传 handleImgUpload(blobInfo, success, failure) { // this.baseUrl = process.env.VUE_APP_BASE_URL // const imgBase64 = 'data:image/jpeg;base64,' + blobInfo.base64() // const data = { img: [imgBase64] } // uploadImgage(data).then(res => { // // 传入success回调里的数据就是富文本编辑器里插入图片的src的值 // success(`${this.baseUrl}/${res.data[0]}`) // }).catch(() => { failure('error') }) } } } </script> <style lang="scss" scoped> .activeConfig { &-container { margin: 30px; } } </style>特殊需求需要找个能实现 word 文档上传到富文本编辑器,减轻编辑机构的负担,解决机构需要每次打开文档复制再编辑的繁琐工作,实现直接导入编辑tinymce 插件一个下载插件,一个是注意点,图片在富文本是 base64 的方式导入插件下载解压后将整个文件复制到 public 的插件目录再往 tinymce 配置添加即可editorInit.plugins 和 editorInit.toolbar 添加 importword 即可editorInit: { selector: '#tinymce', language_url: '/tinymce/langs/zh_CN.js', language: 'zh_CN', skin_url: '/tinymce/skins/ui/oxide', height: 400, plugins: 'link lists image code table wordcount importword', toolbar: 'bold italic underline strikethrough | fontsizeselect | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | undo redo | link unlink image code | removeformat | importword' }图片解决方案如果碰到图片的问题,处理图片有两种方式: 1、一种在提交内容的时候统一处理图片,稿件文件里图片只要提交一次。 2、一种是监听图片上传,每次更新图片都上传图片。图片上传函数有images_upload_handler第二种const files = [] const base64ImgSum = [] for (let i = 0; i < imgs.length; i++) { //去除不用的属性 imgs[i].removeAttribute('data-mce-src') imgs[i].removeAttribute('alt') //拿到所有的图片列表 imgs[i].src.includes('base') && base64ImgSum.push(imgs[i]) } //将base64图片转换file文件 dataURLToFile(dataURL, filename) { const arr = dataURL.split(',') const mime = arr[0].match(/:(.*?);/)[1] // mime类型 image/png const bstr = atob(arr[1]) // base64 解码 let n = bstr.length const u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], filename, { type: mime }) // return new Blob([a8arr], {type: mime}); }, //将处理file文件当参处理即可 fd.append('file', this.dataURLToFile(base64ImgSum[i].src, `${(new Date()).getTime()}.jpg`))
2023年02月15日
106 阅读
0 评论
0 点赞
1
...
23
24
25
...
27