jinhucheung / blog

学习笔记
6 stars 3 forks source link

Linux 学习之服务器篇 网络安全与主机基本防护:网络升级/限制端口/SELinux #39

Open jinhucheung opened 8 years ago

jinhucheung commented 8 years ago

Index

jinhucheung commented 8 years ago

1. 网络数据包连线进入主机的过程

当网络上一个连线要求进入我们主机获取资源时,这个数据包进入主机整个流程是怎样的?

1.1 数据包进入主机的过程

网络数据包传输是双向的,当数据包进入主机时会被一层层防护筛选,最后才能获取到主机中的资源,下图是数据包进入主机的流程

  1. 经过防火墙的分析:linux内建两个防火墙机制:netfilterTCP wrappers
    • 数据包过滤防火墙:NetFilter 由iptables这个组件提供,对TCP/IP包表头信息进行过滤,主要对象是MAC/IP/ICMP/TCP/UDP数据包
    • TCP wrapper:数据包经过NetFilter后由Super daemons及TCP wrapper检验,主要是抵挡IP或端口,并进报告,/etc/hosts.allowhosts.deny中设置
  2. 服务的基本功能:服务进程同样可以过滤掉某些数据包,比如httpd.conf规范了一些IP不能访问资源,如果服务程序有漏洞,也是很重大的一件事
  3. SElinux对服务进程的权限控制:限制了服务进程能取得资源的范围,即使是root也要遵守规则
  4. 文件系统的基本权限控制:能否读取到数据,最后还是由文件系统的基本权限来控制的

1.2 网络常见攻击手段及保护措施

1.3 主机保护:软件更新/减少网络服务/启动SElinux

主机保护有以下几个方向:

后面部分也会谈到软件更新/减少网络服务(限制端口)等操作,有关SElinux部分请看Linux 学习之程序管理与SELinux

jinhucheung commented 8 years ago

2. 网络自动更新软件

2.1 如何进行软件更新

通常我们都是通过线上自动升级机制的yum/apt/you/urpmi来更新软件的,它们基于自家的包管理器(如rpm/dpkg)

如果我们以tarball方式安装的软件,要进行升级,就只能自己到相关官网上下载更新的tarball,再次编译安装了

2.2 yum软件更新/镜像网站使用的原理

yum基于RPM软件包管理,yum会连线yum服务器上下载RPM软件清单(记录了各软件的相关信息与依赖关系),通过RPM软件界清单,直接下载我们需要的软件以及前驱软件

yum更新软件流程如下图

  1. 由yum配置文件(/etc/yum.rrepos.d/*.repo)判断yum服务器IP地址
    • yum服务器可以是官网,或者一些镜像网站(对官网网站内容的拷贝,减轻官网的负担)
    • 比如CentOS镜像列表:CentOS Mirror List
  2. 连接到yum服务器后,先下载新的RPM软件清单
  3. 分析比较欲安装/升级的软件包,并提供用户确认
  4. 下载软件包到/var/cache/yum中,并进行实际安装
  5. 安装完毕,删除下载的软件包, 可以用yum clean手动删除

2.3 yum的使用:安装/搜索/软件群组/全系统更新

yum除了可以安装升级软件外,其还提供了软件搜索以及软件群组等功能

yum指令的用法如下

2.4 选择特定的镜像网站:修改yum配置文件以及清除yum缓存

1) 找到镜像网站

首先我们要知道什么样的网站才是镜像网站,比如CentOS的镜像网站列表https://www.centos.org/download/mirrors/

但是我进入这个镜像网站里有好多目录,我该怎么做,比如下面这个北京理工大学的CentOS镜像网站 http://mirror.bit.edu.cn/centos/

我们先找到相对应的系统版本,比如我是CentOS7,进入后发现有好多目录,其实这些目录称为容器,提供某类型软件,比如操作系统软件os与一般软件updates这两个容器,其下面有一个repodata目录,那就是我们软件列表清单相关数据存放处

经过以上操作,我可以找到一个更新CentOS7的系统的容器http://mirror.bit.edu.cn/centos/7/os/x86_64/

2) 修改配置文件/etc/yum.repos.d/*.repo

/etc/yum.repos.d目录下新建或修改repo文件,比如我这个CentOS-Bit-Base.repo文件

[bit-base]  #容器名 不能同名
name=CentOS-$releasever -Bit-Base  # 说明容器
baseurl=http://mirror.bit.edu.cn/centos/7/os/x86_64/  #容器地址
gpgcheck=1 #公匙相关
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7   
enable=1   #启动这个容器

#released updates 
[bit-updates]
name=CentOS-$releasever -Bit-Updates
baseurl=http://mirror.bit.edu.cn/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enable=1

3) 查看容器是否启动与清除历史缓存

jinhucheung commented 8 years ago

3. 限制服务端口

3.1 什么是端口(port)

当你启动一个服务时,这个服务根据TCP/IP相关协议启动一个端口(port)在监听,也就是说端口提供服务 端口有以下特点

3.2 查看端口:netstat/nmap

3.3 服务的启动/关闭

请查看Linux 学习之认识系统服务(daemon)

jinhucheung commented 8 years ago

4. 被攻击后主机修复工作

4.1 网管应具备的能力

4.2 主机受攻击后复原工作流程