SSH远程访问及控制

大多数企业服务器是通过远程登录的方式来进行管理的,如何更加安全、高效的远程管理网络中的各种服务器是作为网络管理人员的必修课。这里将针对Linux环境使用安全的SSH远程管理途径,以及通过TCP Wrappers机制为应用提供访问控制

SSH(secure shell)是一种安全的通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,与早期的TELNET、RSH、RCP等应用相比,SSH协议提供了更好的安全性

配置OpenSSH服务端

在RHEL系统中,OpenSSH服务器的openssh等软件包默认已经安装,并已添加为系统服务,只需配置并启动sshd服务,大部分用户(拥有合法的登录shell)都可以远程登录系统。sshd的配置文件位于/etc/ssh/sshd_config目录下,正确调整相关配置项,有助于提高sshd远程登录的安全性

[[email protected] ~]# vim /etc/ssh/sshd_config 
Port 22                              //默认端口号22,必要时可修改
ListenAddress 192.168.1.1            //监听地址
Protocol 2                           //使用SSH v2协议,比v1更安全
UseDNS no                            //禁用DNS反向解析,提高服务器响应速度

LoginGraceTime 2m                    //登录验证时间为2分钟
PermitRootLogin yes                  //禁止root用户登录,用普通用户登录后,su切换为root更加安全
MaxAuthTries 6                       //最大重试次数为6
PermitEmptyPasswords no              //禁止空密码用户登录

AllowUsers ysf [email protected]     //当只允许某些用户登录时
DenyUsers yangshufan                  //当只禁止某些用户登录时,注意两者不要同时使用

PasswordAuthentication yes             //启用密码验证
PubkeyAuthentication yes               //启用密钥对验证
AuthorizedKeysFile      .ssh/authorized_keys      //指定公钥库数据文件

[[email protected] ~]# service sshd reload            //配置完后,需要更新服务
重新载入 sshd:                                            [确定]

当密码验证、密钥对验证都启用时,服务器将优先使用密钥对验证。对于安全性较高的服务器,建议禁止密码验证方式,只允许密钥对验证方式;若没有特殊要求,则两种都可以启用

使用SSH客户端程序

在Linux系统中,SSH客户端默认已安装,其中包括ssh、scp、sftp等命令。实际上,任何支持SSH协议的客户端程序都可以与OpenSSH服务器进行通信,如Windows平台中的Xshell、SecureCRT、Putty等图形工具。

(1)ssh远程登录

通过ssh命令,可以远程登录sshd服务,为用户提供一个安全的shell环境,以便对服务器进行管理和维护

[[email protected] ~]# ssh [email protected]           //如果不是默认端口,需要使用"-p 端口号"
Are you sure you want to continue connecting (yes/no)? yes         //第一次连接,必须输入yes
[email protected]'s password:                       //输入密码
Last login: Thu Dec 28 05:01:52 2017 from 192.168.1.2
[[email protected] ~]$

(2)scp远程复制

通过scp命令可以利用SSH安全连接与远程主机互相复制文件

[[email protected] ~]# scp /etc/passwd  [email protected]:/root/passwd.txt       //将本地文件复制到远程主机
[email protected]'s password: 
passwd                                                100% 1915     1.9KB/s   00:00  
[[email protected] ~]# scp -r [email protected]:/home/   /opt                  //将远程主机的home目录复制到本地
[email protected]'s password: 
.bash_profile                                         100%  176     0.2KB/s   00:00    
.bash_logout                                          100%   18     0.0KB/s   00:00    
[[email protected] ~]#

(3)sftp安全FTP

通过sftp命令可以利用SSH安全连接与远程主机上传、下载文件,采用了与FTP类似的登陆过程和交互式环境,便于管理资源

[[email protected] ~]# sftp [email protected]
Connecting to 192.168.1.1...
[email protected]'s password: 
sftp> help
sftp> bye
[[email protected] ~]#

使用密钥对验证SSH的方式

密钥对验证方式可以为远程登录提供更好的安全性,下面将介绍在Linux服务器、客户机中构建密钥对验证SSH体系的基本过程,如下图所示:

1. 在客户机创建密钥对

[[email protected] ~]$ ssh-keygen -t rsa                    //ssh-keygen工具为当前用户创建密钥对文件,rsa为加密算法,也可以为dsa加密算法
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yang/.ssh/id_rsa):            //指定私钥位置,按Enter键确定
Created directory '/home/yang/.ssh'.
Enter passphrase (empty for no passphrase):                              //设置私钥密码,也可以设置为空,实现无密码登录,但使用密码更加安全
Enter same passphrase again:                                             //确认密码
Your identification has been saved in /home/yang/.ssh/id_rsa.

