Linux跳板机(Bastion Host)是网络安全架构中的关键中间层,用于集中管理对内网服务器的访问,避免直接暴露内网资源,创建跳板机需结合系统配置、安全加固和访问控制,以下是详细步骤:
系统选型与基础安装
推荐使用CentOS 7+或Ubuntu 20.04等LTS版本,安装时选择“最小化安装”,减少不必要的软件包,确保系统已更新至最新版本(yum update -y
或apt update && apt upgrade -y
),关闭SELinux(setenforce 0
并修改/etc/selinux/config
为disabled)或正确配置策略,避免权限冲突。
网络配置
跳板机需配置双网卡(或虚拟IP),分别连接外网(安全区)和内网(非安全区),假设外网IP为168.1.100
(用于运维人员访问),内网IP为0.0.1
(用于访问内网服务器),网卡配置如下:
网卡 | IP地址 | 子网掩码 | 网关 | 用途 |
---|---|---|---|---|
ens33 | 168.1.100 | 255.255.0 | 168.1.1 | 外网访问入口 |
ens34 | 0.0.1 | 255.255.0 | 0.0.254 | 内网服务器通信 |
配置文件示例(CentOS):
- 外网网卡
/etc/sysconfig/network-scripts/ifcfg-ens33
:BOOTPROTO=static
,IPADDR=192.168.1.100
,NETMASK=255.255.255.0
,GATEWAY=192.168.1.1
- 内网网卡
/etc/sysconfig/network-scripts/ifcfg-ens34
:BOOTPROTO=static
,IPADDR=10.0.0.1
,NETMASK=255.255.255.0
用户与SSH安全配置
- 创建专用用户:避免使用root直接登录,创建低权限用户
jumpuser
:useradd -m -s /bin/bash jumpuser passwd jumpuser # 设置强密码
- SSH密钥认证:禁用密码登录,仅允许密钥认证,提升安全性:
- 在运维本地机器生成密钥对:
ssh-keygen -t rsa -b 4096
- 将公钥传输至跳板机:
ssh-copy-id -i ~/.ssh/id_rsa.pub jumpuser@192.168.1.100
- 在运维本地机器生成密钥对:
- 修改SSH配置:编辑
/etc/ssh/sshd_config
,关键参数如下:PermitRootLogin no # 禁止root登录 PasswordAuthentication no # 禁用密码认证 Port 2222 # 修改默认SSH端口(避免默认22端口) AllowUsers jumpuser # 仅允许jumpuser登录
重启SSH服务:
systemctl restart sshd
安全加固措施
- 防火墙规则:仅开放必要端口(如SSH端口2222),其他端口关闭:
firewall-cmd --permanent --add-port=2222/tcp firewall-cmd --permanent --remove-service=ssh # 关闭默认SSH服务 firewall-cmd --reload
- 禁用不必要服务:关闭telnet、rsh等高风险服务:
systemctl stop telnet.socket rsh.socket systemctl disable telnet rsh
- 日志审计:启用
rsyslog
记录所有SSH操作,配置/etc/rsyslog.d/ssh.conf
:auth,authpriv.* /var/log/ssh.log
重启rsyslog:
systemctl restart rsyslog
,定期备份日志(如使用logrotate
)。
内网访问配置
运维人员通过跳板机访问内网服务器时,可通过SSH转发或ProxyCommand实现:
- SSH直接转发:在本地终端执行:
ssh -J jumpuser@192.168.1.100 10.0.0.2 # 通过跳板机访问内网服务器10.0.0.2
- 配置SSH ProxyCommand:在本地
~/.ssh/config
中添加:Host 10.0.0.* ProxyJump jumpuser@192.168.1.100 User admin # 内网服务器用户名
之后可直接通过
ssh 10.0.0.2
访问,无需每次输入跳板机信息。
高可用性(可选)
若需提升可用性,可部署双跳板机(主备模式),使用Keepalived
实现虚拟IP(如168.1.101
)漂移,主节点故障时自动切换至备节点,确保服务连续性。
相关问答FAQs
Q1: 如何限制仅允许特定IP地址访问跳板机?
A1: 通过防火墙(iptables或firewalld)添加IP白名单,仅允许公司内网IP段168.10.0/24
访问SSH端口2222:
# CentOS 7 (firewalld) firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" service name="ssh" accept' firewall-cmd --reload # 或使用iptables iptables -A INPUT -p tcp -s 192.168.10.0/24 --dport 2222 -j ACCEPT iptables -A INPUT -p tcp --dport 2222 -j DROP service iptables save
Q2: 如何审计跳板机上用户的操作记录?
A2: 可通过script
命令记录用户操作会话,或使用auditd
系统审计。
- script记录:在
/etc/profile
末尾添加script -a /var/log/jumpuser/session.log
,用户登录后所有操作将记录至session.log
。 - auditd审计:安装
auditd
(yum install auditd -y
),配置/etc/audit/auditd.rules
添加规则:-a always,exit -F arch=b64 -S all -F euid=1000 -k jumpuser_audit # 监听jumpuser(UID=1000)的所有操作
审计日志可通过
ausearch -k jumpuser_audit
查看,确保可追溯用户行为。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35987.html