第3章 基本网络服务

3.1 DNS

DNS代表域名系统(Domain Name System),它是互联网中用于将域名转换为相应IP地址的分布式命名系统。

在互联网上,每个设备(如计算机、服务器、路由器等)都被分配一个唯一的IP地址,用于在网络上进行通信。然而,IP地址是一串数字(如192.168.0.1),不易记忆和识别。为了简化互联网使用体验,域名系统将易于记忆的域名(如www.example.com)映射到对应的IP地址。

DNS的工作方式是通过将域名查询发送到DNS服务器来进行解析。当用户在Web浏览器中输入一个域名时,计算机会首先向本地DNS服务器发出查询请求。如果本地DNS服务器缓存了这个域名的IP地址,它会直接返回该地址。否则,本地DNS服务器将向根DNS服务器发送查询请求,根DNS服务器将指导本地DNS服务器继续查询下一级的DNS服务器,最终找到负责管理该域名的DNS服务器。一旦找到域名对应的IP地址,本地DNS服务器将返回给用户,用户的设备就可以通过这个IP地址与目标服务器建立连接。

除了将域名解析为IP地址,DNS还提供其他功能,如反向解析(将IP地址转换为域名)、邮件服务器查找(将电子邮件域名映射到邮件服务器)等。

总之,DNS是一种重要的互联网基础设施,它允许用户通过易于记忆的域名访问互联网上的各种资源,并在后台负责将域名转换为对应的IP地址。

记录类型 描述 示例
A 将域名映射到IPv4地址 example.com IN A 192.0.2.1
AAAA 将域名映射到IPv6地址 example.com IN AAAA 2001:db8::1
CNAME 为域名创建别名 www.example.com IN CNAME example.com
MX 指定接收域名邮件的邮件服务器 example.com IN MX 10 mail.example.com
NS 指定域名的授权域名服务器 example.com IN NS ns1.example.com
TXT 存储与域名关联的任意文本信息 example.com IN TXT "Some text information"
SRV 指定提供特定服务的服务器 _http._tcp.example.com IN SRV 10 0 80 www.example.com
SOA 指定管理域名的权威服务器 example.com IN SOA ns1.example.com admin.example.com

3.2 SNMP

3.2.1 简介

SNMP代表简单网络管理协议(Simple Network Management Protocol)。它是一种用于网络设备管理和监控的协议,允许网络管理员远程监视和管理网络设备的性能、状态和配置。

SNMP的主要功能是收集和管理网络设备的信息。它通过网络管理系统(NMS)与网络设备进行通信。SNMP定义了一组标准的管理对象和管理信息库(MIB),这些MIB包含了关于网络设备的各种信息,如设备状态、性能指标、配置参数等。网络设备通过SNMP代理程序实现对这些信息的访问,并通过SNMP协议将这些信息发送给NMS。

SNMP使用客户端-服务器模型进行通信。NMS充当客户端,向网络设备发送SNMP请求(如获取设备信息、修改设备配置等),而网络设备上的SNMP代理程序则充当服务器,接收并响应这些请求。SNMP协议使用UDP作为传输协议,通常使用161端口进行通信。

SNMP定义了一组基本的操作命令,用于管理和监控网络设备。常见的操作命令包括获取 (GET)、设置(SET)、轮询(GETNEXT)、陷阱(TRAP)等。通过这些操作命令,管理员可以获取设备的状态信息、配置参数,对设备进行配置和修改,并接收设备发送的警报和事件通知。

SNMP是一个广泛应用于网络管理的标准协议,它使网络管理员能够远程监视和管理网络设备,实现设备的集中管理、故障排除和性能优化。

3.2.2 Windows环境部署

先在Windows主机上添加功能,步骤如下:

步骤1.右键点击左下角的开始,选择“设置”。

image-20230531153215847

找到并点击“应用”。

image-20230531153351603

左侧栏选择“应用和功能”,右侧栏点击“可选功能”。

image-20230531153428925

点击可选功能下的“添加功能”。

image-20230531153539637

