根据面试经验写在前面,适合小白:既然岗位名称是网络信息安全工程师,那么网络部分是一定有涉及到的,所以大家面试前记得补一补网络协议,以及网络故障、如何排查等案例,或者内容,避免一问三不知。还有一个是Linux系统的操作,安全设备有没有使用过等。
建议最好是去复现一到两个案例,熟悉相关的工具操作。熟悉攻防知识,了解一下护网、等保。
如果有工作经验,那无可避免会问,离职原因、未来规划等
一、网络安全
-
网络安全的概念和重要性是什么?
网络安全是指保护计算机网络不受未经授权的访问、破坏、窃取或篡改的一系列技术、政策和实践。随着互联网的普及和信息化的加速发展,网络安全问题日益突出,已经成为全球范围内的重要问题。
网络安全的重要性不言而喻。随着互联网的普及,人们的生活和工作已经离不开网络。然而,网络安全问题却时刻威胁着我们的信息安全和财产安全。网络安全问题的发生不仅会给个人和企业带来巨大的损失,还会对国家的安全和稳定造成严重的影响。因此,保障网络安全已经成为国家安全的重要组成部分。
-
常见的网络攻击方式有哪些?
网络攻击(Cyber Attacks,也称赛博攻击)是指针对计算机信息系统、基础设施、计算机网络或个人计算机设备的,任何类型的进攻动作。对于计算机和计算机网络来说,破坏、揭露、修改、使软件或服务失去功能、在没有得到授权的情况下偷取或访问任何一计算机的数据,都会被视为于计算机和计算机网络中的攻击。
网络攻击的种类
1、主动攻击
主动攻击会导致某些数据流的篡改和虚假数据流的产生。这类攻击可分为篡改、伪造消息数据和终端(拒绝服务)。
(1)篡改消息
篡改消息是指一个合法消息的某些部分被改变、删除,消息被延迟或改变顺序,通常用以产生一个未授权的效果。如修改传输消息中的数据,将“允许甲执行操作”改为“允许乙执行操作”。
(2)伪造
伪造指的是某个实体(人或系统)发出含有其他实体身份信息的数据信息,假扮成其他实体,从而以欺骗方式获取一些合法用户的权利和特权。
(3)拒绝服务
拒绝服务即常说的DoS(Deny of Service),会导致对通讯设备正常使用或管理被无条件地中断。通常是对整个网络实施破坏,以达到降低性能、终端服务的目的。这种攻击也可能有一个特定的目标,如到某一特定目的地(如安全审计服务)的所有数据包都被阻止。
2、被动攻击
被动攻击中攻击者不对数据信息做任何修改,截取/窃听是指在未经用户同意和认可的情况下攻击者获得了信息或相关数据。通常包括窃听、流量分析、破解弱加密的数据流等攻击方式。
(1)流量分析
流量分析攻击方式适用于一些特殊场合,例如敏感信息都是保密的,攻击者虽然从截获的消息中无法的到消息的真实内容,但攻击者还能通过观察这些数据报的模式,分析确定出通信双方的位置、通信的次数及消息的长度,获知相关的敏感信息,这种攻击方式称为流量分析。
(2)窃听
窃听是最常用的手段。应用最广泛的局域网上的数据传送是基于广播方式进行的,这就使一台主机有可能受到本子网上传送的所有信息。而计算机的网卡工作在杂收模式时,它就可以将网络上传送的所有信息传送到上层,以供进一步分析。如果没有采取加密措施,通过协议分析,可以完全掌握通信的全部内容,窃听还可以用无限截获方式得到信息,通过高灵敏接受装置接收网络站点辐射的电磁波或网络连接设备辐射的电磁波,通过对电磁信号的分析恢复原数据信号从而获得网络信息。尽管有时数据信息不能通过电磁信号全部恢复,但可能得到极有价值的情报。
由于被动攻击不会对被攻击的信息做任何修改,留下痕迹很好,或者根本不留下痕迹,因而非常难以检测,所以抗击这类攻击的重点在于预防,具体措施包括虚拟专用网VPN,采用加密技术保护信息以及使用交换式网络设备等。被动攻击不易被发现,因而常常是主动攻击的前奏。
被动攻击虽然难以检测,但可采取措施有效地预防,而要有效地防止攻击是十分困难的,开销太大,抗击主动攻击的主要技术手段是检测,以及从攻击造成的破坏中及时地恢复。检测同时还具有某种威慑效应,在一定程度上也能起到防止攻击的作用。具体措施包括自动审计、入侵检测和完整性恢复等。
攻击的方法主要有:
-
口令入侵
-
特洛伊木马
-
WWW欺骗
-
电子邮件
-
节点攻击
-
网络监听
-
黑客软件
-
安全漏洞
-
端口扫描
-
网络安全防御措施有什么?
1.加强网络安全意识:加强网络安全意识是保障网络安全的基础。个人和企业应该加强网络安全知识的学习,提高自我保护意识。
2.加强网络安全技术:加强网络安全技术是保障网络安全的重要手段。个人和企业应该采取一系列的技术手段,包括防火墙、杀毒软件、加密技术等,保障网络安全。
3.加强网络安全管理:加强网络安全管理是保障网络安全的重要保障。个人和企业应该建立完善的网络安全管理制度,加强对网络安全的监管和管理。
4.加强国际合作:加强国际合作是保障网络安全的重要保障。各国应该加强合作,共同应对网络安全威胁。
-
计算机病毒和恶意软件有哪些?
计算机病毒和恶意软件是指以破坏计算机系统为目的的程序,它们可以悄悄地进入计算机并进行操纵、窃取数据、删改文件等活动,对用户的计算机安全造成威胁。计算机病毒一般指程序代码,而恶意软件包括各种类型的计算机病毒、蠕虫、木马、广告软件、间谍软件、僵尸网络等。
计算机病毒的种类繁多,根据不同的分类标准可以进行分类。按照传播方式可分为:磁盘病毒、邮件病毒、网络蠕虫、下载病毒等。按照破坏形式可分为:文件病毒、引导扇区病毒、宏病毒、多段病毒等。按照攻击目标可分为:个人电脑病毒、服务器病毒、嵌入式系统病毒等。
计算机恶意软件种类也众多,每种恶意软件都有不同的特点和攻击方式。木马软件可以隐藏在合法程序中,盗取用户信息、进行远程控制等;间谍软件可以记录用户的网络活动、截取密码等;广告软件会在计算机上弹出大量广告,影响用户体验;勒索软件会对用户重要数据进行加密,若不付款则无法解密。另外,近年来出现的一种攻击方式是挖矿软件,它利用计算机计算力进行加密货币的挖掘。
为了防范计算机病毒和恶意软件的攻击,用户需要采取一些必要的措施。首先,要安装杀毒软件并及时更新病毒库;其次,要注意不打开来自陌生人或不明来源的邮件和附件;此外,还要保持操作系统和软件的更新,避免安全漏洞;在使用网银等涉及财务交易的应用时,要使用安全通道,切勿使用公共网络;最后,若发现计算机出现异常可以及时寻求专业人员的帮助,避免由于操作不当导致数据丢失。
-
网络安全法律法规有什么?
1.《网络安全法》2.《互联网信息服务管理办法》3.《计算机信息网络国际联网安全保护管理办法》4.《计算机信息系统安全保护条例》5.《计算机信息系统国际联网保密管理规定》
二、网络协议
-
什么是TCP/IP协议?它包括哪些层次?请简要介绍每个层次的作用。
答:TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中
tcp/ip协议包含四层:1、应用层;2、传输层;3、网络层;4、网络接口层。应用层位于TCP/IP协议的第一层,是直接为应用进程提供服务的;运输层位于协议的第二层,在整个TCP/IP协议中起到了中流砥柱的作用;网络层位于协议的第三层;网络接口层位于协议的第四层。
应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的:
- 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。
- 应用层还能加密、解密、格式化数据。
- 应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。
网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。该层负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。该层负责接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
协议特点:
TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:
- 协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统。
- 独立于网络硬件系统,可以运行在广域网,更适合于互联网。
- 网络地址统一分配,网络中每一设备和终端都具有一个唯一地址。
- 高层协议标准化,可以提供多种多样可靠网络服务。
-
什么是HTTP协议?请简要介绍HTTP协议的工作原理和常见的状态码。
Hyper Text Transfer Protocol(超文本传输协议)的缩写,是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。
HTTP 是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP工作原理:
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即web服务器发送所有请求。
web服务器有:Apache服务器,IIS服务器,Nginx
Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口。
HTTP三点注意事项:
HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP消息结构:
HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。
一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。
一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
客户端请求消息:
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
服务器请求消息:
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
HTTP请求办法:
根据 HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
HTTP状态码:
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。
下面是常见的 HTTP 状态码:
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误
HTTP状态码分类:
HTTP 状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。响应分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):
HTTP状态码列表:
HTTP头和请求头信息:
HTTP消息又称为HTTP头(http header),由四部分组成,分别是请求头、响应头、普通头、和实体头。从名称看我们就知道他们所处的位置。请求头只出现在HTTP请求中。
HTTP响应头信息:
HTTP content-type
Content-Type(内容类型),一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 PHP 网页点击的结果却是下载一个文件或一张图片的原因。
Content-Type 标头告诉客户端实际返回的内容的内容类型。
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml: XML数据格式
application/atom+xml :Atom XML聚合格式
application/json: JSON数据格式
application/pdf:pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : < form encType=“” >中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式
-
什么是DNS协议?请简要介绍DNS协议的工作原理和常见的记录类型。
域名系统英文全称为:Domain Name System 缩写为DNS。是一种可以将域名和IP地址相互映射的层次结构分布的数据库系统。绝大多数的防火墙和网络都会开放DNS服务,DNS数据包不会被拦截,因此可以基于DNS协议建立隐蔽信道,从而顺利穿过防火墙,在客户端和服务器之间传输数据。
DNS记录类型
1、NS 记录(域名服务) ─ 指定解析域名或子域名的DNS服务器。
2、MX 记录(邮件交换) ─ 指定接收信息的邮件服务器。
3、A 记录(地址) ─ 指定域名对应的 IPv4 地址记录。
4、AAAA 记录(地址) ─ 指定域名对应的 IPv6 地址记录。
5、CNAME(规范) ─ 一个域名映射到另一个域名或 CNAME 记录(what21.com 指向 www.what21.com )或映射到一个 A记录。
6、PTR 记录(反向记录) ─ PTR 记录用于定义与 IP 地址相关联的名称。 PTR 记录是 A 或 AAAA 记录的逆。 PTR 记录是唯一的,因为它们以 .arpa 根开始并被委派给 IP 地址的所有者。
DNS服务的作用
将域名解析为IP 地址
客户端向DNS服务器(DNS服务器有自己的IP地址)发送域名查询请求
DNS服务器告知客户机Web服务器的IP 地址
客户机与Web 服务器通信
-
什么是SMTP协议?请简要介绍SMTP协议的工作原理和常见的命令。
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。
SMTP协议的基本介绍
SMTP 是一种TCP协议支持的提供可靠且有效电子邮件传输的应用层协议。SMTP 是建立在 TCP上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。
SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP 邮件中继”。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。
在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一条 IP 地址。
在传输文件过程中使用端口:25
SMTP是因特网电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服 务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。
SMTP协议与人们用于面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务 器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不在工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。 在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP可以指望由 TCP提供的可靠数据传输服务把该消息无错地传送到服务器。如果客户还有其他邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程;否 则,它就指示TCP关闭该连接。
SMTP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。但是你只须记住下面的内容--该协议的基本命令和方法就行了。
协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计算机返回一些信息。客房端发送的命令以及服务器的回应都是字符串,你并不需要特别的软件就能读出它们。如果你仔细看过WinsockTerminal示例程序的源代码,你就会发现这一点。现在让我们用这个示例程序来向自己发一封电子邮件吧。
运行示例程序,单击"Connect"按钮,在"Connectto..."对话框中输入你的电子邮件服务器的地址,选择SMTP选项。最后按"Connect"按钮。如果连接成功,Winsock控件会产生Connected事件,在状态栏中也可看到连接成功的信息。在主文本窗口中你将看到从服务器返回的文本。该文本包含一个三位数的代码及描述,例如:
220-ns.cinfo.ruSendmail8.6.12/8.6.9readyatWed,22Apr199822:54:41+0300
220ESMTPspokenhere
不必太过留意这些描述。因为这些描述可能会因服务器而异。你只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的第一个命令。
向服务器传递的第一个命令是HELO.该命令包含一个参数,即你的邮箱名。
HELOoleg
注意:在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。
如果命令成功,服务器会返回一个代码为250的回应。下一步用MAILFROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。
MAILFROM : [email]oleg@vbip.com[/email]
发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPTTO命令了。该命令以收信人地址为参数,一看便知是告诉服务器你想将邮件发到收信人地址处。
RCPTTO : [email]somebody@domain.com[/email]
如果你想将邮件发给多个收件人的话。你需要多次使用RCPTTO命令,对每个命令,服务器都会返回代码为250的回应。
现在你可以向服务器发送邮件正文了。用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束(在VB中就是vbLf)示例程序知道何时使用换行符,何时使用回车加换行符。所以你只须按回车键就行了。下面是一个例子:
Subject : Myfirste-mailmessage.
Firstlineofamessage.
Secondline.
. 注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。用VB代码表示就是vbLf&"."&vbCrLf.服务器收到这个标志后,就会立即向你返回一个代码为250的回应以及该邮件的唯一ID号。
250WAA10568Messageacceptedfordelivery
任务完成了,你可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。
SMTP协议原始命令码和工作原理
1.SMTP是工作在两种情况下:
一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器
2.SMTP是个请求/响应协议,命令和响应都是基于ASCII文本,并以CR和LF符结束。响应包括一个表示返
回状态的三位数字代码
3.SMTP在TCP协议25号端口监听连接请求
4.连接和发送过程:
a.建立TCP连接
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令
服务器端正希望以OK作为响应,表明准备接收
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行
服务器端则表示是否愿意为收件人接受邮件
d.协商结束,发送邮件,用命令DATA发送
e. 以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。
5.另外两个命令:
VRFY---用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。
EXPN---用于扩充邮件列表。
6.邮件路由过程:
SMTP服务器基于‘域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录
来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。
若SMTP服务器mail.abc.com收到一封信要发到[email]shuser@sh.abc.com[/email]:
a.Sendmail请求DNS给出主机sh.abc.com的CNAME记录,如有,假若CNAME到shmail.abc.com,则再次
请求shmail.abc.com的CNAME记录,直到没有为止
b.假定被CNAME到shmail.abc.com,然后sendmail请求@abc.com域的DNS给出shmail.abc.com的MX记录,
shmail MX 5 shmail.abc.com
10 shmail2.abc.com
c. Sendmail最后请求DNS给出shmail.abc.com的A记录,即IP地址,若返回值为1.2.3.4
d. Sendmail与1.2.3.4连接,传送这封给[email]shuser@sh.abc.com[/email]的信到1.2.3.4这台服务器的SMTP后台程序
SMTP基本命令集:
命令 描述
------------------------------
HELO 向服务器标识用户身份
发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL 初始化邮件传输
mail from:
RCPT 标识单个的邮件接收人;常在MAIL命令后面
可有多个rcpt to:
DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束。
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器应响应OK
QUIT 结束会话
RSET 重置会话,当前传输被取消
--------------------------------
8. MAIL FROM命令中指定的地址是称作 envelope from地址,不需要和发送者自己的地址是一致的。
RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:行是什么无关。
9.为什么没有RCPT CC和RCPT BCC:?
所有的接收者协商都通过RCPT TO命令来实现,如果是BCC,则协商发送后在对方接收时被删掉信封接收者
10.邮件被分为信封部分,信头部分和信体部分
envelope from, envelope to 与message from:, message to:完全不相干。
evnelope是由服务器主机间SMTP后台提供的,而message from/to是由用户提供的。有无冒号也是区别。
11. 怎样由信封部分检查是否一封信是否是伪造的?
a. received行的关联性。
现在的SMTP邮件传输系统,在信封部分除了两端的内部主机处理的之个,考虑两个公司防火墙之间
的部分,若两台防火墙机器分别为A和B,但接收者检查信封received:行时发现经过了C.则是伪造的。
b. received :行中的主机和IP地址对是否对应如:
Receibed : from galangal.org (turmeric.com [104.128.23.115] by mail .bieberdorf.edu....
c. 被人手动添加在最后面的received行:
Received : from galangal.org ([104.128.23.115]) by mail .bieberdorf.edu (8.8.5)
Received : from lemongrass.org by galangal.org (8.7.3)
Received : from graprao.com by lemongrass.org (8.6.4)
SMTP协议通讯模型
SMTP协议是TCP/IP协议族中的一员,主要对如何将电子邮件从发送方地址传送到接收方地址,也即是对传输的规则做了规定。SMTP协议的通信模型并不复杂,主要工作集中在发送SMTP和接收SMTP上:首先针对用户发出的邮件请求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,这里的接收SMTP是相对于发送SMTP而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。可大致用下面的通讯模型示意图来表示:
SMTP协议的命令和应答
从前面的通讯模型可以看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。在通讯链路建立后,发送SMTP发送MAIL命令指令邮件发送者,若接收SMTP此时可以接收邮件则作出OK的应答,然后发送SMTP继续发出RCPT命令以确认邮件是否收到,如果接收到就作出OK的应答,否则就发出拒绝接收应答,但这并不会对整个邮件操作造成影响。双方如此反复多次,直至邮件处理完毕。SMTP协议共包含10个SMTP命令,列表如下:
SMTP命令命令说明
HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令
MAILFROM :<reverse-path><CRLF><reverse-path>为发送者地址。此命令告诉接收方一个新邮件发送的开始,并对所有的状态和缓冲区进行初始化。此命令开始一个邮件传输处理,最终完成将邮件数据传送到一个或多个邮箱中。
RCPTTO :<forward-path><CRLF><forward-path>标识各个邮件接收者的地址
DATA<CRLF>
接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾。
REST<CRLF>退出/复位当前的邮件传输
NOOP<CRLF>要求接收SMTP仅做OK应答。(用于测试)
QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输。
VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。
EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。
HELP<CRLF>查询服务器支持什么命令
注:<CRLF>为回车、换行,ASCII码分别为13、10(十进制)。
SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字都是有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。一些较复杂的邮件程序利用该特点,首先检查应答码的首数字,并根据其值来决定下一步的动作。下面将SMTP的应答码列表如下:
501参数格式错误
502命令不可实现
503错误的命令序列
504命令参数不可实现
211系统状态或系统帮助响应
214帮助信息
220<domain>服务就绪
221<domain>服务关闭
421<domain>服务未就绪,关闭传输信道
250要求的邮件操作完成
251用户非本地,将转发向<forward-path>
450要求的邮件操作未完成,邮箱不可用
550要求的邮件操作未完成,邮箱不可用
451放弃要求的操作;处理过程中出错
551用户非本地,请尝试<forward-path>
452系统存储不足,要求的操作未执行
552过量的存储分配,要求的操作未执行
553邮箱名不可用,要求的操作未执行
354开始邮件输入,以"."结束
554操作失败
SMTP通信举例
在发送方(客户端)和接收方(服务器)间建立连接之后,接下来是一个合法的SMTP会话。在下面的对话中,所有客户端发送的都以“C:”作为前缀,所有服务器发送的都以“S:”作为前缀。在多数计算机系统上,可以在发送的机器上使用telnet命令来建立连接,比如:
telnet www.example.com 25
它打开一个从发送的机器到主机www.example.com的SMTP连接。
S: 220 www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM: <sender@mydomain.com>
S: 250 Ok
C: RCPT TO: <friend@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: test message
C: From:""< sender@mydomain.com>
C: To:""< friend@example.com>
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: quit
S: 221 Bye
虽然是可选的,但几乎所有的客户端都会使用EHLO问候消息(而不是上面所示的HELO)来询问服务器支持何种SMTP扩展,邮件的文本体(接着DATA)一般是典型的MIME格式。
SMTP安全和垃圾邮件
最初的SMTP的局限之一在于它没有对发送方进行身份验证的机制。因此,后来定义了SMTP-AUTH扩展。
尽管有了身份认证机制,垃圾邮件仍然是一个主要的问题。但由于庞大的SMTP安装数量带来的网络效应,大刀阔斧地修改或完全替代SMTP被认为是不现实的。Internet Mail 2000就是一个替代SMTP的建议方案。
因此,出现了一些同SMTP工作的辅助协议。IRTF的反垃圾邮件研究小组正在研究一些建议方案,以提供简单、灵活、轻量级的、可升级的源端认证。最有可能被接受的建议方案是发送方策略框架协议。
-
什么是FTP协议?请简要介绍FTP协议的工作原理和常见的命令。
FTP(File Transfer Protocol)是一种广泛使用的文件传输协议,用于在网络上进行文件的上传、下载和管理。本篇博客将深入介绍FTP协议的工作原理、命令格式以及协议细节分析,帮助读者全面了解FTP的核心概念和使用方法。
一、FTP协议概述
FTP是一种客户端-服务器协议,用于在网络中进行可靠的文件传输。它通过两个独立的连接实现传输操作:控制连接用于发送命令和接收响应,数据连接用于传输文件的实际内容。
二、FTP协议工作原理
连接建立:客户端通过TCP连接到服务器的21端口。
用户身份验证:客户端发送用户名和密码进行身份验证。
目录导航:客户端通过命令进行目录切换、列出目录内容等操作。
文件传输:客户端发送RETR命令下载文件,发送STOR命令上传文件。
连接关闭:客户端发送QUIT命令,服务器断开连接。
三、FTP协议命令格式
USER/PASS:用户身份验证命令,用于发送用户名和密码。
CWD/CDUP:目录导航命令,用于切换当前目录和上级目录。
LIST/NLST:列出目录内容命令,用于获取当前目录的文件列表。
RETR:下载文件命令,用于从服务器获取指定文件。
STOR:上传文件命令,用于将文件上传至服务器。
QUIT:结束会话并关闭连接命令。
四、协议详细分析
下面以一个简单的协议交互示例进行分析,以展示FTP协议的具体运行过程:
客户端发送:
服务器响应:
-
什么是SSH协议?请简要介绍SSH协议的工作原理和常见的用途。
SSH是Secure Shell的缩写,也叫做安全外壳协议。SSH的主要目的是实现安全远程登录。
SSH工作原理
SSH的安全性比较好,其对数据进行加密的方式主要有两种:对称加密(密钥加密)和非对称加密(公钥加密)。
对称加密指加密解密使用的是同一套秘钥。Client端把密钥加密后发送给Server端,Server用同一套密钥解密。对称加密的加密强度比较高,很难破解。但是,Client数量庞大,很难保证密钥不泄漏。如果有一个Client端的密钥泄漏,那么整个系统的安全性就存在严重的漏洞。为了解决对称加密的漏洞,于是就产生了非对称加密。非对称加密有两个密钥:“公钥”和“私钥”。公钥加密后的密文,只能通过对应的私钥进行解密。想从公钥推理出私钥几乎不可能,所以非对称加密的安全性比较高。
SSH的加密原理中,使用了RSA非对称加密算法。
整个过程是这样的:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。
(2)用户使用这个公钥,将登录密码加密后,发送回来。
(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
中间人攻击:
SSH之所以能够保证安全,原因在与它采用了公钥加密,这个过程本身是安全的,但是实际用的时候存在一个风险:如果有人接货了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很那辨别真伪。因为不像Https协议,ssh协议的公钥是没有证书中心(CA)公证的,是自己签发的。
如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的总要,获取用户的登录密码。再用这个密码登录远程主机。那么SSH的安全机制就不存在了。这种风险就是著名的“中间人攻击”
口令登录:
如果是第一次登录远程机,会出现一下提示:
因为公钥长度较长(采用RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。如98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d,这样比对就容易多了。
经过比对后,如果用户接受这个远程主机的公钥,系统会出现一句提示语:
表示host主机已得到认可,然后再输入登录密码就可以登录了。
当远程主机的公钥被接受以后,它就会被保存在文件~/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,一般是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。
公钥的登录
使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。
所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。
这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个: $ ssh-keygen
运行上面的命令以后,系统会出现一系列提示,可以一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果担心私钥的安全,这里可以设置一个。
运行结束以后,在~/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。前者是公钥,后者是私钥。
这时再输入下面的命令,将公钥传送到远程主机host上面:
远程主机将用户的公钥,保存在登录后的用户主目录的~/.ssh/authorized_keys文件中。
这样,以后就登录远程主机不需要输入密码了。
如果还是不行,就用vim打开远程主机的/etc/ssh/sshd_config这个文件,将以下几行的注释去掉。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
然后,重启远程主机的ssh服务。
实战
生成秘钥
六、SSH端口转发
SSH端口转发有三种:动态端口转发、本地端口转发、远程端口转发。
这三种方式说起来有点难理解,通过例子会好理解一点。假设有三台主机,host1、host2、host3。
动态端口转发是找一个代理端口,然后通过代理端口去连相应的端口。动态端口转发的好处在于通过代理端口可以去找很多需要连接的端口,提高了工作效率。比如host1本来是连不上host2的,而host3却可以连上host2。host1可以找到host3作代理,然后通过host3去连接host2的相应端口
本地端口转发也是找到第三方,通过第三方再连接想要连接的端口,但这种方式的端口转发是固定的,是点对点的。比如假定host1是本地主机,host2是远程主机。由于种种原因,这两台主机之间无法连通。但是,另外还有一台host3,可以同时连上host1和host2这两台主机。通过host3,将host1连上host2。host1找到host3,host1和host3之间就像有一条数据传输的道路,通常被称为“SSH隧道”,通过这条隧道host1就可以连上host2。
远程端口转发和本地端口转发就是反过来了。假如host1在外网,host2在内网,正常情况下,host1不能访问host2。通过远程端口转发,host2可以反过来访问host1。host2和host1之间形成了一条道路,host1就可以通过这条道路去访问host2。
七、SSH基本用法
SSH主要用于远程登录:
假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。
-
什么是SSL/TLS协议?请简要介绍SSL/TLS协议的工作原理和常见的用途。
一、TLS/SSL是什么
TLS/SSL全称安全传输层协议,是介于TCP和HTTP之间的一层安全协议;
SSL 是 TLS的前身,现在绝大多数浏览器都不支持SSL,而是支持TLS;
HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。HTTPS的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险;
TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免上述问题。
三、证书
虽然现在我们确保了消息的正确性,但是还不能确定和我们沟通的对象是否是我们想要的对象;
在这个时候需要一个安全的第三方颁发证书(CA),证明身份的身份,防止被中间人攻击。证书中包括:签发者、证书用途、使用者公钥、使用者的HASH算法、证书到期时间等。
如果中间人篡改了证书,那么身份证明是否就无效了?这个时候需要一个新的技术,数字签名。
数字签名就是用CA自带的HASH算法对证书的内容进行HASH得到一个摘要,再用CA的私钥进行加密,最终组成数字签名。当别人把他的证书发过来的时候,再用同样的Hash算法,再次生成消息摘要,然后用CA的公钥对数字签名解密,得到CA创建的消息摘要,两者一比,就知道中间有没有被人篡改了。这个时候就能保证通信的安全了。
(1)首先由客户端向服务器发送使用的协议的版本号、一个随机数和可以使用的加密方法。
(2)服务器端收到后,确认加密的方法,也向客户端发送一个随机数和自己的数字证书。
(3)客户端收到后,首先检查数字证书是否有效,如果有效则再生成一个随机数,并使用证书中的公钥对随机数加密,然后发送给服务器,并且还会提供一个前端所有内容的hash值供服务器端检验。
(4)服务器端接收后,使用自己的私钥对数据解密,同时向客户端发送一个前面所有内容的hash值供客户端检验。
(5)这时候双方都有了三个随机数,按照之前所约定的加密方法,使用这三个随机数生成一把密钥,以后双方通信前,就使用这个密钥对数据进行加密后再传输。
三、加密算法
-
对称加密算法和非对称加密算法的区别是什么?请举例说明。
-
DES、AES、RC4等对称加密算法有什么特点?它们的区别是什么?
-
RSA、DSA等非对称加密算法有什么特点?它们的区别是什么?
-
哈希算法是什么?常见的哈希算法有哪些?
-
数字签名是什么?如何使用数字签名保证数据的完整性和真实性?
-
SSL/TLS协议是如何使用加密算法保证数据传输的安全性的?
四、安全技术
-
什么是防火墙?防火墙有哪些类型?如何配置防火墙?
-
什么是入侵检测系统?入侵检测系统有哪些类型?如何配置入侵检测系统?
-
什么是漏洞扫描工具?常用的漏洞扫描工具有哪些?如何使用漏洞扫描工具发现和修复漏洞?
-
什么是网络流量分析?网络流量分析有哪些常用工具?如何使用网络流量分析工具检测网络攻击?
-
什么是蜜罐技术?蜜罐技术有哪些类型?如何使用蜜罐技术诱捕攻击者并保障网络安全?