一:概述

保障系统安全不是靠一两个设备就能完成的,而是需要一系列的网络安全和软件安全的规则共同完成的。无论是初学者还是大神都有必要去了解一下。

二:常见的恶意软件

<1>监测工具

有些软件可以增强系统的安全性,例如网络入侵检测和恶意软件检测;有些软件可能会导致计算机系统出现故障,窃取机密信息。这些恶意软件会根据其特性可以进行分类。种类如下表所示:

种类

说明

Virus

它不是一个独立的程序,本身无法运行。这种病毒会通过重写另一个程序并感染自身无法正常工作

Worm

它是一个独立程序,不需要其他任何程序即可感染自身,通过网络还可以传播到其他计算机中

Trojan horse

寄宿在计算机里的一种非授权的远程控制程序,会窃取密码等机密信息并下载恶意程序

Rootkit

是一中特殊的恶意软件,可以隐藏自身的入侵痕迹,一般和木马病毒等恶意程序结合使用

Backdoor

可以对系统非法远程控制,用户无法通过正常的操作禁止其运行

Ransomware

勒索病毒,主要以邮件、程序木马等形式传播,病毒利用加密算法对用户系统中的文件加密,必须通过解密的私钥才可以破解

Spauware

私密收集用户的信息,并将信息发送到第三方软件中

虽然有恶意软件,但是我们也可以通过安全监测工具对系统中的流量监控、入侵检测和漏洞检查,排查系统的安全隐患。安全监测工具如下表所示:

工具

说明

tcpdump

基于命令行的流量监控器

Wireshark

基于GUI的流量监控器

ntopng

基于Web的流量监控器

Cacti

基于Web的网络设备监视工具

Snort

网络入侵防护(IPS)和入侵监测(IDS)

nmap

端口扫描仪

OpenVAS

网络漏洞检查

<2>文件检测工具

aide(Advances Instrusion Detection  Environment)命令,可以用来检测文件是否被篡改。

格式:aide [选项] {子命令}

aide命令会初始化数据库中存储的文件属性与实际文件进行比较,以检查篡改。而需要在数据库中存储的文件属性有UID、GID、权限、文件大小、inode、ACL、扩展属性、摘要信息等。

aide命令的子命令及说明如下表所示:

子命令

说明

--init

初始化数据块

--update

检查数据库并更新

--check

通过参考数据库,检查文件受否备篡改

--compare

比较更新前后的数据库

/etc/aide.conf是aide(/usr/sbin/aide)命令的辅助配置文件。/etc/aide.conf文件中包括MACRO LINES 、CONFIG LINES和SELECTION LINES三种设定行。如果你的系统中没有这个监测工具,需要运行yum install aide或者apt install aide命令安装。

三:Linux系统中的安全策略

Linux是一个开源的操作系统,这会带来系统安全性问题。下面是一些常用的安全策略和防范措施。

Linux系统中软件的升级、更新使软件始终处于最新的状态。Linux系统的升级分为自动升级和手动升级,自动升级一般在授权的Linux系统发行般或者免费版中进行,用户只要输入升级命令,系统就会自动完成升级工作。

yum是Linux下的一个软件包安全工具,同时也是一个软件升级工具。使用yum命令在连接网络情况下可以实现软件的自动升级安装。通过yum命令进行升级其实就是借助yum命令下载指定远程互联网主机上的RPM包,自动安装并解决软件之间的依赖关系。

手动升级就是针对某个系统软件的升级,例如SSH登录工具、GCC编译工具。手动升级并通过手动RPM软件包工具来实现软件的更新,因此升级软件时可能会出现包依赖性的关系。相对来说,手动升级比较麻烦。


端口和服务。在Linux系统中,系统定义了多个可用的端口,这些端口分为只有root用户可以启用的端口和客户端端口。只有root用户可以启用的端口范围是0-1023,这些端口主要用于常见的系统通信服务中。一般情况下,这些端口是预留给预设服务的,例如21端口号是预留给ftp服务的、80端口是预留给www服务的、23端口号是预留给telnet服务的。

