ssh远程控制

1.什么是SSH

ssh是一种网络协议,用于计算机之间的加密登录


2.配置OpenSSH 服务端

OpenSSH服务器由 openssh , openssh-server等软件包提供(默认已安装),并已添加为标准系统服务。

配置文件:

/etc/ssh/sshd_config

服务监听选项:

port 22    //监控端口为22(默认)

protocol 2    //使用ssh v2协议

listenAddress 192.168.1.1.55    //监听地址为192.1681.55

UseDNS no    //禁用DNS反向解析

#service sshd reload    //重新载入

用户登录控制:

sshd默认允许root登录,但是在internet中为了安全应该禁止root登录,先用普通用户登录到服务器,再su 到root权限。

sshd服务用户登录限制:

1). 禁止root用户,或密码为空的用户登录

2). 限制登录验证时长(默认为2分钟)

3). 限制用户重复登录次数。

vim /etc/ssh/sshd_config

PermitRootLogin on        //禁止root用户登录

PermitEmptyPasswords on        //禁止空密码用户登录

LoginGraceTime 2m        //用户登录验证时长

MaxAuthTries 6        //最大重复登录次数

service sshd reload

允许,拒绝某个用户,从某个IP登录,允许和拒绝不能同时出现

AllowUsers 用户@IP           //允许登录

DenyUsers 用户@IP        //拒绝登录

例:

只允许dyq和zhangsan从192.168.1.0网段登录(多用户间用空格分隔)

AllowUsers [email protected] zhangsan        //多用户之间用空格分隔

#service sshd reload

登录验证方式:

1)。密码登录验证:比较简单的方法,通过本地的密码就可以登录服务器。

2)。密钥登录验证:生成公钥私钥的方法来验证登录。公钥保存需要保存在客户机端。

一般两种验证方式同时开启,系统会优先选择秘钥验证的方法登录。在安全级别比较高的服务器上要一般只开秘钥验证方式。

怎么生成公钥私钥,后面讲。

#vim /etc/ssh/sshd_config

PasswordAuthentication yes        //启动密码验证

PubkeyAuthentication yes        //启用秘钥验证

AuthorizedKeysFile  .ssh/authorized_keys        //指定公钥库数据文件

#service sshd reload 

3.客户端(clients)连接方式

两种远程连接方式,一种是通过命令连接(命令界面常用),另一种是通过客户端连接(win常用)

命令连接服务端

ssh远程登录

格式:

ssh [-p port] username@IPaddress

如果端口不是默认的22端口的话,则需要用到参数 -p 制定端口。

例:

ssh -p 50022 [email protected]

回车后会提示接收来自服务器的秘钥,输入yes选择接收,然后输入密码就可以登录了。

scp远程复制

scp命令可以吧本地的文件复制到远程服务器上,或把服务器上的文件复制到本地来。

复制文件报错解决:

***linux/bash__scp__command_not_found_lost_connectionwentijiejue_15485_1347695526.html

格式:

scp -r [要复制的文件] [目标文件] -P 

参数:

-r        //复制整个目录

-P(大写)        //指定端口

更多参数 man scp

例:服务器复制到本地

# scp -P 50022 [email protected]:/home/dyq/132 /root/123

本地复制到服务器,把顺序反过来就好了。

# scp -P 50022  /root/dd.sql [email protected]:/home/dyq

sftp 安全 FTP 

sftp是ssh协议中的一种,可以模拟FTP协议,输入密文传输比FTP协议要安全。

使用sftp命令连接服务器时,服务器必须开启FTP服务,否则无法连接。

格式:

sftp user_name@IPaddress

spacer.gif

以上三种命令只是简单介绍,里面有更多的参数和形式要发掘,详细信息可以查询资料或者man帮助文档。

WIN上客户端连接远程服务这里就不多做叙述了。

4.构建密钥验证的SSH体系

概念:

密钥验证的形式比密码验证具有更高的安全性。这里要记住两个文件:id_rsa  是私钥;id_rsa.pub 是公钥。

密钥验证工作过程:

一步:生成公钥(id_rsa.pub)私钥(id_rsa)。

二步:上传公钥文件(id_rsa.pub)

三步:导入公钥信息,~/.ssh/authorized.keys

四步:公钥跟私钥验证。

1)。在客户端创建密钥对

linux中通过工具 ssh-keygen 可以生成密钥文件,密钥文件具有两种加密算法:RSA或DSA(使用任意一种就好)

格式:

ssh-keygen -t [加密算法RSA;DSA]

参数:

-t         //指定加密算法

更多参数:man ssh-keygen

例:遇到交互一般直接回车就好了。

spacer.gif

确认密钥是否存在:

# ls -lh ~/.ssh

总用量 12K

