SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层与应用层之间对网络连接进行加密。

如何检测linux是否安装openssl(Linux安全之SSL基础)(1)

Linux安全之SSL基础


1. SSH 协议

**ssh**是secure shell的首字母缩写,默认工作在TCP的22端口之上,安全的远程登录的一种协议。

**OpenSSH**就是ssh协议的开源实现,用于取代传统的不加密工作在TCP的23号端口上的telnet工具的,同时取代了其他远程复制等工具的实现。dropbear是ssh协议的另一个开源实现,适用于较小的网络中。

SSH 协议版本

两种认证机制

dropbear

# 创建Key,使用2048或者默认长度 [root@localhost ~]# dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048 [root@localhost ~]# dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key # 启动dropbear的ssh服务 [root@localhost ~]# dropbear -p [ip:]port -F -E [root@localhost ~]# dropbear -p :2222 # 后台运行 [root@localhost ~]# dropbear -p :2222 -F -E # 前台运行 # 客户端访问,可以用系统的ssh,也可以用dropbear的客户端dbclient [root@localhost ~]# ssh -p 2222 root@127.0.0.1 [root@localhost ~]# dbclient -p 2222 root@127.0.0.1


2. OpenSSH2.1 OpenSSH 基础

**OpenSSH**也是一个基于C/S架构的用具,同时还能够实现很多如ssh、scp、sftp等的功能。客户端工具众多,如商业的xshell以及securecrt,开源的putty,服务器端的多为Linux下的sshd。

客户端组件

服务器端组件

连接过程

如何检测linux是否安装openssl(Linux安全之SSL基础)(2)

Linux安全之SSL基础


2.2 SSH 命令的基本使用

格式

选项

实例展示

# 使用@登录远程主机 [root@localhost ~]# ssh root@172.16.242.181 # 使用-l登录远程主机 [root@localhost ~]# ssh -l root 172.16.242.181 # 不登录远程主机,只是执行一条命令 [root@localhost ~]# ssh root@172.16.242.181 'hostname'

# 一次完整的SSH的用户名、密码登录 # 会在家目录下生成一个.ssh的隐藏文件夹,其中有一个known_hosts用来保存我们连接过的主机以及认证秘钥 [root@localhost ~]# ssh root@172.16.242.181 The authenticity of host '172.16.242.181 (172.16.242.181)' can't be established. RSA key fingerprint is 2a:83:14:68:16:84:e0:0c:4a:2a:81:cd:9f:ae:ce:0a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.16.242.181' (RSA) to the list of known hosts. root@172.16.242.181's password: Last login: Fri Jun 24 15:10:14 2016 from 172.16.242.1 [root@localhost ~]# cat .ssh/known_hosts 172.16.242.181 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArpD/NWo1g0xtUfEQH1vkG2aHYenkTJpiNGj1e/1rY3kQQpocL75EVIROVNSlqtbUiUkoy7fsxs0lfm maDoGbMeuUQQBV/HSeBGuq3Jjfh 7ymR8iiSNNZLmqQmBpfG7/QG0WU1gXWeO1V3CJNjlbWQr/Px6zilypSeYaM rS8SkekOzZpWgFDSUg3dFBmN5HhY3 fyWWvJlk1aJRxJW5T4dnecz LLNnwWu6s880HBUY f0ahdknGq8yKz0eeaTTUqf5qhSALiU0L3 ApocSINaZcuB 1X1IE NRqpaJRBrXuwFjTQ99pBoPkRbdSGTkW0j5eC7U8bfzSydrmlCDQ==


2.3 基于密钥的认证方式

格式

实例展示

# id_rsa为私钥,id_rsa.pub为公钥 [root@localhost ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: f3:4c:0d:41:78:e5:50:a6:00:c6:bf:1d:ad:3f:0f:bd root@localhost.localdomain The key's randomart image is: --[ RSA 2048]---- | .o..o o | | .. ...* | | . .o.. | | . .o. | | So.o. | | .=o . | | o.. . | | o. . | | oE | ----------------- [root@localhost ~]# cd .ssh/ [root@localhost .ssh]# ls id_rsa id_rsa.pub known_hosts