搜索框输入“snmp”,然后勾选“简单网络管理协议 (SNMP)”,最后点击“安装”即可。

image-20230531153831169

image-20230531153716413

步骤2

左下角搜索“服务”,打开

image-20230531165707097

往下滑,找到”SNMP服务

image-20230531165923729

单击SNMP,右键,选择属性

在属性中打开:安全 ,并添加社区”public “ 下方选择 “接受来自任何而主机的SNMP数据包”,之后点确定便可。

image-20230531170700263

Windows主机的设置到此结束。

  • 使用 Snmpwalk 命令测试 Windows 主机

执行命令如下所示:

snmpwalk -c public 169.254.218.205 -v 2c
snmpwalk -v 2c -c public 169.254.218.205

image-20230606120033628

image-20230606120234024

3.2.3 CentOS环境部署SNMP

image-20230829215121908

要在CentOS上搭建SNMP服务,可以按照以下步骤进行操作:

1.确保CentOS系统已经安装了snmp软件包。

使用以下命令检查是否已安装:

rpm -qa | grep net-snmp

如果没有输出结果,则表示未安装SNMP软件包。可以使用以下命令安装:

sudo vi /etc/snmp/snmpd.conf

2.配置SNMP设置。编辑SNMP的主配置文件 /etc/snmp/snmpd.conf ,可以使用任何文本编辑器打 开:

sudo vi /etc/snmp/snmpd.conf

在文件中,你可以配置SNMP团体字符串、允许的主机访问等设置。根据需求进行相应的修改。

启动SNMP服务。使用以下命令启动SNMP服务:

sudo systemctl start snmpd

具体步骤如下:

  1. 使用联网的yum 安装组件

需要安装的大概有一下几个:

yum install -y net-snmp

yum install -y net-snmp-devel

yum install -y net-snmp-libs

yum install -y net-snmp-perl

yum install -y net-snmp-utils

yum install -y mrtg
yum install -y net-snmp

yum install -y net-snmp-devel

image-20230605202555842

yum install -y net-snmp-libs

image-20230605203235788

yum install -y net-snmp-perl

image-20230605203415006

yum install -y net-snmp-utils

image-20230605203508893

yum install -y mrtg

image-20230605203718412

查看是否安装成功!

rpm -qa |grep snmp

image-20230605203838422

  1. 启动SNMP

输入 service snmpd start 并用 service snmpd status 查看服务状态。

image-20230606140814804

  1. 配置SNMP

命令如下:

vi /etc/snmp/snmpd.conf

配置snmpd.conf文件需要更改四个地方(默认配置基础上):

(1)配置snmp团体名(默认是public): com2sec notConfigUser default public 建议更改public为您使用的团体名称(也可以不修改)

image-20230606142208426

添加内容:

允许本机访问用于测试 社区名称为 public

com2sec notConfigUser default public修改为:com2sec notConfigUser 127.0.0.1 public