1024以上的端口(包括1024)主要是提供客户端软件使用的,这些端口由软件随机分配。例如通过浏览器访问页面时,浏览器会在本地服务器随机分配一个1024以上的端口号,通过该端口号,通过端口号与网页的80端口(www服务)建立连接。

使用telnet命令查看当前服务器的端口监听状态,如下图所示。当前系统中启用的端口有22、111等,这些端口处于监听联机状态。

与安全相关的软件以及Snort入侵防御和安全策略总结_配置文件

执行netstat -antlp命令查看端口对应得服务名称,如下图所示。从执行结果中可以看出,当前系统中启用得端口22对用的服务为sshd,systemd服务对应的端口号为111,同时可以看出每个服务在系统中对应的PID。

与安全相关的软件以及Snort入侵防御和安全策略总结_预处理_02

为了保障系统的安全,一般情况下会在系统中关闭一些不必要的端口,系统管理员经常使用这种策略来保证系统的稳定运行。其实真正影响安全的并不是端口,而是与端口对应的服务。通过systemctl命令判断服务状态,active(running)表示服务是开启状态,如下图所示。

与安全相关的软件以及Snort入侵防御和安全策略总结_ide_03

通常只是系统本身用不到的服务都可以认为是不必要的服务,为了系统可以正常运行,下面是系统运行必须的服务,如下表所示:

fu服务名称

说明

acpid

用于电源管理,该服务对于笔记本和台式机比较重要

Apmd

用于监视系统电源的状态,通过syslog将相关信息写入日志

Kudzu

检测硬件是否变化

crond

为Linux系统下自动安装的进程提供运行的服务

atd

与crond类似,提供在指定时间内做指定事情的服务

keytables

用于装载镜像键盘

iptables

Linux内置的防火墙软件

xineted

支持多种网络服务的核心守护进程

xfs

使用X Windws桌面操作系统必要的服务

network

激活已配置网络接口的脚本程序

sshd

提供远程登录Linux的服务

syslog

记录系统日志的服务

服务和端口都是一一对应、相互依赖的关系的,没有服务运行也就没有端口,端口的开启和关闭就是软件服务的开启和关闭,用户可以指定这些服务的端口号,例如www服务的默认端口号为80,用户在访问的地址后面加上“:81”,表示www服务器运行在非默认的8端口下。

<2>安全设置

对于密码的设置方面,一般情况下,至少是6个字符,要包含数字、字母、下划线、特殊字符等。这种设置密码的方式确实给系统带来了一些安全保障,但还是存在系统安全漏洞,例如密码丢失、密码泄露。太复杂的密码也会对系统管理和维护系统造成负担,因此,用户可以选择密钥认证的方式登录系统。

一般需要禁止系统响应任何从外部或则内部来的ping请求。攻击者会先通过ping命令检测此主机或者IP是否处于活动状态,如果能够ping通某个主机或者IP地址,攻击者会认为此系统处于活动状态,从而进行攻击和破坏;如果没有ping通并受到回应,那么就可以大大增强服务器的安全性。通过echo"1" > /proc/sys/net/ipv4/icmp_echo_ignore_all命令可以禁止ping请求,默认情况下icmp_echo_ignore_all的值为0,表示响应ping的请求操作。

Linux系统中提供了各种账户,在系统安装完毕之后,如果不需要一些用户或者用户组,应该立即删除,以免系统遭遇攻击,引发系统的安全性问题,删除系统默认不用的账户使用命令userdel,删除不必要的组使用groupdel命令。

SELinux是一种内核强制访问控制的安全系统。由于SELinux和现有的Linux系统应用程序及内核模块的兼容性还存在一些问题,因此建议初学者先关闭SELinux,等到深入了解Linux系统后,再深入研究SELinux。

