您的位置:首页 > 理论基础 > 计算机网络

SSH远程管理

2016-11-27 13:14 162 查看
一、SSH介绍SSH(Secure Shell) 是一种安全的通道协议,主要用来实现字符界面的远程登录、远程复制等功能。软件:openssh、openssh-server等(默认已安装)服务名称:sshd端口:默认端口是22服务端主程序:/usr/sbin/sshd服务端配置文件:/etc/ssh/sshd_config 1.服务监听选项[root@localhost ~]# vi /etc/ssh/sshd_config……Port 22 //监听端口号为22Protocol 2 //使用SSH V2协议ListenAddress 192.168.4.254 //监听地址为192.168.4.254UseDNS no //禁用DNS方向解析(提高服务器的响应速度)……注意:为了提高安全性,监听端口和监听地址可以根据需求进行修改。 2.用户登录控制[root@localhost ~]# vi /etc/ssh/sshd_config……PermitRootLogin no //禁止root用户登录PermitEmptyPasswords no //禁止空密码用户登录LoginGraceTime 2m //登录验证时间为2分钟MaxAuthTries 6 //最大重试次数为6…… 注意:sshd服务默认允许root用户登录(不安全),普遍做法:先以普通用户远程登入,进入安全的shell环境后,根据实际需要可以使用su 命令切换root用户。 AllowUsers jerry admin@61.23.24.25 //只允许jerry和admin用户登录,且admin用户仅能够从IP地址 为61.23.24.25的主机远程登录。注意:当希望只允许或禁止某些用户登录时,可以使用AllowUsers或DenyUsers配置,两者用法类似,但不能同时使用。 3.登录验证方式[root@localhost ~]# vi /etc/ssh/sshd_config……PasswordAuthentication yes //启用密码验证PubkeyAuthentication yes //启用密钥对验证AuthorizedKeysFile .ssh/authorized_keys //指定公钥数据文件
密码验证:以服务器中本地系统用户的登录名称、密码进行验证。密钥对验证:要求提供相同匹配的密钥信息才能通过,创建方式主要有三步。 注意:密码验证使用方法简单,但是不安全,对于安全性较高的服务器,建议将密码验证方式禁用,只允许启用密钥对验证方式;若没有特殊要求,则两种方式都可以启用,服务器优先使用密钥对验证。 3.SSH客户端程序(密码验证)软件包:openssh-clients(默认已安装) ssh命令 —— 远程安全登录格式:ssh user@hostscp命令 —— 远程安全复制格式1:scp user@host:file1 file2 //下行格式2:scp file1 user@host:file2 //上行sftp命令 —— 安全FTP上下载格式:sftp user@host //与FTP类似 注意:任何支持SSH协议的客户端程序都可以与OpenSSH服务器进行通信,如windows平台中的Xshell、SecureCRT、Putty等。4.密钥对验证的SSH体系(1)在客户端创建密钥对[zhangsan@localhost ~]$ ssh-keygen -t rsa//在客户机为用户zhangsan生成密钥对Generating public/private rsa key pair.Enter file in which to save the key (/home/zhangsan/.ssh/id_rsa): //指定私钥位置Enter passphrase (empty for no passphrase): //设置私钥短语Enter same passphrase again: //确认所设置的短语Your identification has been saved in /home/zhangsan/.ssh/id_rsa.Your public key has been saved in /home/zhangsan/.ssh/id_rsa.pub.……注意:在指定私钥存放位置时,一般直接回车,默认位置为宿主目录下的.ssh文件夹下; 私钥短语对私钥文件进行保护,当使用该私钥验证登录时必须正确提供此处所设置的短语。如果,直接回车不设置私钥短语,可以实现无口令登录,相比较安全性稍差。 (2)将公钥文件上传至服务器[zhangsan@localhost ~]$ scp ~/.ssh/id_rsa.pub root@192.168.4.254:/tmp/ //上传方法随意 (3)在服务器导入公钥文本[root@localhost ~]# mkdir -p /home/lisi/.ssh/[root@localhost ~]# cat /tmp/id_rsa.pub >> /home/lisi/.ssh/authorized_keys注意:这里用来远程登录的账号是lisi,所以先在lisi的宿主目录中创建.ssh文件夹,然后将用户zhangsan的公钥追加到该文件夹下的authorized_keys文件中。

