企业安全排查及安全加固手册

Yikjiang2025-04-03文章来源:SecHub网络安全社区


漏洞排查

Goby

介绍

Goby是是一个图形化的漏洞扫描工具,他的便捷在于集成漏扫工具,支持大量插件,并且可以让新手自定义poc,大大降低了黑客的入门门槛。

使用步骤

添加扫描任务

1712459876554402bc333bd524fefb4c1ba8b8979e2ae.png

支持添加插件

171246020206725f00f98d4cb4a06ab440ed25d6358f4.png

headhost漏扫检测工具

17124599846131c385a8e79b74110856177b53e3011cd.png

效果图

1712459808584dcf2fe99e32f4ef291dc75edf1416645.png

Fscan

介绍

fscan 是一个内网综合扫描工具,方便一键自动化、全方位漏洞扫描。它支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能。

常用命令

.\fscan.exe -h <target> -p 0-65535 
.\fscan.exe -h 192.168.1.1/24 -p 0-65535
.\fscan.exe -hf <target.txt>

fscan.exe -h 192.168.1.1/24 -np -nopoc(跳过存活检测 、不进行poc攻击)
fscan.exe -h 192.168.1.1/24 -rf id_rsa.pub (redis 写公钥)
fscan.exe -h 192.168.1.1/24 -rs 192.168.1.1:8888 (redis 计划任务反弹shell)
fscan.exe -h 192.168.1.1/24 -c whoami (ssh 爆破成功后,命令执行)
fscan.exe -h 192.168.1.1/24 -m ssh -p 2222 (指定模块ssh和端口)
fscan.exe -h 192.168.1.1/24 -pwdf pwd.txt -userf users.txt (加载指定文件的用户名、密码来进行爆破)
fscan.exe -h 192.168.1.1/24 -o /tmp/1.txt (指定扫描结果保存路径,默认保存在当前路径) 
fscan.exe -h 192.168.1.1/8  (A段的192.x.x.1和192.x.x.254,方便快速查看网段信息 )
fscan.exe -h 192.168.1.1/24 -m smb -pwd password (smb密码碰撞)
fscan.exe -h 192.168.1.1/24 -m ms17010 (指定模块)
fscan.exe -hf ip.txt  (以文件导入)

效果图

1712402503931495be48ae64148d382bf905f789e5e0e.png

Fscanoutput

https://github.com/ZororoZ/fscanOutput/releases/download/v2.20/FscanOutput_v2.2.py

介绍

一个用于处理fsacn输出结果的小脚本(尤其面对大量资产的fscan扫描结果做输出优化,让你打点快人一步!!!),可将结果转换为xlsx,并且用不同的sheet展示不同的类型

常用命令

python3 fscanOutput.py result.txt

效果图

171240298872140b0f6c3a04b48ce82720da8422662d6.png

Nuclei

介绍

使用Go语言开发的基于Yaml语言的漏洞扫描器

常用命令

// 可以使用此命令进行手动更新,也可以等待Nuclei24小时自动更新。
nuclei -update

扫描单个目标:nuclei -u https://example.com 
扫描多个目标: nuclei –l <资产.txt>

-o 输出发现的问题

效果图

1712459029625110787b7e9374110a7b44d5757aff1af.png

输出报告

1712459136634f5800fdd51874ffb9fadfd9a594a1ccb.png

Afrog

扫描单个目标:afrog -t http://example.com -o result.html
扫描多个目标:afrog -T urls.txt -o result.html
在线升级:afrog --up

效果图

171245775178067e56702ecea4c2f95796f32e5c8379c.png

生成HTML报告

17124579493350b3e874380904fffa37abf4025d71c6a.png

系统加固

Windows

Windows系统基本操作

Windows常见目录

system32 存放系统配置文件 SysWOW64 Windows操作系统的子系统 Config/SAM 存放windows帐号和密码 etc/hosts DNS解析文件 Program files/ Program files (x86) 64位系统安装在Windows操作系统的子系统,32位下会安装在x86下 Perflogs 日志目录