允许ip为192.168.18.133的管理主机访问 社区名称为 public(192.168.18.133为kali Linux的ip地址

com2sec notConfigUser 192.168.18.133 public

image-20230606143231252

(2)将access notConfigGroup "" any noauth exact systemview none none更改为access notConfigGroup "" any noauth exact all none none

image-20230606143828594

image-20230606143729883

(3)将如下两行前面的注释去掉

# view all included .1 80

# view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

image-20230606144232113

(4)将下面俩行前面的注释去掉

# access MyROGroup "" any noauth 0 all none none

# access MyRWGroup "" any noauth 0 all all all

image-20230606144545006

配置文件修改完后,保存。

image-20230606145057070

  1. 重启服务

命令如下:

systemctl start snmpd.service  #启动SNMP服务
systemctl enable snmpd.service  #开机启动SNMP服务

查看服务状态:

service snmpd status
>>
Redirecting to /bin/systemctl status snmpd.service
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
   Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 四 2023-06-08 17:55:45 CST; 31min ago
 Main PID: 1171 (snmpd)
    Tasks: 1
   CGroup: /system.slice/snmpd.service
           └─1171 /usr/sbin/snmpd -LS0-6d -f
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 77: Error:...ed
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 80: Error:...ay
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 81: Error:...ay
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 95: Error:...ay
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 96: Error:...ay
6月 08 17:55:44 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 129: Error...id
6月 08 17:55:45 defense snmpd[1171]: /etc/snmp/snmpd.conf: line 130: Error...id
6月 08 17:55:45 defense snmpd[1171]: net-snmp: 8 error(s) in config file(s)
6月 08 17:55:45 defense snmpd[1171]: NET-SNMP version 5.7.2
6月 08 17:55:45 defense systemd[1]: Started Simple Network Management Prot.....
Hint: Some lines were ellipsized, use -l to show in full.

image-20230606150016588

  1. 验证

可以使用一个简单命令判断snmp服务是否已经成功启动:

netstat -ln | grep 161
>>
udp        0      0 0.0.0.0:161             0.0.0.0:* 

image-20230606150259808

6.设置防火墙

命令如下:

  • 关闭防火墙
systemctl stop firewalld.service
  • 禁止firewall开机启动
systemctl disable firewalld.service
>>
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
  • 查看默认防火墙状态
firewall-cmd --state
>>
not running

image-20230606150826519

  1. 测试

使用SNMP v2c版本,使用公共的SNMP团体字符串(示例中为"public")来获取本地主机的SNMP信息。

打开kali Linux

在终端输入如下命令:

snmpwalk -v 2c -c public 192.168.18.142

image-20230606151232901

看到了一些关于系统和网络的SNMP数据输出。

至此,你已经成功搭建了SNMP服务并进行了基本配置。你可以根据具体需求进一步定制SNMP设置,如

添加更多的SNMP团体字符串、配置SNMP Trap等。

请注意,安装和配置SNMP服务涉及到系统安全性和访问控制,建议仔细评估安全需求,并采取适当的安

全措施来保护系统免受潜在的安全风险。

  1. 关闭snmp服务
systemctl stop snmpd 停止服务
systemctl disable snmpd 关闭服务

3.2.4 用途

随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题:

  • 网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难;同时,网络作为一个复杂的分布式系统,其覆盖地域不断扩大,也使得对这些设备进行实时监控和故障排查变得极为困难。
  • 网络设备种类多种多样,不同设备厂商提供的管理接口(如命令行接口)各不相同,这使得网络管理变得愈发复杂。

在这种背景下,SNMP应运而生,SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。通过“利用网络管理网络”的方式:

  • 网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作,工作效率得以提高。
  • 屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理设备的物理特性、网络类型相互独立,因而可以实现对不同设备的统一管理,管理成本低。
  • 设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,其在设备上添加的软件/硬件、报文的种类和报文的格式都力求简单,因而运行SNMP给设备造成的影响和代价都被最小化。

Windows 10中不默认安装SNMP服务的主要原因是出于安全考虑。

SNMP服务本身是一个强大的管理工具,可以提供远程访问和管理网络设备的能力。然而,它也存在一些安全风险。开放SNMP服务可能导致未经授权的访问和潜在的安全漏洞。攻击者可以利用SNMP协议中的弱点来获取敏感信息、修改设备配置或进行其他恶意活动。

在 Windows 10 1803 及更高版本(1809、1903、1909、2004)中,SNMP 服务被视为已弃用,并且未列在控制面板列表的 Windows 功能中。

由于与此协议相关的安全风险,Microsoft 计划在下一个 Windows 版本中完全删除 SNMP 服务。建议使用 Windows 远程管理支持的公共信息模型 (CIM),而不是 SNMP。在 Windows 10 的当前版本中,SNMP 服务是隐藏的。

3.2.5 指令

操作类型 描述 备注
Get Get操作可以从Agent中提取一个或多个参数值。
GetNext GetNext操作可以从Agent中按照字典序提取下一个参数值。
Set Set操作可以设置Agent的一个或多个参数值。
Response Response操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。
Trap Trap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。
GetBulk GetBulk操作实现了NMS对被管理设备的信息群查询。 SNMPv1版本不支持GetBulk操作
Inform InformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认。 SNMPv1版本不支持Inform操作

3.3 SMTP

3.3.1简介

SMTP代表简单邮件传输协议(Simple Mail Transfer Protocol)。它是一种用于电子邮件传输的标准协议,用于发送和接收电子邮件。SMTP协议定义了电子邮件在网络上的传输方式和交换格式。

SMTP协议的工作原理是通过建立一个与电子邮件服务器之间的连接来传输电子邮件。发送方使用SMTP客户端将电子邮件发送到电子邮件服务器,然后电子邮件服务器将电子邮件转发给接收方的电子邮件服务器。接收方使用POP3(邮局协议3)或IMA(Internet邮件访问协议)从自己的邮件服务器上接收电子邮件。

SMTP协议使用TCP/IP网络进行通信,默认使用25端口。它定义了一系列命令和响应规则,用于建立连接、验证身份、传输邮件和处理错误。SMTP协议还支持传输附件、多个收件人和抄送、主题和正文等邮件元数据。

需要注意的是,SMTP协议只负责电子邮件的传输,而不负责电子邮件的格式、安全性或存储。这

些方面由其他协议和技术(如MIME和SSL/TLS)负责处理。

3.3.2 CentOS环境部署

如果你想在CentOS上搭建SMTP服务器来发送电子邮件,你可以按照以下步骤进行操作:

  1. 安装和配置邮件传输代理(MTA)。在CentOS上,常用的MTA软件是Postfix。使用以下命令安装 Postfix:
sudo yum install postfix
  1. 配置Postfix。编辑Postfix的主配置文件 /etc/postfix/main.cf ,可以使用任何文本编辑器打 开:
sudo vi /etc/postfix/main.cf

根据你的需求,可以修改以下配置参数:

myhostname:设置你的主机名或域名。

mydomain:设置你的域名。

myorigin:设置邮件的发件人域名。

mydestination:设置邮件的目标域名。

mynetworks:设置允许使用SMTP服务的网络段。

保存并关闭文件。

  1. 启动Postfix服务。使用以下命令启动Postfix服务:
sudo systemctl start postfix

也可以设置开机自启动:

udo systemctl enable postfix
  1. 验证SMTP服务器是否正常工作。你可以使用命令行工具(如 telnet )来测试SMTP服务器的连通 性。以下是一个示例命令:
telnet localhost 25

这将连接到本地主机的25端口(SMTP端口)。你可以执行SMTP命令(如 HELOMAIL FROMRCPT TO )来模拟发送邮件的过程。

如果一切正常,你已经成功搭建了SMTP服务器。你可以在你的应用程序或邮件客户端中配置SMTP设 置,以使用你的SMTP服务器来发送电子邮件。

请注意,配置SMTP服务器涉及到邮件传输和网络安全性,建议仔细评估安全需求,并采取适当的安全措 施来保护服务器免受潜在的垃圾邮件或滥用行为。此外,为了提高邮件送达率,还需要进行适当的反垃圾邮件配置和域名验证设置。

具体步骤如下:

  1. 安装Postfix
 yum -y install postfix
  • 启动postfix服务
systemctl start postfix
  • 设置开机自启动
systemctl enable postfix
  • 查看服务是否启动成功
netstat -tnlp | grep :25

image-20230610161450082

  1. 更改主机名

CentOs主机默认名为localhost.localdomain,此处将其更改为test.com,具体操作为:

第一步: 修改/etc/sysconfig/network文件

添加或修改: NETWORKING=yes HOSTNAME=test.com

打开终端:

进入cd /etc/sysconfig文件夹

查看当前文件ls

image-20230610162304232

修改network 配置文件

vi network 

添加或修改:

NETWORKING=yes 
HOSTNAME=test.com

image-20230610162740535

第二步:修改/etc/hosts文件,添加节点映射

vi /etc/hosts
127.0.0.1 localhost test.com
:1 localhost test.com

image-20230610163312077

第三步 :修改/etc/hostname文件,删除文件中的所有文字,在第一行添加test.com

vi /etc/hostname

image-20230610163758697

第四步: 重启并验证

reboot -f  (强制重启)

重启之后,在终端输入hostname命令进行查看

修改成功

image-20230610164225003

3、配置Postfix

通过修改主配置文件/etc/postfix/main.cf可更改Postfix 的主要配置,按照下列内容对Postfix的主配置文件进行更改。

vi /etc/postfix/main.cf
myhostname=mail.test.com
mydomain=test.com
myorigin=$mydomain
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomaininet 
interfaces = all
home_mailbox = Maildir/

image-20230610165918901

image-20230610170150675

image-20230610170604516

image-20230610170944656

4、使用Postfix发送信件

yum -y install telnet
telnet 0 25
helo mail.test.com   //向服务器表明身份
mail from:[email protected]  //设置寄件人
rcpt to:[email protected]  //设置收件人
data     //编辑文本内容
Quit    //退出
  • 安装远程客户端
yum -y install telnet

image-20230610171817116

  • 登录客户端
telnet 0 25

image-20230610172320255

  • 常见的响应码与其含义如表所示:
响应码 说明
220 服务器就绪
250 要求的邮箱操作完成
354 开始邮件输入,以“ , ”结束
450 要求的邮件操作未完成,邮箱不可用
452 系统存储不足,要求的操作未执行
454 临时认证失败,可能账号被临时冻结
550 要求的邮件操作未完成,邮箱不可用
  • SMTP的基础命令的具体用法与其他常用SMTP命令如表所示:
命令 说明
helo/ehlo 客户端主机名 向服务器表明自己的身份
mail from:发件人邮箱 设置发件人身份
rcpt to:收件人邮箱 设置收件人邮箱地址,若需将邮件发送给多人,可重复使用此命令,设置多个收件地址
data 使用此命令,开始输入邮件正文,以.结束正文输入
vrfy邮箱地址 验证指定邮箱是否存在,考虑到安全问题,此命令一般被禁用
noop 空操作,要求服务器返回OK应答,一般用作测试
rset 重置会话,取消当前传输
  • 向服务器表明自己的身份
helo mail.test.com    按Enter键

image-20230610175100915

  • 设置发件人身份
mail from:[email protected]       按Enter键

image-20230610175517201

  • 设置收件人邮箱地址
rcpt to:[email protected]          按Enter键
  • 使用data命令,开始输入邮件正文
Dear Yang, how are you doing recently? Recently I often think of our sweet time together, do you still remember me? No matter what the future holds, please remember that you will always be my best friend. Looking forward to your reply.

按"回车键.回车键",输入"quit",退出。

截图如下:

image-20230610181341643

QQ邮箱收到的信息:

image-20230610181502311

如果您的邮件服务器被防火墙保护,请先打开TCP端口25。测试完成后,您应该可以在收件人的收件箱中看到测试邮件。

3.4 TCP/UDP

TCP UDP
连接 面向连接 无连接
可靠性 可靠传输,提供错误检测和重传机制 不可靠传输,不提供错误检测和重传机制
有序性 提供数据包按顺序交付的保证 不保证数据包按顺序交付
首部开销 首部较大(至少20字节),带有序列号、确认号等控制信息 首部较小(至少8字节节),仅包含源端口、目标端口等基本信息
传输效率 传输效率较低,由于连接管理、重传等机制的开销 传输效率较高,不需要连接管理和重传机制
适用场景 适用于可靠性要求较高的应用,如文件传输、网页浏览、电子邮件等 适用于实时性要求较高、数据包丢失可容忍的应用,如音频/视频流传输、DNS查询等
示例协议 HTTP、FTP、SMTP、SSH等 DNS、DHCP、TFTP、SNMP等

这个表格简要比较了TCP和UDP在连接、可靠性、有序性、首部开销、传输效率和适用场景等方面的差异。请注意,每种协议都有自己的优点和适用场景,具体使用取决于应用需求和设计考虑。

猜你喜欢

转载自blog.csdn.net/m0_63451989/article/details/132686318