跳至主要内容

安装部署JumpServer

 最近遭遇一起云主机因安全防护措施不到位被安装挖矿程序的情况。

为提高云主机的安全性和考虑搭建一台跳板机来访问云主机以提高安全性。

目前主流且还在维护的JumpServer是比较好的解决方案,搭建一台JumpServer做测试。


这里使用ubuntu 20.04 lts作为OS。

安装操作系统后先修改软件仓库为国内163源。

sudo cp /etc/apt/sources.list    /etc/apt/sources.list.bak

sudo nano /etc/apt/sources.list

注释掉原来的内容

添加网易源

#网易源

deb http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ focal-backports main restricted universe multiverse


执行更新
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

如有更新kernel,需要重启生效。

修改时区为+8
sudo timedatectl set-timezone Asia/Shanghai

因为使用pve安装系统,安装qemu-guest-agent可以在pve里查看更多的vm信息
sudo apt-get install qemu-guest-agent
这个需要关闭vm,修改设置后再开机生效,重启无法生效。

开启防火墙
查看防火墙
sudo ufw status
默认是禁用的

允许所有的流出
sudo ufw default allow outgoing

禁用所有的流入
sudo ufw default deny incoming

允许ssh、80、443和其他常用端口,因为会安装zabbix agent这里会允许10050和10051端口
sudo ufw allow 22
sudo ufw allow 443
sudo ufw allow 10050
sudo ufw allow 10051

启用防火墙
sudo ufw enable

安装fail2ban以提高安全性
sudo apt install fail2ban -y

创建本地配置文件
sudo cp /etc/fail2ban/fail2ban.{conf,local}
sudo cp /etc/fail2ban/jail.{conf,local}
根据需要修改fail2ban.local里的bantime和max retry次数

考虑到可能会下载第三方软件仓库的软件,安装apt-fast多线程工具以提高下载速度
sudo add-apt-repository ppa:apt-fast/stable
注意这里需要点击回车确认才会添加


安装apt-fast
sudo apt-get install apt-fast -y
先添加apt-fast的安装源 然后安装。在出现的GUI画面依此选择替换apt-get, 设置最大16线程,其他不用改,选默认NO就好。





JumpServer默认就支持中文显示,为提高兼容性这里安装中文locales。
安装中文语言包
sudo apt-get -y install language-pack-zh*

添加zh_cn.utf-8编码
sudo dpkg-reconfigure locales
这里勾选zh_CN.UTF-8 UTF-8

默认显示语言维持en_US.UTF8不变

准备工作已经完成,可以开始安装JumpServer了。
到这里,不熟悉的可以做个备份。

为方便安装,这里切换到root账号,ubuntu系统在使用root账号之前要先配置root账号密码
sudo passwd root
配置完成后切换到root
su

切换到opt目录
cd /opt
下载jumpserver安装文件
wget https://github.com/jumpserver/installer/releases/download/v2.19.2/jumpserver-installer-v2.19.2.tar.gz
解压安装文件
tar -xf jumpserver-installer-v2.19.2.tar.gz
切换到安装目录
cd jumpserver-installer-v2.19.2

安装之前可以修改config-example.txt文件修改配置信息

因为使用内置数据库,配置信息只修改compose网络信息不合自己的网络环境冲突
DOCKER_SUBNET=x.x.x.x/24

开始安装Jump Server
./jmsctl.sh install
这里会询问是否开启ipv6支持,默认是n

这里会开始下载docker image,完成后会询问配置路径和是否使用外置数据库,一路回车即可。

安装完成后,可以修改和查看配置
/opt/jumpserver/config/config.txt

运行jump server
./jmsctl.sh start

运行成功后可以查看jumpserver运行状态
./jmsctl.sh status

然后输入http://ip地址就可以登录了
默认账户和密码都是admin
第一时间修改

为提高安全性,配置反向代理,这里因为只有一台机器做测试,在本机上安装nginx服务然后做反向代理,实际环境可以自己参考。
sudo apt-fast install nginx -y