Windows常用系统命令

命令 说明
ver 查看系统版本
hostname 查看主机名
ipconfig /all 查看网络配置
net user/localgroup/share/config 查看用户/用户组/共享/当前运行可配置服务
at 建立或查看系统作业
netstat 查看开放端口
secpol.msc 查看和修改本地安全设置
services.msc 查看和修改服务
eventvwr.msc 查看日志
regedit 打开注册表
whoami 查看当前操作用户的用户名

Windows常见端口

端口 说明
80/8080/8081 HTTP协议代理服务器常用端口号
443 HTTPS协议代理服务器常用端口号
21 FTP
22 SSH
23 Telnet
1521 Oracle
1433 Mssql
1080 QQ
3306 Mysql
25 SMTP

Net命令的使用

命令 说明
创建空密码账户test1 net user test1 /add
查看账户test1的详细信息 net user test1
删除账户test1 net user test1 /del
创建普通用户test2,密码为passwd net user test2 passwd/add
把用户test1用户加如管理员组 net localgroup administrators test1 /add
把test1用户退出管理员组 net localgroup administrators test1/del
启用[停用]test1账户 net user test1 /active:yes[no]
新建[删除]组admin net localgroup admin /add[del]
查看本地开启的共享 net share
常看开启哪些端口 netstat

Windows系统加固

账号及安全策略

账号安全是计算机系统安全的第一关,如果计算机系统账号被盗用,那么计算机将非常危险,入侵者可以任意控制计算机系统,如果计算机中存在着重要的机密文件,或者银行卡号和密码,那么损失会非常严重。

账号安全设置

设置方法:“开始”—“运行”输入secpol.msc(控制面板——管理工具)

立即生效:gpupdate /force

密码必须符合复杂性要求:启用 密码长度最小值 8个字符 密码最长使用期限: 30天 强制密码历史: 3个记住的密码

17168156366832d0f11430cca43f984cc91d15874c1e6.png

帐户锁定阀值: 3次无效登陆 帐户锁定时间: 30分钟 复位帐户锁定计数器:30分钟之后

1716815644090f8e047bd7cff47de9b5ba734db28e404.png

禁用Guest账户权限

“我的电脑“右击”管理“打开—计算机管理—本地用户和组—用户—Guest—右键—属性—常规—选择“账户已禁用”。

net user guest /active:no

1716815805712740743318b604c91b651a8d53ae48fcb.png

Administartor账号、组重命名

Administartor账号、组重命名,可增加账号安全性

wmic useraccount where name='Administrator' call Rename admin

17168158889738bb7dcd2e869432cb53f03a597a8276c.png

1716815874664985445c6bcf04cd4908fe9e98ca35bd7.png

日志及审核策略

在一个完整的信息系统里面,日志系统是一个非常重要的功能组成部分。它可以记录下系统所产生的所有行为,并按照某种规范表达出来。我们可以使用日志系统所记录的信息为系统进行排错,优化系统的性能,或者根据这些信息调整系统的行为。在安全领域,日志系统的重要地位尤甚,可以说是安全审计方面最主要的工具之一。

对重要事件进行审核记录,方便日后出现问题时查找问题根源。

17168159411432a57ed9b3caa41c39cfef1eb03575ec6.png

调整事件日志的大小及覆盖策略

日志安全设置

设置方法:“开始”—“运行”输入eventvwr.msc

增大日志大小,避免由于日志文件容量过小导致重要日志记录遗漏,设置80000以上

1716816095838719138c019d94c6a9dda40faf88eed65.png

安全选项策略设置

本地安全策略->本地策略->安全选项

Microsoft 网络服务器:当登录时间用完时自动注销用户(启用)

目的:可以避免用户在不适合的时间登录到系统,或者用户登录到系统后忘记退出登录