四:Snort入侵防御

Snort是1998年Martin Roesch开发的开源网络的IPS(入侵防御系统)和IDS(入侵检测系统)。IPS用于监视网络及网络设备,可以即时中断、调整或隔离不正常的行为;IDS通过软硬件对网络和系统的运行状况进行监视,尽可能发现各种攻击行为,保证网络系统资源的安全。由于Snort为大部分的Linux发行版本提供了软件包,用户在安装软件包时非常方便。在CentOS中安装Snort时,需要使用yum install snort指定最新版本的Snort。在Ubuntu中可以使用apt install snort命令安装Snort。

下面是根据systemctl命令进行Snort的启动和停止的操作。

启动Snort:systemctl start snortd.

停止Snort:  systemctl stop snortd。

Snort的有效化:systemctl enable snortd.

Snort的无效化:systemctl disable snortd

Snort默认的配置文件是/etc/snort/snort.conf,该配置文件定义了网络变量、解码器、基础检测引擎、预处理器、自定义规则等。rules目录中记录了Snort的规则文件。snort目录的内容如下图所示。

首先说一下CentOS中安装snort安装步骤(虚拟机上刚好没有安装这个)

因为可能直接使用yum install snort会出现以下的情况

<1>会出现找不到相关软件包的错误

与安全相关的软件以及Snort入侵防御和安全策略总结_配置文件_04

<2>

与安全相关的软件以及Snort入侵防御和安全策略总结_ide_05

<3>


<4>如果报错了,就使用下面方式

与安全相关的软件以及Snort入侵防御和安全策略总结_预处理_06

与安全相关的软件以及Snort入侵防御和安全策略总结_ide_07

<6>进入解压目录中

与安全相关的软件以及Snort入侵防御和安全策略总结_ide_08

<5>编译运行libpcap

与安全相关的软件以及Snort入侵防御和安全策略总结_预处理_09

<6>

查看rules目录中Web相关的规则文件,

在使用Snort之前需要更改配置文件/etc/snort/snort.conf中规划不匹配的情况,Ubuntu中不需要修改。在CentOS中修改配置文件时需要提前备份好,避免造成配置文件出错。在CentOS中配置文件的命令为:cp /etc/snort/snort.conf /etc/snort/snort.conf.install.配置文件中的路径需要修改。

通过vi编辑器打开配置文件/etc/snort/snort.conf,检查文件预处理器的设置。检查HTTP中的http_inspect预处理器和http_inspect_server预处理器。

检查FTP中ftp_telnet预处理器、ftp_telnet_protocol预处理器(telnet)和ftp_telnet_protocol预处理器(ftp server default),=

检查SMTP中的smtp预处理器,

检查SSH中的预处理器ssh,

snort-stat命令是Debian和Ubuntu提供的小的Perl脚本,基于Snort输出的日志生成到检测到的数据包统计信息,并将生成的统计信息通过电子邮件发送给用户。Ubuntu中需要安装snort-common安装包,安装命令为:apt install snort-common,如下图所示。

yum install snort-common

生成的数据包统计信息的命令格式如下:

cat <snort日志> |snort-stat| [选项]

其中snort-stat命令的选项及其说明如下表所示。

选项

说明

-d

调式(debug)

-r

执行IP地址名称解析并转换为域名

-h

以HTML形式(html)输出

目前,Snort已发展为一个具有多平台和实时流量分析等特性的网络入侵检测和防御系统。

五:安全策略总结

与安全相关的软件以及Snort入侵防御和安全策略总结_预处理_10

到这里,Linux基础知识基本就这些了,可以告一段落了。后续还会有更细致的内容,由于自己也是初学者,写的博客,如有错误点请私聊我,以便于我进行更正。感谢大家的关注和阅读。

后续更深入学习这一模块时再更新有价值的关于Linux的知识点。