最近遭遇一起云主机因安全防护措施不到位被安装挖矿程序的情况。
为提高云主机的安全性和考虑搭建一台跳板机来访问云主机以提高安全性。
目前主流且还在维护的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
安装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\
创建密钥
这里会提示存放路径和是否添加密钥密码,这里全部默认,一路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账户自动登录。
评论
发表评论