17168164004272ce51a8dc86140b79aee741ec9dc2cef.png

Microsoft 网络服务器:在挂起会话之前所需的空闲时间(小于等于30分钟)

目的:设置挂起会话之前所需的空闲时间为30分钟

1716816419326a69ff8beedf946eebe4b03ff50955464.png

Microsoft 网络客户端:发送未加密的密码到第三方SMB服务器(禁用)

目的:禁止发送未加密的密码到第三方SMB服务器

1716816431003cdd24db1858c4e91acf6528e239f8c9b.png

故障恢复控制台:允许对所有驱动器和文件夹进行软盘复制和访问(禁用)

目的:禁止它访问硬盘驱动器上的所有文件和目录。它仅允许访问每个卷的根目录%systemroot%目录及子目录,即使是这样它还限制不允许把硬盘驱动器上的文件拷贝到软盘上

17168164469608b6a1d70b4c4400985d7f78d1f299d03.png

故障恢复控 制台:允许自动系统管理级登录(禁用)

目的:恢复控制台是Windows 2003的一个新特性,它在一个不能启动的系统上给出一个受限的命令行访问界面。可能会导致任何可以重起系统的人绕过账号口令限制和其它安全设置而访问系统

171681646024363d3d0ee89bc480ea80c8d7d811be97b.png

关机:清除虚拟内存页面文件(启用)

目的:某些第三方的程序可能把一些没有的加密的密码存在内存中,页面文件中也可能含有另外一些敏感的资料。关机的时候清除页面文件,防止造成意外的信息泄漏

17168164900306e3d240cdfc241fcabd085b7938cddc7.png

关机:允许系统在未登录前关机(禁用)

目的:在未登录前不能关闭计算机

1716816555558a53f300c304a40ebbae694e272d22088.png

交互式登录:不显示上次的用户名(启用)

目的:登陆时不显示上次的用户名,防止暴露用户名。

1716816563718b038bb0523654f178e298c827c6f7b7a.png

交互式登录:不需要按Ctrl+Alt+Del(禁用)

目的:登录时需要按CTRL+ALT+DEL

17168165716648aa76babc84e4ad7a0e1a44733a58e6a.png

交互式登录:可被缓存的前次登录个数(设置缓存数为0,此项对域服务器无效。)

目的:登陆时不显示上次的用户名,防止暴露用户名

171681659158219d1c8ffc5a240eb909e2f1432222baa.png

网络访问:不允许SAM帐户和共享的匿名枚举(启用)

目的:禁止使用匿名用户空连接枚举系统敏感信息

1716816598901ed84f5cad804429e8f5bb4bcb4b5ef05.png

网络访问:不允许为网络身份验证储存凭证或 .NET passports(启用)

17168166054554aacf3d696d94a6c936b2898820353f1.png

审核:如果无法记录安全审核则立即关闭系统 (启用)

1716816615239e26683ff34484cb6b4bf5ee0f78a2f32.png

审核:对全局系统对象的访问进行审核(启用)

171681662066991771d198aa94fb5bb7ccbc356069ca3.png

网络访问:本地账户的共享和安全模式:仅来宾–本地账户以来宾用户身份验证

17168166279425965838970b2456d82926210da19a599.png

网络访问:可匿名访问的共享(全部删除)

17168166358772501c088d22c4b71b31e70c0df602a9c.png

网络访问:可匿名访问的命名管道 (全部删除)

17168166417205b326765630c4e49b408282b07dd7696.png

网络访问:可远程访问的注册表路径(全部删除)

1716816647743efcd3fea54ba417faf1649f6f8115fed.png

网络访问:可远程访问的注册表路径和子路径 (全部删除)

1716816659728a6a8f0d40e4d4436bac4a90849fe2fab.png

通过终端服务拒绝登陆”中加入Guests、User组

1716816667334a211f6b692da4de499d12e6c808b933d.png

通过终端服务允许登陆”中只加入Administrators组