[[email protected] ~]$ ls -lh ~/.ssh/id_rsa*                           //确认生成的密钥文件
-rw-------. 1 yang yang 1.8K 12月 29 08:47 /home/yang/.ssh/id_rsa          //私钥文件,不能泄露
-rw-r--r--. 1 yang yang  408 12月 29 08:47 /home/yang/.ssh/id_rsa.pub      //公钥文件,用来提供给服务器

2. 将公钥上传至服务器

3. 在服务器中导入公钥文本

上面两个步骤有两种方式完成导入:

方式一:命令格式如下

ssh-copy-id    -i    公钥文件    目标主机用户@目标主机

[[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[email protected]'s password:              //输入ysf的密码
Now try logging into the machine, with "ssh '[email protected]'", and check in:
  .ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[[email protected] ~]#        //验证密码后,会将公钥自动添加到宿主目录下的.ssh/authorized_keys

方式二:使用FTP、scp等方式上传到服务器,在将文件导入到目标用户的公钥数据库

[[email protected] ~]$ scp .ssh/id_rsa.pub [email protected]:/tmp         //使用scp命令上传到服务器
[email protected]'s password:                                          //输入服务器root的密码
Could not chdir to home directory /home/ysf: No such file or directory
id_rsa.pub                                            100%  408     0.4KB/s   00:00    
[[email protected] ~]$ ssh  [email protected]                    //远程登录到服务器
[email protected]'s password: 
[[email protected] ~]# mkdir /home/ysf/.ssh                //将公钥导入到公钥数据库
[[email protected] ~]# cat /tmp/id_rsa.pub >> /home/ysf/.ssh/authorized_keys       
[[email protected] ~]# ls -l /home/ysf/.ssh/authorized_keys          //注意:公钥库文件的权限必须是root用户或宿主用户
-rw-rw-r--. 1 ysf ysf 408 12月 29 10:01 .ssh/authorized_keys

4. 在客户端上使用密钥对验证

[[email protected] ~]$ ssh [email protected]
Enter passphrase for key '/home/yang/.ssh/id_rsa':            //输入私钥密码,如未设置密码,则直接登录服务器
Last login: Fri Dec 29 10:57:12 2017 from 192.168.1.2
[[email protected] ~]$

TCP Wrappers访问控制

TCP Wrappers将其他TCP服务程序包裹起来,增加了一个安全检测过程,外来的连接请求必须先通过这层安全检测,获得许可后才能访问真正的服务程序。对于大多数Linux发行版,TCP Wrappers是默认提供的功能。

1. 策略的配置格式

TCP Wrappers机制的保护对象为各种网络服务程序,针对访问服务程序的客户机地址进行访问控制。对应的策略文件为/etc/hosts.allow和/etc/hosts.deny,分别提供允许和拒绝的要求

配置格式如下:

服务程序列表:客户机地址列表

其中,

(1)服务程序列表分为以下几类:

ALL:代表所有服务

单个服务程序:如“sshd”

多个服务程序组成的列表:如“httpd,sshd”,以逗号分隔

(2)客户机地址列表分为以下几类:

ALL:代表任何客户机服务

LOCAL:代表本机地址

单个IP地址:如“192.168.1.1”

网络段地址:如“192.168.1.0/255.255.255.0”或者“192.168.1.”

域名:如“.ysf.com”匹配ysf.com域中的所有主机

通配符*、?:前者代表任意长度字符,后者仅代表一个字符

多个客户机地址组成的列表:如“192.168.1.1,172.16.10.,.ysf.com”

2. 访问控制的基本原则

(1)先检查hosts.allow,找到匹配则允许访问

(2)否则再检查hosts.deny,找到则拒绝访问

(3)若两个文件中均无匹配策略,则默认允许访问

实际使用TCP Wrappers机制时,较为宽松的策略可以是“允许所有,拒绝个别”,较为严格的可以是“允许个别,拒绝所有”。前者只需在hosts.deny文件中添加相应的策略;而后者需要在hosts.allow中添加允许策略外,还要在hosts.deny文件中添加“ALL:ALL”的拒绝策略

例如:

1)仅允许从主机61.63.65.67,网段192.168.2.0/24 地址访问sshd服务 ,禁止其他所有地址访问受保护的服务

2)拒绝192.168.2.2访问httpd服务

[[email protected] ~]# vim /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*

