其他远程连接工具:telent、realVNC、RSH、RCP等,SSH更加安全可靠
一、配置OpenSSH/stelnet
1.配置服务端
# vim /etc/ssh/sshd_config //修改ssh配置文件
Port 22 //监听端口
AddressFamily any //使用哪种地址簇,any包含v4、v6,inet表示IPv4,inet6表示IPv6
ListenAddress 1.1.1.1 //监听地址
Protocol 2 //ssh 协议号
LoginGraceTime 2m //登录验证时间2分钟,即提示输入密码界面保持时间。
PermitRootLogin yes //允许root用户登录
MaxAuthTries 3 //密码最大重试次数为3次
PermitEmptyPasswords no //禁止空密码用户登录
PasswordAuthentication yes //进行密码验证
PubkeyAuthentication yes //进行密钥对验证
AuthorizedKeysFile .ssh/authorized_keys //进行密钥对验证需要指定公钥库数据文件
AllowUsers zhangsan lisi@1.1.1.1 //只允许张三李四登录,而且李四只能够从1.1.1.1登录,root用户将不能登录
#DenyUsers zhangsan lisi //拒绝张三李四登录 //与上一条不能同时使用
AllowGroups abc //只允许组abc登录
DenyGroups abc //只拒绝abc组登录
2.ssh客户端使用方法
命令程序ssh、scp、sftp
# yum install -y openssh-clients //客户端安装ssh客户端
ssh远程登录:
#ssh zhangsan@192.168.1.151 //使用linux系统登录其他linux系统
#ssh -p 8080 zhangsan@192.168.1.151 //指定端口进行登录
scp远程复制:
使用以下命令进行复制远程服务器数据到本地,远程服务器也需要安装openssh-clients
#scp root@192.168.1.151:/etc/passwd /home/pwd.txt //将192.168.1.151上的passwd文件复制到本地取名为pwd.txt,指定端口跟-P
# scp -r root@192.168.1.151:/var /home/ //将151服务器上的目录/var 复制到本地home下 ,-r选项表示复制目录
使用以下命令将本地目录aaa复制到服务器的/mnt下:
# scp -r /home/aaa/ root@192.168.1.151:/mnt/
sftp上传下载文件:
# sftp root@192.168.1.151 //使用类似于ftp的交互式方式进行上传下载文件
Connecting to 192.168.1.151...
root@192.168.1.151's password':
sftp> ls //查看到的是远程服务器用户宿主目录的内容
sftp> put /home/pwd.txt //将本地pwd.txt上传到服务器的宿主目录中
sftp> put /home/pwd.txt /home/ //将本地pwd.txt上传到服务器的/home目录
sftp> get /home/pwd.txt //下载服务器/home/pwd.txt文件到本地"当前目录",指执行进入sftp连接服务器时所在的目录
sftp> get /home/pwd.txt /var //下载服务器/home/pwd.txt文件到本地/var目录
sftp> lcd /home //本地目录切换
sftp> cd /home //远程服务器目录切换
3.登录验证方式
ssh支持"密码登录"和"密钥对验证登录"两种方式:
密码验证:默认启用密码验证,使用系统密码进行验证
密钥对验证:要求提供相匹配的密钥信息才能够通过验证,安全性更高
Linux客户端使用密钥对验证案例:
客户机创建密钥
# ssh-keygen -t rsa 或者ecdsa等 //回车后第一个界面要求输入密钥存放路径,回车默认选择,第二次要求输入添加密码验证,可以直接回车跳过,
将客户机公钥发送至服务器,方法1:
# scp .ssh/id_rsa.pub root@192.168.1.151:/tmp
在服务器中导入公钥
# mkdir -p /home/lisi/.ssh
# cp /tmp/id_rsa.pub /home/lisi/.ssh/authorized_keys
# vim /etc/ssh/sshd_config
PubkeyAuthentication yes //进行密钥对验证
AuthorizedKeysFile .ssh/authorized_keys //进行密钥对验证需要指定公钥库数据文件
# systemctl restart sshd
# ssh lisi@192.168.1.151 //如在创建密钥时设置有密码,那么回车后需要输入密码进行验证,否则直接登录进服务器
将客户机公钥发送至服务器,方法2:
# ssh-copy-id -i .ssh/id_rsa.pub wangwu@192.168.1.151 //直接将文件上传至服务器并进行添加到使用用户目录中
Windows 10客户端使用SecureCRT 7.3实现使用密钥对连接linux服务器:
1.先使用root用户以密码验证方式远程连接至服务器
2.在客户端CRT终端中生成密钥对:
A.在CRT终端的菜单栏中点击”Options”--->”Global Options”--->”SSH2”
再点击以下红框中的按钮实现创建密钥对文件:
下一步后可以选择密钥算法类型,类型有以下图片中的三种,分别为:
RSA: 目前应用最普遍,也是最为经典的一个数字签名加密算法,但是签名长,
产生密钥很麻烦。
DSA: 用于签名,而 RSA 可用于签名和加密。
ECDSA:ECDSA算法是ECC+DSA的结合体,相较于RSA数字签名算法,速度快,强度高,签名短,前景乐观。
算法类型选择后可选输入对于密钥加密的密码:
在下图的第一、第二个框中输入相同的密码串,如:”123456”,则表示在以后使用密钥对登录服务器时还得同时输入该密码串,从而实现双重加密,更加安全。当然也可以让这两个框为空,则表示不需要再次输入密码,仅通过密钥对即可登录。
第三个框的内容记录了当前windows客户端登录用户及主机名。
输入密码串后接着下一步,选择算法长度,理论上来讲,值越高,算法强度越高,越安全:
点击下一步等待进度条读完后继续点击下一步进入最后步骤:
上图中,前两项分别选择为”标准密钥”和”基于openssh密钥”,区别在于选择第一项”标准密钥”的话,需要在服务器中通过:“ssh-keygen -i -f Identity.pub >> authorized_keys”将标准密钥转换为基于openssh的密钥才可使用。因此此处直接选择第二种”openssh key format”
接着就是该密钥对的存放位置,默认存放在当前系统登录用户家目录中的”文档”中。
当点击”完成”完成创建密钥对后即可在”文档”中查看到两个密钥对文件,如下图:
Identity文件自己使用,Identity.pub上传至服务器的某个用户家目录下,用于实现该用户在当前windows客户端中不用输入密码即可实现访问的功能。
3.服务器配置使用客户端的密钥对文件:
A.上传刚刚生成的密钥对.pub文件上传至服务器/home下,可通过共享,或者rz上传方式实现。
[root@db home]# pwd
/home
[root@db home]# ls
Identity.pub
B.创建用户,设置密码:
[root@db home]# useradd dashuaige
[root@db home]# echo "123456" | passwd --stdin dashuaige更改用户 dashuaige 的密码 。
passwd:所有的身份验证令牌已经成功更新。
C.将以上传到服务器/home下的windows客户端的公钥移动至用户的家目录中并改为默认名称:
[root@db home]# mkdir /home/dashuaige/.ssh
[root@db home]# mv Identity.pub /home/dashuaige/.ssh/authorized_keys
[root@db home]#
D.开启服务器基于密钥对验证功能:
[root@db home]# vim /etc/ssh/sshd_config
第一个红框表示为开启密钥对验证功能,将默认的#号删除即可
第二个红框表示密钥对验证的密钥文件位置,之前已经放在了普通用户家目录中的该位置。
重启sshd服务。
[root@db home]# systemctl restart sshd
E.客户端验证:
通过以下方式连接,可不需要用户密码即连接至服务器
由于之前在创建密钥对时为密钥对设置了密码串,因此此处需要输入密码串”123456”。
需要注意:通过以上设置,只有administrator用户才能够使用密钥对方式登录,而windows客户端其他用户需要重新配置秘钥对文件并设置服务器才能够使用密钥对方式登录。
且使用的服务器用户名为”dashuaige”,因为只有该用户的家目录中存在密钥对文件,如果希望通过服务器的其他用户名也使用密钥对方式登录的话,可以将”dashuaige”家目录中的密钥对文件复制到其他用户的家目录并重启sshd服务即可。
二、TCP_Wrappers
TCP_Wrappers是一个工作在应用层的安全工具,它只能针对某些具体的应用或者服务起到一定的防护作用。
比如说ssh、telnet、FTP等服务的请求,都会先受到TCP_Wrappers的拦截。
工作原理:
TCP_Wrappers有一个TCP的守护进程叫作tcpd。以telnet为例,每当有telnet的连接请求时,tcpd即会截获请求,
先读取系统管理员所设置的访问控制文件,合乎要求,则会把这次连接原封不动的转给真正的telnet进程,由telnet完成后续工作;
如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供telnet服务。
设置访问控制策略
策略格式:服务列表:客户机地址列表
服务列表 ——
多个服务以逗号分隔,ALL 表示所有服务
客户机地址列表
多个地址以逗号分隔,ALL表示所有地址
允许使用通配符 ? 和 *
网段地址,如 192.168.4. 或者 192.168.4.0/255.255.255.0
区域地址,如 .abc.com
注意:对于已经启用的程序,可能不会立即生效
策略的应用顺序
先检查hosts.allow,找到匹配则允许访问
否则再检查hosts.deny,找到则拒绝访问
若两个文件中均无匹配策略,则默认允许访问
配置文件格式写法:
sshd:192.168.1.0
sshd:192.168.1.
sshd:192.168.1.*
sshd,vtsftp:1.1.1.1
all:192.168.1.1
判断哪些程序可以使用该防火墙:
使用命令
# ldd /usr/sbin/sshd //在输出结果中出现了"libwrap"表示可以使用Wrappers防火墙
linux-vdso.so.1 => (0x00007fffc01ff000)
libfipscheck.so.1 => /lib64/libfipscheck.so.1 (0x00007fc2e519b000)
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007fc2e4f90000)
libaudit.so.1 => /lib64/libaudit.so.1 (0x00007fc2e4d73000)
libpam.so.0 => /lib64/libpam.so.0 (0x00007fc2e4b65000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc2e4961000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fc2e4741000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007fc2e43a7000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fc2e41a4000)
libz.so.1 => /lib64/libz.so.1 (0x00007fc2e3f8d000)
.................