171681667597097c82d78c5224f2d9e8066d867310444.png

从网络访问此计算机”中删除PowerUsers和BackupOperators

17168166825040aa471c3484b42dcb8aa493109341783.png

“拒绝本地登录”中添加web和guest用户

1716816690938a718fbad02514eaca2b454576fb1a5c1.png

NTFS安全

文件系统又被称作文件管理系统,它是指操作系统中负责管理和存储文件信息的软件机构。文件系统由与文件管理有关的软件、被管理的文件以及实施文件管理所需的数据结构这三部分构成。

从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件的存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等

Windows权限的继承性、累加性、优先性、交叉性和四项基本原则

Windows NT以后的文件,及文件夹共享设置有以下特性:继承性、累加性、优先性、交叉性。

  • 继承性:下级的目录在没有经过重新设置之前,是拥有上一级目录权限设置的。
  • 累加性:是说如一个组GROUP1中有两个用户USER1、USER2,他们同时对某文件或目录的访问权限分别为“读取”和“写入”,那么组GROUP1对该文件或目录的访问权限就为USER1和USER2的访问权限之和。
  • 优先性:权限的这一特性又包含两种子特性,其一是文件的访问权限优先目录的权限,也就是说文件权限可以越过目录的权限,不顾上一级文件夹的设置。另一特性就是“拒绝”权限优先其它权限,也就是说“拒绝”权限可以越过其它所有其它权限,一旦选择了“拒绝”权限,则其它权限也就不能取任何作用,相当于没有设置。
  • 交叉性:指当同一文件夹在为某一用户设置了共享权限的同时又为用户设置了该文件夹的访问权限,且所设权限不一致时,它的取舍原则是取两个权限的交集,也即最严格、最小的那种权限。如目录A为用户USER1设置的共享权限为“只读”,同时目录A为用户USER1设置的访问权限为“完全控制”,那用户USER1的最终访问权限为“只读”。

权限设置

系统分区C盘 administrator、system完全控制 C:\Documents and Settings\ administrator、system完全控制 C:\windows\system32\ administrator读写 C:\progran files 为Common File目录之外的所有目录赋予Administrators 和SYSTEM 完全控制 C:\windows 系统管理员完全控制、system拒绝(继承) C:\windows\system32 其关键程序只允许administrator完全控制 C:\Inetpub\ administrator、system完全控制,必要时可以删除该目录 网站目录所在磁盘 administrator、system完全控制

注册表安全设置

通过注册表,用户可以轻易地添加、删除、修改windows系统内的软件

配置信息或硬件驱动程序,这不仅方便了用户对系统软硬件的工作状态进行适时的调整,于此同时注册表也是入侵者攻击的目标,通过注册表也可称为入侵者攻击的目标,通过注册表种植木马、修改软件信息,甚至删除、停用或改变硬件的工作状态。

HKEY_LOCAL_MACHINE 包含关于本地计算机系统的信息,包括硬件和操作系统数据 HKEY_LOCAL_ROOT 包含各种OLE技术使用的信息技术和文件类别关联数据 HKEY_LOCAL_USER 包含环境变量、桌面设置、网络连接、打印机和程序首选项 HKEY_LOCAL_USERS 包含关于动态加载的用户配置文件和默认的配置文件的信息。有 些信息和HKEY_CURRENT_USER交叉出现 HKEY_CURRENT_CONFIG 包含在启动时由本地计算机系统使用的硬件配置文件的相关信息

利用文件管理器对regedit.exe文件设置成只允许管理员能使用命令访问修改注册表,其他用户只能读取,但不能修改这样就可以防止非法用户恶意修改注册表。

禁止自动登录

编辑注册表 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon(REG_DWORD)值设置为0

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon  /d 0 /f

启用源路由欺骗保护

System\CurrentControlSet\ Services\Tcpip\Parameters\ 新建(REG_DWORD) 值 名称为 DisableIPSourceRouting 参数为 2