# 同时,也可以使用选项生成公私钥对 [root@localhost .ssh]# ssh-keygen -t rsa -P '' -f '/root/.ssh/' Generating public/private rsa key pair. /root/.ssh/ already exists. Overwrite (y/n)? y open /root/.ssh/ failed: Is a directory. Saving the key failed: /root/.ssh/.

# 把公钥传输至远程服务器对应用户的家目录 # 输入用户名以及密码即可完成 [root@localhost .ssh]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.242.100


2.4 scp 命令的基本使用

格式

两种情形

常用选项

sftp命令

[root@localhost ~]# sftp root@172.16.242.181 Connected to 172.16.242.181. sftp> help Available commands: bye Quit sftp ...

实例展示

# 下载 [root@localhost ~]# scp root@172.16.242.100:/etc/fstab /tmp/fstab.txt fstab 100% 779 0.8KB/s 00:00 # 上传 [root@localhost ~]# scp /etc/fstab root@172.16.242.181:/tmp/fstab


2.5 rsync 命令的基本使用

基于 ssh 实现高效率的远程系统之间复制文件,使用安全的 shell 连接做为传输方式,比 scp 更快。

选项

实例演示

# 复制目录和目录下文件 rsync –av /etc server1:/tmp # 只复制目录下文件 rsync –av /etc/ server1:/tmp


3. SSH 服务的最佳实践
4. SSH 服务的配置文件4.1 客户器端配置文件

[root@localhost ~]# cat /etc/ssh/ssh_config ... Host * - GSSAPIAuthentication yes - ForwardX11Trusted yes - SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES - SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT - SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE - SendEnv XMODIFIERS


4.2 服务器端配置文件
5. telnet 命令的基本使用

telnet 是基于 S/C 架构的工具,服务器端 telnet-server,客户端为 telnet,用到的时候需要自己独立安装。

# 服务端安装telnet程序 [root@localhost ~]# yum install -y telnet-server 已安装: telnet-server.x86_64 1:0.17-48.el6 作为依赖被安装: xinetd.x86_64 2:2.3.14-40.el6 完毕!

# 服务端启动telnet,因为telnet是工作的超级守护进程中的瞬时守护进程,所以启动方式不同 [root@localhost ~]# chkconfig telnet on [root@localhost ~]# service xinetd restart Stopping xinetd: [FAILED] Starting xinetd: [ OK ] [root@localhost ~]# ss -tunl | grep :23 tcp LISTEN 0 64 :::23 :::*

# 在CentOS6中,xinetd为超级守护进程,telnet是运行在xinetd之内的 # 超级守护进程xinetd就是为了那些可能长时间不需要使用的服务监听,一旦有需求才启动对应的服务进行通信。 # 瞬时守护进程就是为了那些可能长时间不需要使用,如果单独分一个进程跑太浪费性能了,所以使用超级守护进程xinetd进行统一管理 # 独立守护进程就是那些自己管理自己的程序,sshd就是一个独立守护进程 [root@localhost ~]# chkconfig --list ... xinetd - 0:关闭 - 1:关闭 - 2:关闭 - 3:启用 - 4:启用 - 5:启用 - 6:关闭 基于 xinetd 的服务: - rsync: - 关闭 - telnet: - 启用 - time-dgram: - 关闭 - time-stream: - 关闭 ...

# 确保在客户端安装了telnet的客户端程序,并且确保服务端iptables中没有过滤23号端口的请求 # telnet不允许root用户直接登录,需要使用普通用户登录 [root@localhost ~]# yum install -y telnet [root@localhost ~]# telnet 172.16.242.181 Trying 172.16.242.181... Connected to 172.16.242.181. Escape character is '^]'. CentOS release 6.7 (Final) Kernel 2.6.32-573.26.1.el6.x86_64 on an x86_64 login:


文章作者: Escape

文章链接: https://www.escapelife.site/posts/c5aea51c.html

,