完成后修改默认站点配置,以避免80端口冲突。
删除或注释掉/etc/nginx/sites-available/default

新增jumpserver的反向代理
/etc/nginx/conf.d/jms.conf
填写

server {
    listen 443 ssl;
    server_name          xxx.com; 
    ssl_certificate      /etc/nginx/sslkeys/server.crt;  # 证书路径
    ssl_certificate_key  /etc/nginx/sslkeys/server.key;  # 私钥路径
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_protocols TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=63072000" always;

    client_max_body_size 4096m;  # 录像及文件上传大小限制
    location / {
        # 这里的 ip 是后端 JumpServer nginx 的 ip
        proxy_pass http://192.168.1.x;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

完成后检查一下nginx配置语法
nginx -t
没问题后重启nginx服务
service nginx restart
就可以使用https://ip地址访问了。


接下来在Jump Server上配置用于登录的Linux主机

我们先在被登录的主机上新增jumpserver特权用户
登录后新建用户
sudo useradd -r -m -s /bin/bash jp01
修改jp01密码
sudo passwd jp01
切换到jp01用户
su jp01
创建ssh登录所用公钥和私钥
切换到home目录
cd\
创建密钥
ssh-keygen -t rsa -C "jp01 for JumpServer [email protected]"
这里会提示存放路径和是否添加密钥密码,这里全部默认,一路enter完成创建。
查看公钥和私钥
ll ./.ssh/
这里会看到id_rsa和id_rsa.pub两个文件
id_rsa是私钥,id_rsa.pub是公钥
安装公钥
cat id_rsa.pub >> authorized_keys
修改文件权限
chmod 600 authorized_keys
修改ssh配置文件/etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
重启sshd服务
sudo service sshd restart
这里密钥登录就配置好了

回到JumpServer管理页面
首先在资产管理中点击系统用户,然后切换到特权用户,点击创建按钮。
输入名称,用户名这里填刚刚创建的特权用户名jp01。
认证这里点击SSH密钥的选择文件,将id_rsa文件上传。
点击提交完成特却用户创建。

然后到资产列表里,在Default文件夹下右键新建一个文件夹取名Linux
然后点击创建按钮
输入主机名,IP或者域名,选择系统平台为Linux,协议组用ssh 22,特权用户选择刚刚戏赠的jp01用户,然后节点选择/Default/Linux,然后点击提交。

接下来将改主机授权给JumpServer特定用户
到权限管理里点击资产授权,在Linux文件夹下选中刚刚新增的主机,点击创建按钮,输入名称,选择用户或用户组,在节点中选中/Default/Linux,系统用户选择jp01,然后点击提交。

完成后,被赋予权限的用户,在会话管理中的Web终端就能看到这台机器了,点击这台机器就可以用jp01账户自动登录。

评论

此博客中的热门博文

PVE安装Windows 11虚拟机 step by step

Win 11已经发布有两周多了,因为引进了tpm机制,只支持较新的设备安装,对于虚拟机的支持不高。 目前各个虚拟化平台针对win 11已经有对应的方案,今天来介绍一下PVE 7.0安装win 11虚拟机。 提前下载win11和virtio win 11的镜像。 win 11镜像下载这里就不说了,很多途径。 virtio的镜像在这里下载https://github.com/virtio-win/virtio-win-pkg-scripts,下载最新的virtio win iso。 新建和配置虚拟机 点击新建虚拟机 给虚拟机起名,然后下一步。 选择加载win 11镜像文件,系统类型选择windows。 系统配置这里: bios选择OVMF(UEFI);机器选择q35;勾选TPM,并选择TPM版本为v2.0;然后存储的位置选择同一个存储。 硬盘设备选择VirtIO,磁盘大小选择64G,32G其实也可以,但是微软要求最低64G。 设置CPU和内存,微软要求最低2核8G,这里我们给4核8G,因为是单节点,所以CPU类型勾选host。 配置网卡信息后继续。 这里不要勾选自动创建后启动,确认配置信息后点击完成。 到新建的虚拟机这里,新建光驱。 选择下载的驱动镜像,点击创建。 完成后点击启动。 启动后进入windows安装界面,这里照一般操作进行。 到安装类型这里选择 自定义安装。 到选择安装位置这里会无法显示硬盘信息,因为缺少驱动,点击加载驱动程序。 然后点击浏览。 选择驱动镜像下的amd64下的w10文件夹,点击确定。 加载驱动后磁盘控制器能够显示,点击下一页。 选中显示的磁盘后点击下一步进行安装。 文件复制完后会重启几次。 安装完成后会启动第一次配置界面。 输入账户信息后进行系统配置。 配置完成后进入桌面。 在设备管理器中有一些设备未能正确识别。 进入驱动镜像,运行virtio-win-ge-x64安装文件安装驱动。 安装完成后,所有设备都能正确识别。 至此win11虚拟机安装完成。

搭建cups服务,并提供云打印服务。

Google的云打印服务已经在2020年底结束,所以不得不寻找新的解决方案。 之前家里使用一台windows虚拟机内置的打印服务,使用windows单单作为一台打印服务器实在是太过浪费。 因为家里有ubuntu的虚拟机跑plex服务,计划在ubuntu上运行打印服务。 linux上最为成熟的打印服务就是cups了,然后在软路由上搭建open vpn,即可实现任何地方打印文档。 一.cups服务安装。     首先安装cups服务     sudo apt install cups     修改配置文件     sudo  cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.bak     sudo nano  /etc/cups/cupsd.conf     新增监听地址     Listen 192.168.1.x:631      BrowseAllow all      BrowseAddress All      <Location />            Order allow,deny            Allow all      </Location>      <Location /admin>          Order allow,deny          Allow all     </Location>      <Location /admin/conf>          Order allow,deny          Allow all     </Location>     然后用浏览器访问https://192.168.1.x:631/admin     添加打印机     add printer     选择local printer里本地的打印机 然后点击下一步     勾选share this printer然后点击下一步     在model里寻找打印机型号,如果没有需要安装打印机     我的打印机是epson入门型号l310,需要手动安装。     去epson的网站https://download.ebz.epson.net/dsc/search/01/search/searchModule寻

利用Nextcloud搭建私有云盘

最近有同学的手机丢了,幸运的是手机最后有找回来。 大部分人手机里有非常多的照片,手机丢了可以买新的,照片丢了就再也找不回来了。因此数据的备份显得非常重要。 因为家里有NAS做raid 1,并且定期做异地备份,数据的安全性还是蛮高的。就有搭建私有云盘的想法。 上网搜索了一下,发现nextcloud是用得比较多的。此次就选用nextcloud来搭建我们的私有云盘。 首先在家里的服务器上新建一台vm,这里选用debian 11,装系统的过程就不讲了。 安装完成后,利用nfs挂载nas的存储 新建挂载目录 mkdir /mnt/nextcloud 编辑/etc/fstab,加入如下一行 192.168.x.x:/volume1/NextCloud /mnt/nextcloud nfs defaults 0 0 这里ip地址和nas存储路径用自己的配置替代 然后sudo mount -a测试一下 接下来开始安装依赖件 安装mariadb sudo apt update sudo apt -y install mariadb-server mariadb-client 配置数据库 sudo mysql_secure_installation  sudo mysql -u root -p 输入配置的密码以登录 配置nextcloud的数据库和用户 CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY '密码'; CREATE DATABASE nextcloud; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost'; FLUSH PRIVILEGES; QUIT 安装php和apache2 sudo apt -y install php php-{cli,xml,zip,curl,gd,cgi,mysql,mbstring} sudo apt -y install apache2 libapache2-mod-php 修改php配置 sudo vim /etc/php/*/apache2/php.ini date.timezone = Asia/Shanghai memory_lim