reg add " System\CurrentControlSet\ Services\Tcpip\Parameters\ " /v DisableIPSourceRouting   /t REG_DWORD /d 2 /f

目的:防护在网络上发生的源路由欺骗

禁止空链接

删除IPC共享

禁用IPC连接,编辑注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous值为1

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v restrictanonymous  /d 0 /f

删除系统默认共享

删除服务器上的管理员共享

HKLM\System\CurrentControlSet\ Services\LanmanServer\Parameters\AutoShareServer参数为0

#查看默认共享
net share
#删除默认共享
net share <共享名> /del

修改默认3389远程端口

修改注册表

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber

它默认值是3389,这样我们可以修改成自己的想要的端口号,修改的时候要点十进制。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber  /d 4445 /f

关闭135.139.445隐患端口

  • 关闭135端口

”开始“—“运行”,输入”dcomcnfg”,单击“确定”,打开组件服务
右键我的电脑,单击”属性”,在默认属性中去掉”在此计算机上启用分布式COM”前的勾,选择”默认协议”选项卡,选中“面向连接的TCP/IP”,单击”确定”按钮,设置完成,重新启动后即可关闭135端口

  • 关闭139端口

右键我的“网上邻居”,单击“属性”,再打开本地连接的“属性”

选中Internet协议(TCP/IP),常规选项卡-高级

设置WINS选项卡”禁用TCP/IP上的“NETBIOS”

  • 关闭445端口

修改注册表,添加一个键值

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters在右面的窗口新建一个SMBDeviceEnabled REG_DWORD类型键值为 0。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT" /v SMBDeviceEnabled   /t REG_DWORD /d 0 /f

让配置立即生效

  1. 修改完后立即生效
  2. 重启explorer.exe进程就可以让修改注册表生效
  3. 重启计算机

Linux

Linux系统基本操作

文件结构图及关键文件功能介绍

Linux文件结构

171681771518721c41fb8864a4a8eba8e961e17419ddf.png

Linux文件结构图

171681781210072b7845d89cf447ab804b53940ff5956.png

  • /bin
    bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
  • /boot:
    这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
  • /dev :
    dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
  • /etc:
    etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
  • /home
    用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
  • /lib
    lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
  • /opt
    opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

  • echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin
    s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
  • /selinux
    这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
  • /srv
    该目录存放一些服务启动之后需要提取的数据。
  • /sys

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
  • /usr
    usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
  • /usr/bin:
    系统用户使用的应用程序。
  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:
    内核源代码默认的放置目录。
  • /var
    var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。

值得提出的是 /bin/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

重要文件介绍
目录 功能
/etc/passwd 记录系统本地用户的属性信息,如UId,Gid,家目录等信息
/etc/shadow 存放用户的口令等信息,只有系统管理员用户能查看
/etc/pam.d/system-auth 账户安全配置文件
/etc/login.defs 设置用户账户限制的配置文件,对root用户无效
/etc/securetty 网络配置文件
/etc/pam.d/su su命令配置
/etc/hosts.allow
/etc/hosts.deny
允许/拒接某网段远程连接到主机
/etc/profile 保存Linux全局环境变量信息,如umask,bash历史命令设置

账号和权限

/etc/passwd

1716818177159b2ba12167e1e41b1a489c96ab34f7ef1.png

/etc/shadwo

17168181927477d807c49fc9b4932a31850eb0b9d6da3.png

#添加用户 useradd <用户名> #删除用户 userdel [-r][-f] <用户名> #锁定/解锁用户 passwd -l <用户名> passwd -u <用户名> #用户属性 usermod -L <用户名>锁定用户 usermod -U <用户名>解锁用户 #查看当前用户 id

权限管理

解析文件权限

171681833107271ee991f98974ef4b2ab1d1d1792c991.png

1716818337824f3280e7c74df48fc80cd7151c5650885.png

