搭建一个跳板服务器的全过程
目录
- **一、跳板机的作用**
- **二、搭建服务器跳板(Jump Server)**
- **1. 服务器架构**
- **2. 配置跳板机(Jump Server)**
- **(1)安装 OpenSSH 服务器**
- **(2)创建跳板机用户**
- **3. 配置 SSH 免密登录**
- **(1)在客户端生成 SSH Key**
- **(2)从跳板机连接目标服务器**
- **4. 使用 SSH Proxy 作为跳板**
- **(1)直接通过 SSH 跳板访问目标服务器**
- **5. 记录 SSH 登录日志**
- **(1)启用 SSH 登录日志**
- **(2)记录用户命令**
- **6. 限制跳板机访问权限**
- **(1)只允许指定用户使用跳板**
- **(2)使用防火墙限制访问**
- **(3)启用 Fail2Ban 保护 SSH**
- **七、总结**
一、跳板机的作用
- 安全访问:外部用户不能直接访问内部服务器,必须通过跳板机进行连接。
- 权限控制:限制谁可以访问哪些服务器,并进行日志审计。
- 防止直接暴露:核心服务器不会直接暴露在公网,降低攻击面。
二、搭建服务器跳板(Jump Server)
本方案基于 Linux(Ubuntu 20.04 / CentOS 7) 搭建 SSH 跳板机,具体步骤如下:
1. 服务器架构
假设环境如下:
- 跳板机(Jump Server):公网 IP
192.168.1.100
- 目标服务器(Target Server):内网 IP
10.0.0.10
- 客户端(User):IP
203.0.113.50
访问流程:
- 用户先连接跳板机(公网 IP)
- 再从跳板机连接到内网服务器(目标服务器)
2. 配置跳板机(Jump Server)
(1)安装 OpenSSH 服务器
在跳板机(Jump Server)上,确保 OpenSSH 服务器已安装:
sudo apt update && sudo apt install -y openssh-server
检查 SSH 服务状态:
sudo systemctl status ssh
(2)创建跳板机用户
在跳板机上创建专用用户,并设置强密码:
sudo adduser jumpuser
sudo passwd jumpuser
限制 root 登录:
编辑 /etc/ssh/sshd_config
:
PermitRootLogin no
AllowUsers jumpuser
然后重启 SSH 服务:
sudo systemctl restart ssh
3. 配置 SSH 免密登录
为便捷管理,我们使用 SSH Key 认证来减少密码输入,并提高安全性。
(1)在客户端生成 SSH Key
在 客户端(User) 机器上,生成 SSH 密钥:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jump_key
然后,将公钥拷贝到跳板机:
ssh-copy-id -i ~/.ssh/jump_key.pub jumpuser@192.168.1.100
测试是否可以无密码 SSH 登录:
ssh -i ~/.ssh/jump_key jumpuser@192.168.1.100
如果成功,则表明 SSH Key 认证已正确配置。
(2)从跳板机连接目标服务器
在 跳板机(Jump Server) 上,配置免密 SSH 登录 目标服务器(10.0.0.10):
ssh-keygen -t rsa -b 4096 -f ~/.ssh/jump_key
ssh-copy-id -i ~/.ssh/jump_key.pub user@10.0.0.10
然后测试:
ssh -i ~/.ssh/jump_key user@10.0.0.10
4. 使用 SSH Proxy 作为跳板
(1)直接通过 SSH 跳板访问目标服务器
在 客户端 上,使用 ProxyJump
直接连接目标服务器:
ssh -J jumpuser@192.168.1.100 user@10.0.0.10
如果不支持 -J
,可以使用 ProxyCommand
:
ssh -o ProxyCommand="ssh -W %h:%p jumpuser@192.168.1.100" user@10.0.0.10
可以将其添加到 ~/.ssh/config
方便管理:
Host target_server
HostName 10.0.0.10
User user
ProxyJump jumpuser@192.168.1.100
IdentityFile ~/.ssh/jump_key
然后直接使用:
ssh target_server
5. 记录 SSH 登录日志
为了安全审计,我们记录所有用户的 SSH 访问日志。
(1)启用 SSH 登录日志
修改 /etc/rsyslog.conf
,确保启用 authpriv
日志:
authpriv.* /var/log/secure
然后重启 rsyslog:
sudo systemctl restart rsyslog
查看 SSH 登录日志:
sudo tail -f /var/log/auth.log # Ubuntu
sudo tail -f /var/log/secure # CentOS
(2)记录用户命令
在 /etc/bash.bashrc
或 /etc/profile
中添加:
export HISTFILE=/var/log/jumpserver_history.log
export PROMPT_COMMAND='history -a'
这样,所有 SSH 用户的命令都会记录到 /var/log/jumpserver_history.log
。
6. 限制跳板机访问权限
为了增强安全性,我们可以限制跳板机的 SSH 访问行为。
(1)只允许指定用户使用跳板
编辑 /etc/ssh/sshd_config
:
AllowUsers jumpuser
然后重启 SSH:
sudo systemctl restart ssh
(2)使用防火墙限制访问
限制 SSH 只能从特定 IP 登录:
sudo ufw allow from 203.0.113.50 to any port 22
如果使用 iptables
:
sudo iptables -A INPUT -p tcp --dport 22 -s 203.0.113.50 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
(3)启用 Fail2Ban 保护 SSH
sudo apt install fail2ban
sudo systemctl enable fail2ban
编辑 /etc/fail2ban/jail.local
:
[sshd]
enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
bantime = 600
findtime = 300
maxretry = 5
然后重启:
sudo systemctl restart fail2ban
查看封禁 IP:
sudo fail2ban-client status sshd
七、总结
本文介绍了完整的 服务器跳板(Jump Server) 方案,包括:
- 搭建 SSH 跳板机
- 配置 SSH Key 免密登录
- 使用 ProxyJump 访问目标服务器
- 记录 SSH 登录日志
- 限制访问权限,增强安全性