-rw-------. 1 root root 1.7K 7月   6 15:33 id_rsa

-rw-r--r--. 1 root root  408 7月   6 15:33 id_rsa.pub

-rw-r--r--. 1 root root  402 7月   6 15:04 known_hosts

密钥要保存好,不要泄露给别人。

2)。将公钥上传到服务器

上传密钥可以通过多种方式(复制粘贴,FTP,samba,HTTP,email)下面用scp命令上传。

# scp -P 50022 ~/.ssh/id_rsa.pub [email protected]:/home/dyq/

[email protected]'s password: 
id_rsa.pub            100%  408     0.4KB/s   00:00

3)。在服务器中导入公钥文件

密钥保存在~/.ssh/authorized_keys 文件中

操作:

# mkdir ~/.ssh        //没有.ssh文件,就要手动创建

# cat /home/dyq/id_rsa.pub >> ~/.ssh/authorized_keys      //重定向导入

# tail -l /home/dyq/.ssh/authorized_keys        //查看验证

由于默认采用严格的权限检测模式(StrictModes yes),因此要求 .ssh的权限只能有属主的权限,属组,其他用户,不能拥有权限,否则验证失败。

4)。在客户端使用密钥验证

当上三步部署成功以后就可以直接通过密钥验证的方式登录了。

5.TCP Wrappers 访问控制

linux系统中许多网络服务都有访问控制机制,如samba,Bind ,HTTPD,OpenSSH等。除此以外,网络边界中的防火墙,入侵检测等设备也都有强大的安全屏障。

概述:

TCP Wrappers 将其他的TCP服务程序“包裹”起来,增加安全检测过程。外来请求要通过验证才能访问服务,TCP Wrappers还可以记录所有企图访问被保护服务行为,为管理员提供丰富的安全分析资料。

通常linux已经预安装了tcp_wrappers服务。

查看:

# rpm -ql tcp_wrappers

/usr/sbin/safe_finger

/usr/sbin/tcpd

/usr/sbin/try-from

/usr/share/doc/tcp_wrappers-7.6

/usr/share/doc/tcp_wrappers-7.6/BLURB

/usr/share/doc/tcp_wrappers-7.6/Banners.Makefile

/usr/share/doc/tcp_wrappers-7.6/CHANGES

/usr/share/doc/tcp_wrappers-7.6/DISCLAIMER

/usr/share/doc/tcp_wrappers-7.6/README

/usr/share/doc/tcp_wrappers-7.6/README.IRIX

/usr/share/doc/tcp_wrappers-7.6/README.NIS

/usr/share/man/man8/safe_finger.8.gz

/usr/share/man/man8/tcpd.8.gz

/usr/share/man/man8/try-from.8.gz

注:

xinedtd 是一个特殊的服务管理程序,通常被称为超级服务器。xinetd通过在 /etc/xinetd.d 目录下为每一个被保护的程序建立一个配置文件,调用 tcp wrappers 机制来提供额外的访问控制保护。

TCP Wrappers 访问策略

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

/etc/hosts.allow        //允许访问的客户机

/etc/hosts.deny        //拒绝访问的客户机

策略的配置格式:

两个文件的作用不同,但是配置格式相同。

格式:

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

1)。服务程序列表:

all        //代表所有服务器

单个服务程序,如“vsftpd , httpd”

2)。客户机地址列表

all        //代表任何客户机地址

LOCAL        //代表本机地址

单个IP地址,例如“192.168.1.50”

网络段地址,例如“192.168.4.0/255.255.255.0”

以“.”开始的域名,例如: .365.com,匹配365.com域中的所有主机

以“.”结束的网络地址,例如:192.168.4.  ,匹配整个4.0网段

嵌入通配符 * , ? ,牵着代表任意长度字符,后者仅代表一个字符。例如:“10.0.8.2*”匹配以10.0.8.2开头的所有IP地址,不可与以“.” 开始或结束的模式混用。

多个客户机地址组成的列表,例如:192.168.1. , 172.17.17. , .365.com

访问控制的基本原则

关于TCP wrappers 机制的访问策略,应用时遵循以下顺序和原则。

(1).首先检查/etc/hosts.allow 文件,如果找到匹配的策略,则允许访问。

(2.)否则继续检查/etc/hosts.deny 文件,如果找到相匹配的策略,则拒绝访问。

(3.)如果检查上述两个文件都找不到相匹配的策略,则允许访问。

TCP Wrappers 配置实例

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

例:

只希望从IP 地址为61.63.65.67 的主机或者位于 192.168.1.0/24 网段的主机访问sshd 服务,其他所有地址将被拒绝。

# vim /etc/hosts.allow

sshd:61.63.65.67,192.168.2.*

# vim /etc/hosts.deny

ssh:ALL


你可能感兴趣的:(ssh)