二、TCP Wrappesr访问控制TCP Wrappers将其他的TCP服务程序“包裹”起来,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。 1.访问控制策略的配置文件/etc/hosts.allow //允许个别,拒绝所有,需要在hosts.deny中设置ALL:ALL/etc/hosts.deny //允许所有,拒绝个别 2.策略配置格式服务器程序列表:客户机地址列表服务列表--ALL:代表所有服务单个服务程序多个服务程序,用逗号分隔客户机地址列表--ALL:代表任何客户机地址LOCAL:代表本机地址单个IP地址网络段地址:如192.168.4. 或者 192.168.4.0/255.255.255.0以”.”开始的域名,如”.benet.com”,匹配benet.com域中所有主机。多个地址以逗号分隔允许使用通配符 ? 和 * 3.策略的应用顺序先检查hosts.allow,找到匹配则允许访问。否则再检查hosts.deny,找到则拒绝访问。 若两个文件中均无匹配策略,则默认允许访问。

实验案例:某公司的电子商务站点由站门的网站管理员进行配置和维护,并需要随时从Internet进行远程管理。考虑到易用性和灵活性,在web服务器上启用OpenSSH服务,同时基于安全性考虑,需要对SSH登录进行严格的控制。 需求描述:允许用户wzadm从任意地址登录,采用密钥对验证允许用户jacky从主机192.168.3.110登录禁止其他所有用户远程登录 环境拓扑如下:



1.准备实验环境
一共四台电脑,一台internet测试机,一台网站服务器,一台网关服务器(添加两块网卡),使用真机做网管工作站。



(1)正确配置各主机的网络参数(IP地址、子网掩码、默认网关),网关服务器的内网卡使用vm1,ip地址是192.168.1.254,外网卡使用vm8,ip地址是218.29.30..31,Internet测试机ip地址是218.29.30.218,网卡vm8,配置网关指向218.29.30.31,网站服务器的地址是192.168.1.1,网卡vm1,网关指向192.168.1.254。

(2)在linux上配置网关的临时方式例如:route add default gw 192.168.1.254
(3)在网关服务器上开启路由转发。
echo “1” > /proc/sys/net/ipv4/ip_forward //临时开启路由功能修改/etc/sysctl.conf文件 //永久开启路由功能 net.ipv4.ip_forward = 1修改完毕后执行sysctl -p执行,让sysctl.conf配置文件即使生效。 (4)测试内外网之间可以ping通

(5)在网站服务器上添加测试用户jacky、wzadm,并设置好密码。
2、创建密钥对文件,分发公钥
(1)在Internet测试用机218.29.30.218上创建SSH密钥对文件。
[root@localhost ~]# ssh-keygen -t rsa (2)将其中的公钥文件发送给网站Web服务器(使用FTP等任何方式)。
3、配置OpenSSH服务端
(1)在网站服务器中,开启SSH密钥对验证、密码验证,并限制登录用户。
[root@localhost ~]# vi /etc/ssh/sshd_config…… //省略部分内容PermitRootLogin noAllowUsers jacky@192.168.3.110 wzadmPasswordAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_key[root@localhost ~]# service sshd reload (2)将客户机发过来的公钥文本导入wzadm用户的公钥数据库。
[root@localhost ~]# mkdir -p /home/wzadm/.ssh/[root@localhost ~]# cat id_rsa.pub >> /home/wzadm/.ssh/authorized_keys (3)锁定用户账号wzadm,以禁止其直接使用口令验证。 [root@localhost ~]# passwd -l lisiLocking password for user lisi.passwd: Success 4、验证实验结果
(1)使用jacky的用户名/密码,可以从主机192.168.3.110远程登录网站服务器。
(2)使用wzadm的用户名/密码,在任何主机中均无法远程登录网站服务器。
(3)在生成密钥对的主机中,使用wzadm的用户名、验证私钥短语后可以登录网站服务器。(4)使用root用户或其他用户(如wangwu),无法远程登录网站服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TCP SSH Wrappers