[[email protected] ~]# vim /etc/hosts.deny
sshd:ALL
httpd:192.168.2.2

原文地址:http://blog.51cto.com/yangshufan/2055727

时间: 2024-08-10 13:47:37

SSH远程访问及控制的相关文章

百晓生带你玩转linux系统服务搭建系列----SSH远程访问及控制

实验环境:linux centos 6.5*2实验目的:用户登录控制及密钥对验证 sshd服务默认允许root用户登录,当在Internet中使用时这是非常不安全的.普遍的做法是先以普通用户远程登入,进入安全shell环境后,根据实际需要使用su命令切换为root用户,或者给普通用户提升管理权限 一.用户登录控制 禁止root用户远程登录的方法:vim /etc/ssh/sshd_config,进入如下图所示界面进行操作 普通用户的账号管理:用普通用户远程登入服务器后,可以使用su命令切换为ro

TCP Wraapers控制与ssh远程访问

       Ssh 远程访问及控制 1:ssh远程原名:open ssh secure shell,主要加密用户与服务器之间的信息传递,通过密文加密传输,工作在TCP的22端口    telnet只要通过明文登录工作在TCP的23端口 2:在工作中有必要修改默认的22 端口,提高安全性,另外为了减少风险,不采用root用户使用远程登录 3:ssh的程序路径在 /usr/sbin/sshd 配置文件在 /etc/ssh/sshd_config之下 再次我们使用u1用户进行登录配置如下:(系统中必

Linux网络服务10——远程访问及控制

Linux网络服务10--远程访问及控制 一.SSH概述 1.SSH简介 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能.SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,语TELNET(远程登录)等应用相比,SSH协议提供了更好的安全性. 2.默认监听端口:TCP 22 二.OpenSSH的配置 1.OpenSSH安装包 默认安装Linux系统时自动安装,若未安装,安装光盘中的如下rpm包: openssh-5

配置ssh远程访问策略

假如有两个域,一个是example.com(172.25.0.0/16),一个是my133t.org(172.24.0.0/16) 要求:从域group3.example.com能ssh远程访问两个虚拟机,而在域my133t.org中客户端不能远程访问两个虚拟机 第一步: 首先要在两台虚拟机开启enforcing模式,打开vi  /etc/selinux/config SELINUX=enforcing SELINUX=targeted 第二步: 在虚拟机的/etc/hosts.allow和/e

Linux远程访问及控制

一.SSH 远程管理 SSH的功能 SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录.远程复制等功能. SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令.与早期的telnet (远程登录).rsh(Remote Shell,远程执行命令).rcp(Remote File Copy,远程文件复制)等应用相比,SSH协议提供了更好的安全性. 配置OpenSSH服务端 服务监听选项 sshd 服务使用的默认端口号为22 必要时建议修改

技术漫谈 | 远程访问和控制云端K8S服务器的方法

对于部署在云端的K8S容器编排系统,可以先通过SSH远程登录到K8S所在主机,然后运行kubectl命令工具来控制K8S服务系统.然而,先SSH登录才能远程访问的二阶段方式,对于使用Linux桌面或者macOS桌面的同学来说,Kubectl运行环境脱离了本地桌面环境,感觉到使用不方便,心情不爽. 下面介绍一种从本地桌面远程直接访问和控制云端K8S服务器的方法,有助于恢复愉快心情.该方法对于Windows桌面也适用,只不过本地文件路径不同,需要作适当修改. 一.kubectl远程访问控制原理  

远程访问及控制

远程访问及控制

搭建IPA用户管理服务器&安装ssh远程访问服务

1.搭建IPA用户管理服务器 搭建准备前工作 workstation: #先停掉dhcp服务 systemctl stop dhcpd;systemctl disable dhcpd #分别在workstation,server1,server2,database上安装ntp服务 yum -y install ntp #打开ntp配置文件,做如下修改 workstation: vim /etc/ntp.conf 17 restrict 192.168.40.0 mask 255.255.255.

centos 6.5下安装、配置并启动SSH远程访问

centos 6.5下安装.配置并启动SSH远程访问 1.登录centos 6.5系统,使用root用户登录,如果为非root用户则执行su或su - 或su root或su - root切换为root用户. 2.查看SSH是否安装(检查是否装了SSH包). 输入命令:rpm -qa | grep ssh 如图所示说明centos 6.5系统已经为我们默认安装了SSH包. 注:若没安装SSH则可输入:yum install openssh-server安装. 3.查看SSH服务是否正在运行. 输