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

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

配置OpenSSH服务端

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

[root@localhost ~]# 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 yang@192.168.3.110     //当只允许某些用户登录时
DenyUsers yangshufan                  //当只禁止某些用户登录时,注意两者不要同时使用PasswordAuthentication yes             //启用密码验证
PubkeyAuthentication yes               //启用密钥对验证
AuthorizedKeysFile      .ssh/authorized_keys      //指定公钥库数据文件[root@localhost ~]# service sshd reload            //配置完后,需要更新服务
重新载入 sshd:                                            [确定]

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

使用SSH客户端程序

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

(1)ssh远程登录

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

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

(2)scp远程复制

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

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

(3)sftp安全FTP

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

[root@localhost ~]# sftp ysf@192.168.1.1
Connecting to 192.168.1.1...
ysf@192.168.1.1's password:
sftp> help
sftp> bye
[root@localhost ~]#

使用密钥对验证SSH的方式

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

1. 在客户机创建密钥对

[yang@localhost ~]$ 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.[yang@localhost ~]$ 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    公钥文件    目标主机用户@目标主机

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

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

[yang@localhost ~]$ scp .ssh/id_rsa.pub root@192.168.1.1:/tmp         //使用scp命令上传到服务器
root@192.168.1.1'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
[yang@localhost ~]$ ssh  root@192.168.1.1                    //远程登录到服务器
root@192.168.1.1's password:
[root@localhost ~]# mkdir /home/ysf/.ssh                //将公钥导入到公钥数据库
[root@localhost ~]# cat /tmp/id_rsa.pub >> /home/ysf/.ssh/authorized_keys
[root@localhost ~]# ls -l /home/ysf/.ssh/authorized_keys          //注意:公钥库文件的权限必须是root用户或宿主用户
-rw-rw-r--. 1 root root 408 12月 29 10:01 .ssh/authorized_keys

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

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

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服务

[root@localhost ~]# vim /etc/hosts.allow
sshd:61.63.65.67,192.168.2.*[root@localhost ~]# vim /etc/hosts.deny
sshd:ALL
httpd:192.168.2.2

转载于:https://blog.51cto.com/yangshufan/2055727

SSH远程访问及控制相关推荐

  1. SSH远程访问以及控制

    SSH远程访问以及控制 一.SSH远程管理基本简介 二.OpenSSH服务端相关配置 三.SSH客户端程序的登录以及使用 -登录验证方式 -SSH客户端程序的使用 (1)ssh远程登录: (2)scp ...

  2. ssh远程访问及控制与TCP Wrappers

    远程访问及控制 文章目录 远程访问及控制 SSH协议 客户端和服务端 OpenSSH 配置opensSH服务端 设置SSH白名单和黑名单 使用SSH客户端程序 1. ssh远程登录 2. scp远程复 ...

  3. SSH远程访问及控制——远程登录服务器并传输数据

    文章目录 一.SSH远程管理 1.SSH的概述 二.OpenSSH服务器 三.配置OpenSSH服务器 3.1.sshd_ config配置文件的常用选项设置 3.2.实例操作:配置文件的常用选项 3 ...

  4. SSH远程访问与TCP Wrappers 访问控制(基础概述及配置操作)

    SSH远程访问及控制 OpenSSH服务器 基础概述 Windows远程桌面连接 配置OpenSSH 服务端 sshd_config配置文件的常用选项设置 使用SSH客户端程序进行黑白名单登录测试 使 ...

  5. 【鬼网络】之远程访问及控制ssh

    远程访问及控制ssh 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSSH 服务端 1.配置文件常用设置选项 2.AllowUs ...

  6. Linux远程访问及控制(SSH、TCP Wrappers 访问控制)

    Linux远程访问及控制 一.SSH远程管理 1.SSH定义 2.SSH数据传输优点 3.SSH客户端和服务端 二.OpenSSH 1.配置OpenSSH 服务端配置 2.scp远程复制 3.sftp ...

  7. 远程访问及控制(详解)——SSH远程管理及TCP Wrappers 访问控制

    远程访问及控制(详解)--SSH远程管理及TCP Wrappers 访问控制 一.SSH远程管理 1.定义 2.优点 3.客户端与服务端 4.SSH服务的开启.端口号和配置文件 二.配置 OpenSS ...

  8. centos 7.6 ——远程访问及控制——(ssh密钥登录、ssh客户端、TCP Wrappers)

    远程访问及控制 文章目录 远程访问及控制 一.ssh基本配置 1. 允许root登录 2. 禁止root远程登录 **注意 3. DenyUsers 黑名单的使用 4. AllowUsers 白名单使 ...

  9. Linux 远程访问及控制

    Linux 远程访问及控制 文章目录 Linux 远程访问及控制 引言: 一.SSH远程管理 1.SSH是什么: 2.SSH客户端与OpenSSH服务端 3.SSH服务配置 4.SSHD服务端的功能 ...

最新文章

  1. STM32串口中断接收方式详细比较
  2. WCF与现行分布式通讯技术性能对比
  3. fileviewpro绿色免安装版
  4. Maven项目缺少Maven Dependencies解决方法总结
  5. JQuery 自动触发事件
  6. linux系统如何查看是否是线程死锁,多线程中如何使用gdb精确定位死锁问题
  7. XSS跨站脚本攻击在Java开发中防范的方法
  8. Matlab计算机视觉/图像处理工具箱(待续)
  9. word2013插入excel对象报错_在Word文档中修改嵌入的Excel对象
  10. GO_10:GO语言基础之error
  11. php不支持redis
  12. SQL Server中数据库文件的存放方式,文件和文件组
  13. Unity3D中Update和FixedUpdate、LateUpdate的区别
  14. 在线php中文手册,JavaScript中文参考手册
  15. 《大学》与威斯敏斯特大教堂的无名墓碑
  16. 怎么缩小照片的kb?
  17. HashSet源码解读
  18. 后台SpringBoot + Mybatis开发遇到的一些坑
  19. Apache Tuscany中文论坛开通: http://groups.google.com/group/tuscany-sca-chinese
  20. 用PYQT5写一个登陆界面

热门文章

  1. C语言初学者代码中的常见错误与瑕疵(2)
  2. 12 个的优秀手机设计灵感
  3. LeetCode算法题-Reverse Linked List(Java实现)
  4. 基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)
  5. android报错res\drawable-xhdpi\ic_Dianhua.png: Invalid file name: must contain only [a-z0-9_.]
  6. symfony note
  7. MockDialog
  8. Samba的主配置文件
  9. 感觉 Mongodb 的操作 还没 mysql 方便 。。。。
  10. SBO-COMMON库中查各个表的大小的SQL语句