knickers 发布的文章

最近在做新生的网络基础培训,就当巩固下自己的基础,顺便确定下以前的定义。

先介绍下tcp/ip的基础。
TCP/IP出现的背景:

利用大学和研究机构组成的网络进行实验,1983年ARPANET启用TPC/IP为通信协议。

具体含义:
两种协议,分别指tcp协议和ip协议,tcp协议用来维持连接状态,ip协议用来标识目标。
更多的是指tcp/ip的协议群:
应用协议:http,smtpmftp,telnet
传输协议:tcp,udp
网际协议:IP,ICMP,ARP
路由控制协议:RIP,OSPF
互联网的定义:

(Internet):网际网,将两个以太网网段用路由器连接是互联网,将企业内部各部门的网络和其他企业的网络互联形成世界规模的网络也可称作互联网。

QQ20190331-155555@2x.png

灵魂画图…….
QQ20190331-155626@2x.png
ISP (Internet Service Provider)互联网服务供应商
IX (Internet Wxchange)网络交换中心
NOC (Network Operation Center)网络操作中心
QQ20190331-155652@2x.png
四、网络接口层

利用网络中的数据与数据链路进行通信,可以把它的作用理解为“驱动程序”    。用于系统可识别与硬件之间的“转换器”。

网络层:
如IP协议是基于IP地址转发分包数据。
(互联网就是具备互联网层功能的网络)
QQ20190331-155658@2x.png
连接互联网的所有主机和路由器必须实现IP的功能,其他连接互联网的网络设备(网桥,hub)比一定有IP和TCP功能
IP:IP协议使用ip地址区别主机标识。
ICMP:通常被用来诊断网络的健康状况
ARP:从数据包中的IP地址中介析出物理地址(MAC地址)
传输层:
TCP/IP中的传输层和OSI中的传输层类似。
QQ20190331-155703@2x.png
tcp
tcp是一种面向有相连接的传输层协议,他可以保证主机之间(可达),而且能够处理丢包、传输顺序乱等异常情况。

    为了建立与断开连接,有事他需要至少七次的发包与收包。

UDP:(eg:视频通讯)
UDP是物相连接,udp不会关注对方是否真的收到了数据,常用语广播通信及视频通信多媒体领域。

应用层
QQ20190331-155708@2x.png
提供服务的叫做服务端,接受服务的叫做客户端。提供服务的提前部署到服务器主机上,等待客户端发送的请求。

具体应用层协议及安全问题会在以后详细介绍。

TCP/IP分层模型与通信实例:
发送数据包:(以Email为例)
应用程序:
写入内容发送邮件。
编码处理(base64)-----osi表示层
监理通信连接------osi中会话层
将数据发送给下一层
TCP处理:
根据上层支出目标,建立连接,发送数据和断开连接,加上TCP包首,双方端口号,和用以识别应用,以及数据包序号。
IP处理:
IP首重包含接收端的ip地址以及发送端的ip地址
如果上不知道接收端的mac地址,则利用ARP协议查找,只要知道了对方的mac地址,就可以将mac地址和ip地址交给下一层实现传输。
网络接口:
从网络层传过来的包,到驱动来说就是数据,给这数据加上以太网首部,并发送,
以太网保守重包含接收端的mac地址,发送端mac地址,以及标记了以太网类型的以太网数据的协议。
FCS(Frame Check Squence)机制,用来判断数据宝是否由于其他(噪声)而破坏。
捷豹过程相反,自底向上。

下图是数据包在各个层面上的包首图:
QQ20190331-155713@2x.png

有很多时候运维人员会选择直接rm -rf 某文件或者目录。这是一个很不好的习惯,推荐时mv到/tmp目录下,并写一个脚本定期清理/tmp下的内容,在使用过程中如果发生了误删除的情况,可以使用extundelete恢复数据。
在Linux下,通过命令rm -rf可以将数据直接从硬盘删除,并且没有任何提示,Linux也并没有回收站功能,也就是说如果数据被删除后通过常规手段是无法恢复的。
extundelete的恢复原理是根据文件系统的inode信息,来获取单个西安文件系统下所有文件的信息,包括存在的和已经被删除侧文件,这些信息包括文件名和inde。然后利用inode信息结合日志去查询该inode所在的block,最后利用dd命令将这些信息备份出来,从而恢复数据文件。
这里我演示使用的是ubuntu大致过程:

删除数据
卸载磁盘分区
查询可恢复的数据
恢复文件
在数据被误删除后第一时间要做的就是卸载删除数据所在的磁盘或者磁盘分区,如果是系统根分区的数据遭到误删除,就需要将根分区以只读形式挂载。原因是,将文件删除后,只是将文件的inode节点中的扇区指针清零了,市级文件还储存在磁盘上,如果磁盘以读写模式挂载,这些数据块就可能被操作系统分配出去了,以只读模式挂载硬盘,可以防止数据被覆盖的风险,提高恢复成功的几率。

[bash]
root@2a6f1781eb94:~# apt-get install extundelete
root@2a6f1781eb94:~# vi 123.txt
[/bash]

QQ20190331-154855@2x.png
QQ20190331-154904@2x.png

[bash]
root@knickers:/root# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       19G  4.0G   14G  23% /
none           tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
udev           devtmpfs  487M  4.0K  487M   1% /dev
tmpfs          tmpfs     100M  960K   99M   1% /run
none           tmpfs     5.0M     0  5.0M   0% /run/lock
none           tmpfs     497M  152K  497M   1% /run/shm
none           tmpfs     100M   48K  100M   1% /run/user
[/bash]

QQ20190331-154912@2x.png
QQ20190331-154920@2x.png
删除后:

开始恢复:

[bash]
root@knickers:~# extundelete /dev/sda1 --restore-file /root/123.txt
[/bash]

