简介
在此前的课程中曾陆续学习了网站.FTP等各种网络服务.实际上大多数企业服务器是通过远程登录的方式来进行管理的。当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势。
本章将学习如何针对Linux环境使用安全的方式远程管理,以及通过TCP Wrappers 机制为应用提供访问控制。
安装openssh服务
1.安装服务器端
[root@centos01 ~]# mount /dev/cdrom /mnt/
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*
[root@centos01 ~]# rpm -ivh /mnt/Packages/openssh-server-7.4p1-11.el7.x86_64.rpm
2.安装客户端
[root@centos01 ~]# rpm -ivh /mnt/Packages/openssh-clients-7.4p1-11.el7.x86_64.rpm
[root@centos01 ~]# ls -ld /etc/ssh/sshd_config
[root@centos01 ~]# rpm -qa | grep openssh*
3.设置ssh服务开机自动启动
[root@centos01 ~]# systemctl enable sshd
[root@centos01 ~]# systemctl start sshd
检查端口号:
[root@centos01 ~]# netstat -anptu | grep sshd
4.openssh-server常见的配置选项
1. 监听的端口
Port 22
2. 监听任意IP地址
ListenAddress 0.0.0.0
3. 登录超时时间2分钟
LoginGraceTime 2m
4. 允许root登录no表示阻止root登录
PermitRootLogin yes
5. 开启密钥对身份验证
PubkeyAuthentication yes
6. 存储身份验证密钥文件
AuthorizedKeysFile .ssh/authorized_keys
7. 开启账户密码验证
PasswordAuthentication yes
配置修改监听|IP地址和端口号
1.修改sshd主配置文件
[root@centos01 ~]# vim /etc/ssh/sshd_config
Port 2222
ListenAddress 192.168.100.10
2.重新启动sshd服务
[root@centos01 ~]# systemctl restart sshd
[root@centos01 ~]# netstat -anptu | grep sshd
3.客户端访问远程访问服务器
[root@centos02 ~]# ssh -p 2222 root@192.168.100.10
4.ssh-server访问控制
[root@centos01 ~]# vim /etc/ssh/sshd. config
//1. 阻止root用户本地登录
PermitRootLogin no
//2. 拒绝192.168.100.20使用root远程登录服务器端
DenyUsers root@192.168.100.20
配置密钥对身份验证和访问控制
1.修改远程访问服务器主配置文件支持密钥对验证
[root@centos01 ~]# vim /etc/ssh/sshd_config
//1. 开启密钥对验证
PubkeyAuthentication yes
//2. 指定公钥存储位置
AuthorizedKeysFile .ssh/authorized_keys
[root@centos01 ~]# systemctl restart sshd
2.客户端生成密钥对
[root@centos02 ~]# ssh-keygen -t rsa
3.客户端上传公钥到远程访问服务器
[root@centos02 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.100.10
//1. 公钥
[root@centos02 ~]# cat .ssh/id_rsa.pub
//2.私钥
[root@centos02 ~]# cat .ssh/id_rsa
//3. 服务器公钥
[root@centos01 ~]# cat .ssh/authorized_keys
//4. 登出
[root@centos02 ~]# ssh root@192.168.100.10
远程数据复制
1.将远程服务器数据下载到本地当前目录
[root@centos01 ~]# cp .ssh/authorized_keys ./
[root@centos02~]#scp root@192.168.100.10:/root/authorized_keys ./
2.远程主机数据复制到客户端192.168.100.20的opt目录中
[root@centos01 ~]# scp authorized_keys root@192.168.100.20:/opt
3.复制远程主机目录中的所有数据到本地
[root@centos01 ~]# mkdir -p /benet/bdqn
[root@centos01 ~]# echo "jiaoxinyuan" > /benet/1.txt
[root@centos01 ~]# echo "jiaoxinyuan" > /benet/bdqn/2.txt
[root@centos01 ~]# ls /benet/
[root@centos01 ~]# ls /benet/bdqn/
[root@centos01 ~]# scp -r /benet/ root@192.168.100.20:/opt/
准备环境
1.开三台虚拟机,分别为Web, wzadm, jacky
[root@web ~]#
[root@web ~]# mount /dev/cdrom /mnt/
[root@web ~]# rm -rf /etc/yum.repos.d/CentOS-*
[root@web ~]# rpm -ivh /mnt/Packages/openssh-server-7.4p1-11.el7.x86_64.rpm
[root@web ~]# rpm -ivh /mnt/Packages/openssh-clients-7.4p1-11.el7.x86_64.rpm
[root@wzadm ~]#
[root@jacky ~]#
2.在Web主机创建jacky并设置密码
[root@web ~]# useradd jacky
[root@web ~]# passwd jacky
3.在Web主机创建wzadm并设置密码
[root@web ~]# useradd wzadm
[root@web ~]# passwd wzadm
允许网站管理员wzadm通过笔记本电脑远程登录Web服务器,笔记本电脑的IP地址并不是固定的,采用密钥对验证方式以提高安全性
1.生成秘钥对
[root@wzadm ~]# ssh-keygen -t rsa
2.上传公钥到服务器并且导入数据库
[root@wzadm ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.100.10
3.验证wzadm访问Web主机
[root@wzadm ~]# ssh wzadm@192.168.100.10
允许用户jacky远程登录Web服务器,但仅限于从网管工作站192.168.100.30访问
1.配置Web主机 仅限于192.168.100.30中的jacky访问
[root@web ~]# vim /etc/ssh/sshd_config
Port 22
ListenAddress 192.168.100.10
AllowUsers jacky@192.168.100.30
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
2.重启服务
[root@web ~]# systemctl restart sshd
3.在jacky主机中测试是否能够登录
[root@jacky ~]# ssh jacky@192.168.100.10
禁止其他用户通过SSH方式远程登录Web服务器。
配置Web主机的tcp wrappers 策略文件
1.允许访问
[root@web ~]# vim /etc/hosts.allow
sshd:192.168.100.*
2.拒绝访问
[root@web ~]# vim /etc/hosts.deny
sshd:All
3.测试结果
[root@wzadm ~]# ssh wzadm@192.168.100.10
实验完成