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] [email protected]address
如果端口不是默认的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 [email protected]
以上三种命令只是简单介绍,里面有更多的参数和形式要发掘,详细信息可以查询资料或者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
例:遇到交互一般直接回车就好了。
确认密钥是否存在:
# 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