2020.6.16网络配置与应用相关SSH服务和nc工具命令

**

网络配置与应用

**

网络工具:

2020.6.16网络配置与应用相关SSH服务和nc工具命令_第1张图片

网络连接的方式不同(桥接,NAT网络地址转换,Host-Only方式):
1.VMware在桥接模式下,虚拟机使用VMware为该虚拟机分配的虚拟网卡,宿主机使用自身的物理网卡(有线或无线都行),并且默认使用虚拟交换机VMnet0来连接虚拟机的虚拟网卡和宿主机的物理网卡。在此模式下没有局域网动态地址分配DHCP服务器,也没有网络地址转换NAT服务器,虚拟交换机没有连接DHCP服务器和NAT服务器。宿主机的网口(插网线的那个口)与宿主机物理网卡相连,同时也就和虚拟机的虚拟网卡相连,也就是和虚拟交换机相连,所以虚拟机相当于在宿主机所在局域网内的一个单独的主机,他的行为和宿主机是同等地位的,没有依存关系。原理图如下:2020.6.16网络配置与应用相关SSH服务和nc工具命令_第2张图片
2.NAT网络地址转换模式:2020.6.16网络配置与应用相关SSH服务和nc工具命令_第3张图片
注意:红色的方框是nat服务器,nat服务器有两个网卡一个是虚拟内网网卡,一个是宿主机的物理网卡。禁用VmNet8,虚拟机仍然可以上网,ping通主机,但是主机ping不通虚拟机的网卡。备注:vmNet8存在的意义在于实现主机和虚拟机的通信。弥补了NAT协议中外网不能访问局域网的缺点。
Host-Only方式:2020.6.16网络配置与应用相关SSH服务和nc工具命令_第4张图片
推荐使用命令行(nmcli等来配置)( 学习该网址中的相关linux系统的网络配置https://www.cnblogs.com/klb561/p/9185532.html)
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第5张图片

**

*ubuntu(与centos,redhat等不同):

在(/etc/network/interfaces中可以配置网卡)
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第6张图片

在Redhat和centous中(/etc/syscongfig/networks-scripts/ifcfg-eth0)
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第7张图片
/proc
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第8张图片
该目录下存在当前进程

/proc/net/dev存在当前运行网卡的信息
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第9张图片

ssh服务学习

SSH 是 Secure Shell Protocol 的简写,由 IETF 网络工作小组**(Network Working Group )**制定;在进行数据传输之前,SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输。确保了传递的数据安全。
SSH是专为远程登录会话和其他网络服务提供的安全性协议。利用 SSH 协议可以有效的防止远程管理过程中的信息泄露问题,

在当前的生产环境运维工作中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。

在默认状态下,SSH服务主要提供两个服务功能:

一是提供类似telnet远程联机服务器的服务,即上面提到的SSH服务。
另一个是类似FTP服务的sftp-server,借助SSH协议来传输数据的.提供更安全的SFTP服务(vsftp,proftp)。

1.1 SSH加密技术说明

  	简单的说,SSH加密技术就是将人类可以看得懂的数据,通过一些特殊的程序算法,把这些数据变成杂乱的无意义的信怠,然后,通过网络进行传输,而当到了目的地后,在通过对应的解密算法,把传过来的加密的数据信怠解密成加密前的可读的正常数据。因此,当数据在互联网上传输时即使被有心的黑客监听窃取了,也很难获取到真正黑要的数据。

当前,网络上的数据包加密技术一般是通过所谓的一对公钥与私钥(PublickeyandPivatekey)组合成的密钥对进行加密与解密操作。A-Server要给B_Client传数据,首先会通过本地的公钥加密后再到发到网络上传输。而加密的数据到达B_Client端后,再经由B_Client本地的私钥将加密的数据解密出来。由于在intemet上传输过程中的数据是加密过的,所以,传输的数据内容一般来说是比较安全的。

**

1.1.1 ssh实现安全连接建立,利用钥匙和锁头

**

  1. 钥匙=私钥 锁头=公钥,私钥可以解密公钥
  2. 公钥可以再网络中传输,私钥再本地主机保存
    **

1.1.2 ssh加密算法v1漏洞:

** 密钥不更换v2 定期更换密钥利用Diffie-Hellman机制定期更新密钥(Diffie-Hellman机制详解 解)https://blog.csdn.net/lee244868149/article/details/51790397
**

1.2 ssh知识要点

** ssh是安全的加密协议,用于远程链接linux服务器
ssh 默认端口是22,安全协议版本sshv2,出来2之外还有1(有漏洞)
ssh服务端主要包括两个服务功能 ssh远程链接和sftp服务
linux ssh 客户端包括ssh 远程链接命令,以及远程拷贝scp命令等
**

1.3 SSH服务软件详细说明

**1.3.1 什么是SSH服务
SSH服务端是一个守护讲程 (daemon).他在后台运行并响应来自客户端的连接请求。 SSH服务端的讲程名为sshd,负责实时监听远程SSH客户端的远程连接请求,并进行处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。这个SSH服务就是我们前面基础系统优化中保留开机自启动的服务之一。
ssh客户端包含ssh以及像scp(远程拷贝) slogin(远程登陆) sftp(安全FTP文件传输)等应用程序。

ssh的工作机制大致是本地的ssh客户端先发送一个连接请求到远程的ssh服务端,服务端检查连接的客户端发送的数据包和IP地址,如果确认合法,就会发送密钥给 SSH的客户端,此时,客户端本地再将密钥发回给服务端,自此连接建立。(类似三次握手)

1.3.2 ssh软件安装客户端
[root@nfs01 ~]# rpm -qf ‘which ssh
openssh-clients-5.3p1-122.el6.x86_64
服务端软件
[root@nfs01 ~]# rpm -qf ‘which sshd
openssh-server-5.3p1-122.el6.x86_64
1.3.3 openssh-clinets 软件的主要内容:
[root@nfs01 ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config —ssh客户端配置文件
/usr/bin/.ssh.hmac/usr/bin/scp —远程复制命令
/usr/bin/sftp —远程文件传输服务
/usr/bin/slogin —远程登陆命令
/usr/bin/ssh —ssh远程登陆管理主机
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id —ssh服务分发公钥命令
/usr/bin/ssh-keyscan
1.3.4 openssh-server 软件的主要内容
[root@nfs01 ~]# rpm -ql openssh-server
/etc/rc.d/init.d/sshd #ssh服务启动脚本
/etc/ssh/sshd_config #ssh服务配置文件
/etc/sysconfig/sshd #ssh创建密钥有关
/usr/sbin/.sshd.hmac #ssh加密算法有关文件
/usr/sbin/sshd #ssh服务进程启动命令
注意:使用sshd采用绝对路径进行启动
[root@test ~]# sshd
sshd re-exec requires execution with an absolute path

1.4 ssh服务配置文件说明

  1. 配置文件中所有注释信息,表示默认参数配置
  2. 配置文件中#空格 后面内容表示说明信息
    #参数 表示配置参数信息
  3. 配置文件参数信息修改后,一旦变为注释,即还原为默认配置

1.4.1 ssh服务配置文件路径

vim /etc/ssh/sshd_config
修改SSH服务的运行参数,是通过修改配置文件/etc/ssh/sshd_config实现的。

一般来说SSH服务使用默认的配置已经能够很好的工作了,如果对安全要求不高,仅仅提供SSH服务的情况,可以不需要修改任何配置。
1.4.2 配置文件中常用的配置说明
[root@test ~]# vim /etc/ssh/sshd_config
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
#This is the sshd server system-wide configuration file. See
#sshd_config(5) for more information. This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
#The strategy used for options in the default sshd_config shipped with
#OpenSSH is to specify options with their default value where
#possible, but leave them commented. Uncommented options change a# default value.
#OpenSSH is to specify options with their default value where
#possible, but leave them commented. Uncommented options change a
# default value.
Port 25113 #端口
ListenAddress 10.0.0.41 #监听地址(本地网卡地址),指定本地网卡那个网卡提供服务
PermitRootLogin no #是否允许root用户登陆#PermitEmptyPasswords no #禁止空密码登陆
#UseDNS no #不使用DNS
GSSAPIAuthentication no #API认证# 连接慢的解决#AddressFamily any #指定监听ipv4地址,或是ipv6地址,或者所有都监听
配置文件内容说明:(题主因为html格式问题将描述信息的空格去掉)
井号(#)注释的参数信息为默认配置
井号(#)后面有空格的为描述信息
井号(#)后面没有空格的为参数信息
另外:配置文件参数信息修改后,一旦变为注释,即还原为默认配置
1.4.3 ListenAddress监听地址的说明
sshd_config配置文件中实际监听本地的网卡,并非网络地址

监听地址只能监听本地网卡上配置的地址,监听的网卡可以对请求做出相应,为未监听的网卡不响应请求。
1.4.4 SSH配置文件相关参数详细说明
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第10张图片

1.5 SSH服务认证类型

0.1 基于口令认证方式
0.2 基于密钥认证方式
1.5.1 基于密码的认证类型
基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。
此时,联机过程中所有传输的数据都是加密的。
演示了 SecureCR及ssh客户端连接,口令验证的测试。[root@test ~]# ssh 10.0.0.250The authenticity of host ‘10.0.0.250 (10.0.0.250)’ can’t be established.RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added ‘10.0.0.250’ (RSA) to the list of known [email protected]’s password: #需要输入密码
Last login: Mon Oct 16 21:13:58 2017 from 10.0.0.1
[root@test ~]#
1.5.2 基于密钥的安全认证方式
基于密钥的安全验证方式是指,需要依靠密钥,也就是必须事先建立一对密钥对,然后把公用密钥(锁头)(Public key)放在需要访问的目标服务器上,另外,还需要把私有密钥(钥匙)(Private key)放到SSH的客户端或对应的窖户端服务器上。

私钥不能在网络中传输—私钥可以解密公钥

公钥可以再网路中传输—公钥不能解密私钥

此时,如果要想连接到这个带有公用密钥的SSH服务器,客户端SSH软件或者客户端服务器就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下寻找事先放上去的对应用户的公用密钥,然后把它和连接的SSH客户端发送过来的公用密钥进行比较。如果两个密钥一致,SSH服务器就用公用密钥加密"质询"(challenge)并把它发送给SSH客户端。
1.6 基于密钥配置登录https://blog.csdn.net/uunubt/article/details/81509551
**

1.7 使用sftp进行基于密钥的文件传输

1.7.1 sftp简介
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的网络的加密方法。sftp 与 ftp 有着几乎一样的语法和功能。SFTP 为 SSH的其中一部分.
1.7.2 sftp命令说明
[root@m01 ~]# sftp -oPort=22 172.16.1.31
Connecting to 172.16.1.31…
sftp>
说明:
-o 连接的时候指定选项Port=22
端口指定为22、
1
.7.3 sftp使用参数说明**
操作远程服务器ls
显示远端主机的列表cd
切换远程的工作目录pwd
显示远程的工作目录操作本地服务器lls
显示本地主机的列表lcd
切换本地的工作目录lpwd
查看本地目录信息上传下载文件参数get
— 表示从远程服务器下载数据(单个文件)mget
— 表示下载多个文件put
— 表示从本地服务器上传数据(单个文件)mput
— 表示上传多个文件查看帮助的方式:sftp> help
显示帮助信息
1.8 ssh相关重点知识总结
ssh协议:sshd—远程连接(sshd),sftp
为加密的远程连接协议,相关软件有openssh.openssh—https。
默认端口22 协议版本1X和2.x,2.x更安全。
了解SSH协议原理(ssh连接过程X 服务端ssh远程连接服务,sftp服务。
sshd守护进程,开机要自启动。
ssh客户端包含ssh,scp,sftp命令。
ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登录的原理。
ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP
ssh密钥对,公钥(publickey)在服务器端,比喻就是锁头,私钥(privatekey)在客户端,比喻就是钥匙。

第2章 重点知识补充

**

2.1 一个服务始终无法启动

01.服务的查日志/系统日志
02.检查服务端口有没有冲突

2.2 【企业面试题】:给你一个端口如何命令行查出对应的服务是什么?

测试服务端口有没有开启
ss -lntup|grep 22
netstat -lntup|grep -w “22”
lsof -i:22
grep “\b22/\b” /etc/services
nmap -p 22 172.16.1.41
nc 172.16.1.41 22
telnet 172.16.1.41 22

2.2.1 【企业面试题】根据进程名查看对应的端口是什么?

netstat/ss –lntup|grep 进程或服务名字
2.3 ssh入侵案例说明被入侵实例http://phenixikki.blog.51cto.com/7572938/1546669
IP何防止SSH登录入侵小结:
1、用密钥登录,不用密码登陆
2、牤牛阵法:解决SSH安全问题
a.防火墙封闭SSH,指定源IP限制(局域网、信任公网)
b.开启 SSH 只监听本地内网 IP ( ListenAddress 172.16.1.61 )
3、尽量不给服务器外网ip
4、最小化(软件安装-授权)
5、给系统的重要文件或命令做一个指纹
6、给他锁上 chattr +i +a

linux - netcat网络工具-nc

nc是netcat工具的命令,是一个很好用的网络工具。比如,可以用来端口扫描,文件传输等网络功能。我们经常需要扫描端口是否开放,来判断访问策略是否生效,或者服务是否正常。
nc -z -w -v -n -t 192.168.1.100 1-2000
-z 表示连接立即关闭,不进行数据交换。
-v 表示输出检测结果,
-vv表示更详细的信息
-w 表示执行超时时间,如果不指定就是tcp超时的时间
-n 表示不反向解析IP地址的域名
-t 表示TCP检测,默认就是TCP检测;如果需要检测UDP,需要制定-u的参数

文本传输

我们可以通过nc命令监听一个端口,来接受客户端的会话连接。
nc -l -t -p 9000
-l 表示启动监听
-p 表示监听端口,如果不指定会监听一个随机端口
-t 表示TCP检测,默认就是TCP检测;如果需要检测UDP,需要制定-u的参数

客户端连接

nc 127.0.0.1 9000
这时候客户端输入文本信息回车就可以发送到服务端。这个通讯是单线的,一旦有人连接,第二个会话就连接不上。

文件传输

服务端传输
nc -l -p 9000 < a.txt

客户端接收

nc 192.168.1.100 > a.txt
如果是大文件可能传输比较久,可以通过md5对比来查看文件是否传输完成
同理,也可以是客户端传输到服务端,只要重定向符号换一下即可。

目录传输

目录需要先经过打包成数据流才能进行传输服务端:
tar -cvf - ddd/ | nc -l -p 9000
客户端:
nc -n 192.168.1.100 9000 | tar -xvf -
也可以进行压缩以后再传输服务端:
tar -cvf - ddd/ | bzip2 -z | nc -l -p 9000
客户端:
nc -n 192.168.1.100 9000 | bzip2 -d | tar -xvf -加密传输使用mcrypt工具

加密数据

服务端:
mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l -p 9000
客户端
nc 192.168.1.100 9000 | mcrypt –flush –bare -F -q -d -m ecb > file.txt

总结

nc还有很多的强大的功能,但是例如文件传输,还是用专门的工具比较好用,比较靠谱。2020.6.16网络配置与应用相关SSH服务和nc工具命令_第11张图片
2020.6.16网络配置与应用相关SSH服务和nc工具命令_第12张图片

你可能感兴趣的:(linux学习,每日进步,linux,ssh,ubuntu)