Linux网络学习笔记-网络安全和主机基本防护

前言

Linux security

网络数据包连接进入主机的流程

数据包进入主机的流程

Mvfd1g.png

1.经过防火墙

你的连接能不能成功首先需要通过防火墙。默认的Linux防火墙就有两个机制,独立存在。因此默认我们就有两层防火墙:第一层是数据包过滤式的Net Filter防火墙;第二层则是通过软件管理的TCP Wrappers防火墙。

  • 第一层:数据包过滤防火墙

    要进入Linux本机的数据包都会先通过Linux内核的预设防火墙Net Filter。其实就是iptables这个软件所提供的防火墙功能。为何称为包过滤防火墙?因为它主要是针对TCP/IP的数据包头来进行过滤的机制,主要控制的是MAC,IP,ICMP, TCP,UDP的端口与状态

  • 第二层:TCP Wrappers

    实际上就是/etc/hosts.allow/etc/hosts.deny的配置文件功能,针对TCP的Header进行再次分析,可以设置一些机制来过滤某些IP或者port。

2.服务的基本功能

内置的防火墙是Linux的内建功能,防火墙主要管理MAC,IP,PORT等数据包头部信息。如果想限制某些目录的权限,就需要通过权限以及服务器软件提供的相关功能实现了。

3.SELinux对网络服务的权限控制

为了避免权限误用,或者是程序问题造成的安全问题,就需要SELinux了,它可以针对网络服务设置一些规则,让程序拥有的权限非常有限,即使配置失误,拥有的是root权限,该程序的执行操作也是被限制的。

4.使用主机的文件系统资源

浏览器连接到WWW的目的就是获取文件。网络数据包最终是要向主机获取文件系统数据的。这里假设使用httpd来获取系统的文件数据,但是httpd默认是由一个系统账户httpd来启动的,所以,你的网页数据权限就是要让这个程序可读才行。

常见攻击手法和相关保护

1.嗅探账户和密码

常规的信息收集,指纹识别…..最后爆破密码

解决办法:

  • 减少信息的暴露
  • 建立较严格的密码设置规则
  • 完善权限设置

2.利用系统漏洞程序

网络软件漏洞或者系统漏洞让hacker拿到shell,甚至可以提权为root

解决办法:

  • 关闭不需要的网络服务
  • 保持更新
  • 关闭不需要的软件

3.社工

钓鱼…人的问题

4.DDOS

不是入侵你的系统,而是要让你的系统无法正常提供服务,小网站基本不太可能…主要的攻击手段是各类泛洪攻击

5.主要的防御手段

  1. 建立完善的登录密码规则
  2. 完善的主机权限设置
  3. 设置自动升级和修补软件漏洞,移除危险软件
  4. 强化安全设置的项目
  5. 利用iptables等防火墙强化
  6. 利用主机监控软件来分析主机状况和日志文件

限制连接端口

什么是port

启动一个网络服务,这个服务会依据TCP/IP的相关通讯协议启动一个端口进行监听,那就是TCP/UDP数据包的端口。网络连接由于是双向的,所以服务器端需要启动一个监听的端口,客户端也需要随机启动一个端口来接收响应的数据。

  • 服务器端启动的监听端口是固定的

  • 客户端启动程序时,随机启动一个大于1024的端口

  • 一台服务器可以同时提供多种服务

  • 一共有65536个port

    由于TCP/UDP报头数据中可以知道port占据16位,所以主机才会有65536个port

    • 只有root才能启动保留的port
    • 大于1024用于client端的port
  • 建立可靠的服务需要TCP协议,也就需要三次握手。如果是面向非连接的,使用UDP即可。

  • 通信协议可以启用在非正规的端口

端口的查看

1.netstat

列出正在监听的网络服务

1
netstat -tunl

列出已连接的网络连接状态

1
netstat -tun

删除已建立或者在监听中的连接

1
netstat -tunp

找到pid以后直接kill掉即可

2.nmap

是一个经常使用的扫描工具,在此不作赘述

端口与服务的启动/关闭及开机时状态设定

port其实是在执行某些软件之后被软件激活的,所以要关闭某些端口,直接将软件关闭即可。关闭的方法可以使用kill,但是不是正统的办法,想要正确关闭,需要使用系统提供的script即可。

1.stand alone和super daemon

  • stand alone:就是直接执行该服务的执行文件,让该执行文件直接加载到内存中运行。可以让该服务具有较快速的响应。一般来说这种方式启动的script都会放到/etc/init.d这个目录下面。平时可以使用/etc/init.d/sshd restart这类方式来重新启动这种服务。
  • super daemon:用一个超级服务来统一管理某些特殊服务。用的是xinetd这个super daemon。响应速度比较慢,但是可以通过super daemon额外提供一些管理,例如控制何时启动。配置文件放在/etc/xinetd.d当中。

如果想要将系统上面的111端口关闭,需要进行这样的过程:
MzDfoD.png

2.默认启动的服务

上述只能将某个当前的服务开启或者关闭,还需要控制它的开机自启,所以需要用到init和systemd这两个服务管理。

1
2
3
chkconfig --list|grep sshd
chkconfig --level 35 sshd off 关闭开机自启
/etc/init.d/sshd stop 当前关闭

上述都是使用init这个比较落后的方式来管理系统的服务,现在多数采用systemd结合systemctl命令的方式来进行管理,非常简便,具体参考之前的博文——Linux基础学习笔记的系统服务。

SELinux管理原则

SELinux使用所谓的委任式访问控制,可以针对特定的程序与特定的文件资源来进行权限的管理。即使你是root,那么在使用不同的程序时,你所取得的权限也不一定是root,需要视设定而定。

暂且搁置…

Author: Gard3nia
Link: https://gardenia30.top/2019/11/25/Linux网络学习笔记-网络安全和主机基本防护/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.