文件系统安全
#查看权限 ls -l #修改权限 chmod //用来变更文件或目录的权限 chown //用来变更文件或目录的拥有者或所属群组 chgrp //用来变更文件或目录的所属群组
设置合理的初始文件权限
umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644755 文件夹其权限规则为:777-022=755 文件其权限规则为: 777-111-022=644(因为文件默认没有执行权限) 修改UMASK值: 1、直接在命令行下umask xxx (重启后消失) 2、修改/etc/profile中设定的umask值

1716818554567166c80fe2b994407a197ce677f8fe306.png

系统加固

锁定系统中多余的自建帐号

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆。

执行命令 #cat /etc/passwd #cat /etc/shadow 加固方法: 使用命令passwd -l <用户名>锁定不必要的账号。 使用命令passwd -u <用户名>解锁需要恢复的账号。

检查shadow中空口令帐号

#检查方法: awk -F ":" '($2=="!"){print $1}' /etc/shadow 加固方法: 使用命令passwd -l <用户名>锁定不必要的账户。 使用命令passwd -u <用户名>解锁需要恢复的账户。 使用命令passwd <用户名>为用户设置密码

设置系统密码策略

#执行命令 cat /etc/login.defs|grep PASS查看密码策略设置 #加固方法: vi /etc/login.defs修改配置文件 PASS_MAX_DAYS 90 //用户的密码最长使用天数 PASS_MIN_DAYS 0 //两次修改密码的最小时间间隔 PASS_MIN_LEN 7 //密码的最小长度 PASS_WARN_AGE 9 //密码过期前多少天开始提示

禁用root之外的超级用户

#检测方法: awk -F ":" '($3=="0"){print $1}' /etc/passwd 检查用户ID为0的用户 #加固方法: passwd -l <用户名> 锁定用户

重要文件加上不可改变属性

chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/gshadow chattr +i /etc/group chattr +i /etc/inetd.conf chattr +i /etc/httpd.conf

Umask安全

第一个0代表suid 丢弃的权限; 第二个0代表本文件/目录拥有者什么权限都没丢弃 第三个2代表本文件/目录的用户组丢弃了w权限 第四个2代表本文件/目录的其他用户能使用的权限只有有r和x 实际权限=7777-0022 设置合理的umask权限 umask 0022

SSH安全

禁止root用户进行远程登录 检查方法: cat /etc/ssh/sshd_config | grep PermitRootLogin 是否为no 加固方法 vi /etc/ssh/sshd_config PermitRootLogin no 更改服务端口 vi /etc/ssh/sshd_config Port 2222 更改ssh端口 #屏蔽SSH登录banner信息 检查方法: # cat /etc/ssh/sshd_config 查看文件中是否存在banner字段,或banner字段为NONE # cat /etc/motd 查看文件内容,该处内容作为banner信息显示给登录用户 加固方法: #vim /etc/ssh/sshd_config 添加: banner NONE #vim /etc/motd 删除全部内容或更新成自己想要添加的内容

设置账户锁定登录失败锁定次数、锁定时间

检查方法: # cat /etc/pam.d/system-auth|grep auth 查看有无auth required pam_tally.so 条目的设置 加固方法: #vi /etc/pam.d/system-auth auth required pam_tally.so oneer=filad deny=6 unlock_time=300 设置为密码连续错误6次,锁定时间300 秒 解锁用户:faillog -u <用户名> -r
设置BASH保留历史命令的条目
检查方法: cat /etc/profile | grep HISTSIZE HISTSIZE=1000 加固方法: #vim /etc/profile 修改HISTSIZE=5即保留最新执行的5条命令
阻止系统响应任何从外部/内部来的ping请求
加固方法: 执行命令 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 其他客户端就不能ping通你的服务器了。

1716819463177a38b6c875a824d8abba32bf3fdde8622.png

数据库安全加固

Mysql基本操作

为初始安装的mysql设置登录密码并登录