QQ20190331-154934@2x.png
这时候会在当前目录下新建一个文件夹/RECOVERED_FILES
其中文件恢复会按照原路径恢复。

QQ20190331-154940@2x.png
QQ20190331-154947@2x.png
这里可以看到。已经恢复成功了 md5值也没有改变,证明恢复的信息是完整的。
网上有很多关于这个软件的使用说明,这里只是重现一下,留个记录。

网络文件系统(英语:Network File System,缩写为NFS)是一种分布式文件系统协议,windows通常使用smb在局域网内共享文件,而nfs主要通过局域网让不同主机之间可以共享文件和目录。
客户端通过mount 方式将nfs的服务端共享数据挂载到本机系统中。从客户端本地,挂在的分区就像服务器本地的文件或者目录一样。
企业中也通常在集群系统中使用nfs来部署后端源服务器,减小web服务器的o/i读写。
QQ20190331-153552@2x.png
在企业集群工作场景中,nfs被用作储存共享视频,图片,静态文件等。例如upload目录等,通常需要反复读写的静态文件,就可以通过后端的nfs服务器给挂载到客户端,降低前端服务器的读写压力。
Nfs因为其支持功能多,不同功能需要不同的程序来启动,每个功能会占用不同的端口,所以它无法固定端口,由此可能会造成nfs服务端和客户端的传输障碍,由此,nfs同行从哪个是使用rpc服务来记录nfs对应的不同端口号,并且将nfs客户端的请求回应给客户端。这样就确保了nfs客户端和服务端之间能够成功连接。
而在网站安全考虑,如果用户上传的非法文件(webshell),就算上传,没有php解释器或者web容器的话,上传的脚本木马也就不是问题了,既然无法解析,那对网站的安全也就无法影响了。
过程如图:
QQ20190331-153558@2x.png
环境:centos6.9 内存512m

[bash]
#yum -y install nfs-utils rpcbind
#service rpcbind status
#service rpcbind start
#lsof -i :111
#111端口是rpc对外服务的端口
#service nfs start
#chkconfig rpcbind on
#chkconfig nfs on
#mkdir -p /home/nfsfile/upload
#vi /etc/exports //编辑配置文件,添加一行
#/home/nfsfile/upload    *(rw,sync,no_root_squash)
#这里两段参数的作用是 NFS共享目录 后面是NFS客户端地址 *通配符代表所有来源访问,也可以使用xxx.xxx.xxx.0/24 来确定一个网段客户端访问。括号内是对目录的全血设置
# chown -R nfsnobody.nfsnobody /home/nfsfile/upload
#设置一下共享用户的权限,防止777权限造成其他的不必要的安全问题。
[/bash]

QQ20190331-153609@2x.png

接上文提一点安全问题,如果在编辑/etc/exports时允许任意服务器连接。
QQ20190331-153617@2x.png
QQ20190331-153624@2x.png
nfs服务器的内网ip:10.14.2.238
客户端:

#yum install -y rpcbind
#service rpcbind strarls 
#showmount -e 10.14.2.238

如果能够没有报错,便证明可以挂载。
QQ20190331-153733@2x.png

#mout -t nfs 10.14.2.238:/home/nfsfile/upload /data/nfs

我在本地touch一个1.txt
可以看到服务器出现了1.txt。

portsentry是一款安全工具,可以通过监控端口(支持多端口)来达到分辨记录攻击者ip。它可以设置配置文件来阻止相应接受的地址,并记录到日志文件中。

可以说他可以阻止黑客入侵时第一个步骤,对服务器进行信息收集。搭建过程并不复杂,写个文章记录下。
[bash]
yum install gcc gcc-c++
 [/bash]

QQ20190331-153231@2x.png
QQ20190331-153006@2x.png

上图是需要修改的位置,修改后。
QQ20190331-153014@2x.png
出现以下提示则表明安装成功。
整体过程安装不是很难,部署在内网服务器中如果不能连接外网,可以通过xftp之类的直接上传源码包就可以安装了。

简单说下配置文件

[bash]
cd /usr/local/psionic/portsentry
vi portsentry.conf
[/bash]

QQ20190331-153023@2x.png
通常已经给出了一些需要监视的端口。如果使用默认的端口来进行监控,那就只需要将前面的注释符号去掉就可以了。
QQ20190331-153031@2x.png
第一行的 IGNORE_FILE是指定义端口策略文件。
第三行BLOCKED_FILE是指设置ip记录文件。
BLOCK_UDP="1"
BLOCK_TCP="1
对扫描IP的操作,0为无动作,1防火墙阻止,2执行脚本
这里我开启tcp监视。

[bash]
/usr/local/psionic/portsentry/portsentry -tcp
[/bash]

开启工具。

QQ20190331-153043@2x.png
这里我使用nmap对其进行端口扫描,可以看到,之检测到了22端口。默认配置中并没有对22端口进行监控,所以被发现了。

  今天看到的一个帖子里说的,尝试了一下确实可以,应该是某个个人申请个域名,利用广厚设计学校深情地教育版
QQ20190331-142427@2x.png

具体步骤:
打开:http://get365.pw/ 右上角会给你分配一个临时邮箱 复制好邮箱地址(别关闭临时邮箱页面)
QQ20190331-142432@2x.png
打开:https://signup.microsoft.com/signup?sku=student 输入你获取的邮箱地址,点击注册。
QQ20190331-142438@2x.png
自定义你的姓名,密码。验证码则回到刚才获取邮箱的网站,点开收到的邮件,复制输入即可。在这里可以看到直接能通过教育版,其实也可以激活office套件为教育版。
QQ20190331-142446@2x.png
注册以后会提示你添加密保 信息,设置好密保邮箱即可。