SSH 远程管理及安全配置
配置服务端
服务监听选项
vim /etc/ssh/sshd_config
Port 22
# 监听端口为22
ListenAddress 192.168.10.1
# 监听地址为192.168.10.1
UseDNS yes
# 禁用DNS反向解析
修改之后重启:
systemctl restart sshd
用户登录控制
vim /etc/ssh/sshd_config
#################
LoginGraceTime 2m
# 登录验证时间
PermitRootLogin no
# 禁止root用户登录
MaxAuthTries 3
# 最大重试次数
MaxSessions 10
# 最大连接数
PermitEmptyPasswords no
# 禁止空密码用户登录
# 如果只允许或禁止某些用户登录时,可以使用AllowUsers或DenyUsers配置,两者用法类似(不能同时使用)。
#################
systemctl restart sshd
登录验证方式
- 密码验证
- 密钥对验证
vim /etc/ssh/sshd_config
#########################
PasswordAuthentication no
# 禁用密码验证
PubkeyAuthentication yes
# 启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys
# 指定公钥库数据文件
#########################
systemctl restart sshd
配置密钥对登录验证
# 创建密钥对
ssh-keygen -t rsa
Enter file in which to save the key (/home/student/.ssh/id_rsa):
# 指定私钥位置(默认即可)
Enter passphrase (empty for no passphrase):
# 设置私钥短语(无即可)
Enter same passphrase again:
# 确认所设置的短语
# ------------------
# 上传公钥到服务器
scp ~/.ssh/id_rsa.pub root@192.168.75.158:/tmp/
# 一键上传(确保/root下有.ssh目录)
scp ~/.ssh/id_rsa.pub root@192.168.75.158:/root/.ssh/authorized_keys
# ------------------
# 写入公钥
mkdir -p /home/stu1/.ssh
cat /tmp/id_rsa.pub >> /home/stu1/.ssh/authorized_keys
# ------------------
# 配置sshd_config文件允许密钥对访问
vim /etc/ssh/sshd_config
#########################
PasswordAuthentication no
# 禁用密码验证
PubkeyAuthentication yes
# 启用密钥对验证
AuthorizedKeysFile .ssh/authorized_keys
# 指定公钥库数据文件
#########################
ssh stu1@192.168.75.158
# 登录
TCP Wrappers访问控制
访问策略文件
- 网络服务程序:
/etc/hosts.allow
- 针对访问服务的客户机地址进行访问控制:
/etc/hosts.deny
策略配置格式
<服务程序列表>:<客户机地址列表>
- 服务程序列表、客户机地址列表之间以冒号分隔,在每个表内的多个项之间以
逗号
分隔。
服务程序列表分类
ALL
:代表所有的服务。单个服务程序
:如“sshd”。多个服务程序组成的列表
:如“sshd,vsftpd”。
客户机地址列表分类
ALL
:代表任何客户机地址。LOCAL
:代表本机地址。单个IP地址
:如“192.168.75.158”。网络地址段
:如“192.168.75.0/255.255.255.0”。以“.”开始的域名
:如“.kgc.cn”匹配域中的所有主机。以“.”结束的网络地址
:如192.168.75.匹配整个192.168.75.0/24网段。
嵌入通配符“*”,“?”
:前者代表任意长度字符,后者仅代表一个字符,如”10.0.8.2*”匹配以10.0.8.2开头的所有IP地址。不可与以“.”开始或结束的模式混用。
多个客户机地址组成的列表
:如“192.168.1.,172.17.17.,.kgc.cn”。
访问控制基本原则
- 首先检查
/etc/hosts.allow
文件,如果匹配则允许
访问; - 否则继续检查
/etc/hosts.deny
文件,如果匹配则拒绝
访问; - 如果上述两个文件都没有匹配,则允许访问。
实例
实际应用TCP Wrappers机制时,较宽松的策略可以是“允许所有,拒绝个别
”,只在hosts.deny文件中添加拒绝策略就可以了。较严格策略是“允许个别,拒绝所有
”,除了在hosts.allow中添加允许策略外还需要在hosts.deny文件中设置“ALL:ALL”的拒绝策略。
# 只允许61.63.65.67的主机或者位于192.168.2.0/24网段的主机访问sshd服务,拒绝其他地址。
vim /etc/hosts.allow
################
sshd:61.63.65.67,192.168.2.*
################
vim /etc/hosts.deny
################
sshd:ALL
################