使用MySQL自带的命令mysqladmin设置root密码 # mysqladmin -u root password "123456.." 使用mysqladmin命令更改root密码 # mysqladmin -u root -p123456.. password "1234567.." 旧密码 新密码 登录MySQL #mysql -u root -p

数据库管理

MySQL命令 功能
show databases; 查看服务器中当前有哪些数据库
use 数据库名; 选择所使用的数据库
create database 数据库名; 创建数据库
drop database 数据库名; 删除指定的数据库

1716822446426226f0625f6284b5d8e072a600cb93f38.png

mysql安装后默认会创建三个数据库information_schema、mysql和test, 其中名为“mysql”的数据库很重要,它里面保存有MYSQL的系统信息,用户修改密码和新增用户,实际上就是针对该数据库中的有关数据表进行操作。

数据库管理

Mysql命令 功能
create table 表名 (字段设定列表); 在当前数据库中创建数据表
show tables; 显示当前数据库中有哪些数据表
describe [数据库名.]表名; 显示当前或指定数据库中指定数据表的结构(字段)信息
drop table [数据库名.]表名; 删除表

记录的查看、插入、修改与删除

MySQL命令 功能
insert into 表名(字段1,字段2,……)
values(字段1的值, 字段2值,……);
向数据表中插入新的记录
update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式; 修改、更新数据表中的记录
select 字段名1,字段名2……from 表名 where 条件表达式; 从数据表中查找符合条件的记录
select * from 表名; 显示当前数据库的表中的记录
delete from 表名 where 条件表达式; 在数据表中删除指定的记录
delete from 表名; 将当前数据库表中记录清空

MySQL 安全加固

删除默认数据库和数据库用户

MySQL初始化后会自动生成空用户和test库,进行安装的测试,这会对数据库的安全构成威胁,有必要全部删除,最后的状态只保留单个root即可,当然以后根据需要增加用户和数据库。

mysql> show databases; mysql> drop database test; //删除数据库test mysql> use mysql; mysql> delete from db; //删除存放数据库的表信息,因为还没有数据库信息。 mysql> delete from user where not (user='root'); // 删除初始非root的用户 mysql> delete from user where user='root' and password=''; //删除空密码的root尽量重复操作 mysql> flush privileges; //强制刷新内存授权表。

改变默认mysql管理员帐号

改变默认的mysql管理员账号也可以使mysql数据库的安全性有较好的提高,因为默认的mysql管理员的用户名都是root

mysql> update mysql.user set user='admin' where user='root';

17168235707174818d9d55d1e4ba4b556e840b48422b1.png

禁止远程连接数据库

使用命令netstat 查看默认的3306端口是打开的,此时打开了mysql的网络监听,允许用户远程通过帐号密码连接数本地据库,默认情况是允许远程连接数据的。为了禁止该功能,启动skip-networking,不监听sql的任TCP/IP的连接,切断远程访问的权利,保证安全性

# vi /etc/my.cf //将#skip-networking注释去掉。

171682365211345aea363541d496bb6f4c1abf69089cb.png

限制用户连接的数量

数据库的某用户多次远程连接,会导致性能的下降和影响其他用户的操作,有必要对其进行限制。可以通过限制单个账户允许的连接数量来实现,设置my.cnf 文件的mysql中的max_user_connections变量来完成。GRANT语句也可以支持资源控制选项来限制服务器对一个账户允许的使用范围。

#vi /etc/my.cnf [mysqld] max_user_connections=2

本地文件读取保护

防止MySQL使用“LOAD DATA LOCAL INFILE”读取主机上的文件 vim /etc/my.cnf set-variable=local-infile=0

数据库的备份

1).直接备份数据库所在的目录 使用cp、tar等命令直接备份数据库所存放的目录 2.使用mysqldump命令备份和恢复 mysqldump -u 用户名 -p [密码] [选项] [数据库名] [表名] > /备份路径/备份文件名 mysql -u root -p [数据库名] < /备份路径/备份文件名