解决方案

全网最全安全加固指南

seo靠我 2023-09-25 01:59:09

干货 | 全网最全安全加固指南

安全加固相关概念阐述

安全加固定义

安全加固和优化是实现信息系统安全的关键环节。通过安全加固,将在信息系统的网络层、主机层、软件层、应用层等层次建立符合安全需求的安全状态,并SEO靠我以此作为保证客户信息系统安全的起点。

安全加固是配置软件系统的过程,针对服务器操作系统、数据库及应用中间件等软件系统,通过打补丁、强化帐号安全、加固服务、修改安全配置、优化访问控制策 略、增加安全机制等SEO靠我方法,堵塞漏洞及“后门”,合理进行安全性加强,提高其健壮性和安全性,增加攻击者入侵的难度,提升系统安全防范水平。

为什么需要安全加固

应用系统运行所需的软硬件,往往存在以下安全问题:

安装、配置不符合安全需SEO靠我求参数配置错误使用、维护不符合安全需求系统完整性被破坏被注入木马程序帐户/口令问题安全漏洞没有及时修补应用服务和应用程序滥用应用程序开发存在安全问题等

安全加固内容

正确的安装安装最新和全部OS和应用软件SEO靠我的安全补丁操作系统、系统软件、应用软件的安全配置系统安全风险防范提供系统使用和维护建议系统功能测试系统安全风险测试系统完整性备份必要时重建系统等

安全加固目标

加固目标也就确定系统在做过加固和优化后,达到SEO靠我的安全级别

解决目标系统在安全评估中发现的技术性安全问题。对系统性能进行优化配置,杜绝系统配置不当而出现的弱点。

通常不同环境下的系统对安全级别的要求不同,由此采用的加固方案也不同。

安全加固原则

明确加固目SEO靠我标的结果必须能够明确做加固和优化的系统如何在功能性与安全性之间寻求平衡。

修补加固内容不能影响目标系统所承载的业务运行

修补加固不能严重影响目标系统的自身性能

修补加固操作不能影响与目标系统以及与之相连的其SEO靠我它系统的安全性, 也不能造成性能的明显下降

安全加固基线的内容

系统加固

Windows系统安全加固

Windows常用系统命令 命令说明ver查看系统版本hostname查看主机名ipconfig /all查SEO靠我看网络配置net user/localgroup/share/config查看用户/用户组/共享/当前运行可配置服务at建立或查看系统作业netstat查看开放端口secpol.msc查看和修改本地安SEO靠我全设置services.msc查看和修改服务eventvwr.msc查看日志regedit打开注册表whoami查看当前操作用户的用户名 Windows常见端口端口说明80/8080/SEO靠我8081HTTP协议代理服务器常用端口号443HTTPS协议代理服务器常用端口号21FTP(文件传输协议)协议代理服务器常用端口号23Telnet(远程登录)协议代理服务器常用端口号22SSH(安全登SEO靠我录)、SCP(文件传输)1521Oracle 数据库1433MS SQL SERVER数据库1080QQ3306Mysql数据库25SMTP(简单邮件传输协议) Windows账号及安SEO靠我全策略

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

账号安全SEO靠我设置

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

立即生效:gpupdate /force

账号策略

密码必须符合复杂性要求:启用

密码长度最小值 8个字符

密码最长使用期限: SEO靠我30天

强制密码历史: 3个记住的密码

账号锁定

帐户锁定阀值: 3次无效登陆

帐户锁定时间: 30分钟

复位帐户锁定计数器:30分钟之后

账户密码策略

账户锁定策略

Administartor账号、组重命名

AdmiSEO靠我nistartor账号、组重命名,可增加账号安全性

wmic useraccount where name=Administrator call Rename admin

禁用Guest账户权限

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

net user guest /active:no 日志及审核策略

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

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

审核策略:审核策略更改 成功,失败 审核登陆事件 成功SEO靠我,失败 审核对象访问 失败 审核目录服务访问 失败 审核特权使用 失败 审核系统事件 成功,失败 审核账户登陆事件 成功SEO靠我,失败 审核帐户管理 成功,失败

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

日志安全设置

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

增大日志大小,避免由于日志文件容量过小导致重要日志记录遗SEO靠我漏日志类型 日志大小 覆盖策略 应用程序 80000KB 覆盖早于30天的日志 安全日志 80000KB 覆盖早于30天的日志 系统日志 80000KBSEO靠我 覆盖早于30天的日志

安全选项策略设置

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

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

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

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

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

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

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

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

目的:禁止它访问硬盘驱动器上的所有文件和目录。它仅允许访问每个卷的根SEO靠我目录%systemroot%目

录及子目录,即使是这样它还限制不允许把硬盘驱动器上的文件拷贝到软盘上 故障恢复控 制台:允许自动系统管理级登录(禁用)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

用户权限策略设置

通过终端服务拒绝登陆”中加入Guests、User组“通过终端服务允许登陆”中只加入AdmiSEO靠我nistrators组“从网络访问此计算机”中删除PowerUsers和BackupOperators“拒绝本地登录”中添加web和guest用户 NTFS安全

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

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

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

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

继承性:下级的目录在没有经过重新设置之前,是拥有上一级目录权限设置的。

累加性:是说如一个组SEO靠我GROUP1中有两个用户USER1、USER2,他们同时对某文件或目录的访问权限分别为“读取”和“写入”,那么组GROUP1对该文件或目录的访问权限就为USER1和USER2的访问权限之和。

优先性:权SEO靠我限的这一特性又包含两种子特性,其一是文件的访问权限优先目录的权限,也就是说文件权限可以越过目录的权限,不顾上一级文件夹的设置。另一特性就是“拒绝”权限优先其它权限,也就是说“拒绝”权限可以越过其它所有SEO靠我其它权限,一旦选择了“拒绝”权限,则其它权限也就不能取任何作用,相当于没有设置。

交叉性:指当同一文件夹在为某一用户设置了共享权限的同时又为用户设置了该文件夹的访问权限,且所设权限不一致时,它的取舍原则SEO靠我是取两个权限的交集,也即最严格、最小的那种权限。如目录A为用户USER1设置的共享权限为“只读”,同时目录A为用户USER1设置的访问权限为“完全控制”,那用户USER1的最终访问权限为“只读”。

权限SEO靠我设置

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

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

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

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

开始运行输入“regedit"运行注册表管理器

禁止自动登录

编辑注册表 HKEY_LOCAL_MACHINE\Software\MicrosoSEO靠我ft\Windows NT\CurrentVersion`

Winlogon\AutoAdminLogon(REG_DWORD)值设置为0reg add "HKEY_LOCAL_MACHINE\SOFTSEO靠我WARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /d 0 /f

启用源路由欺骗保护System\CurrentCSEO靠我ontrolSet\ Services\Tcpip\Parameters\ 新建(REG_DWORD) 值 名称为 DisableIPSourceRouting 参数为 2

reg add " SystSEO靠我em\CurrentControlSet\ Services\Tcpip\Parameters\ " /v DisableIPSourceRouting /t REG_DWORD /d 2 /f

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

禁止空链接

删除IPC共享

禁用IPC连接,编辑注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\restrSEO靠我ictanonymous值为1reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v restrictanonymouSEO靠我s /d 0 /f

删除系统默认共享

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

HKLM\System\CurrentControlSet\ Services\LanmanServer\Parameters\AutoShaSEO靠我reServer参数为0 #查看默认共享 net share #删除默认共享 net share <共享名> /del

修改默认3389远程端口

修改注册表

HSEO靠我KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp\PortNumber

它默认值是SEO靠我3389,这样我们可以修改成自己的想要的端口号,修改的时候要点十进制。reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TermSEO靠我inal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /d 4445 /f

关闭135.139.445隐患端口

关闭135端口

”开始“—“运行”,输入”dcomcnfgSEO靠我”,单击“确定”,打开组件服务

右键我的电脑,单击”属性”,在默认属性中去掉”在此计算机上启用分布式COM”前的勾

选择”默认协议”选项卡,选中“面向连接的TCP/IP”,单击”确定”按钮,设置完成,重新SEO靠我启动后即可关闭135端口 关闭139端口

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

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

设置WINS选项卡”禁用TCP/IP上的“NSEO靠我ETBIOS” 关闭445端口

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

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters在右面的窗SEO靠我口新建一个SMBDeviceEnabled 为REG_DWORD类型键值为 0。reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\serviceSEO靠我s\NetBT" /v SMBDeviceEnabled /t REG_DWORD /d 0 /f

让配置立即生效

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

LinuSEO靠我x系统安全加固

系统用户 账号分类: 超级管理员 uid=0, 系统默认用户 系统程序使用,从不登录 新建普通用户 uid大于500

/etSEO靠我c/password

/etc/shadow

liunx用户管理

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

执行ls -l … … 命令查看

输出命令包括7个字段

权限与归属

访问权限

读取:允许查看内容-SEO靠我read

写入:允许修改内容-write

可执行:允许运行和切换-excute

归属关系

所有者:拥有此文件/目录的用户-user

所属者:拥有此文件/目录的组-group

其他用户:除所有者、所属组以外的用户-SEO靠我other

所有用户:以上三类归属称-all

文件系统安全

查看权限:ls -l 修改权限:chmod 777 test chown 123:123 testchgrp root test

SEO靠我置合理的初始文件权限

UMASK命令:

umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644和755

文件夹其权限规则为:777-022=755

文件其权限规则为: 777-111-022SEO靠我=644(因为文件默认没有执行权限)

修改UMASK值:

1、直接在命令行下umask xxx (重启后消失)

2、修改/etc/profile中设定的umask值 linux提权漏洞

由于Linux 内核的内SEO靠我存子系统在处理 Copy-on-Write 时出现竞争条件(漏洞),导致私有的只读内存映射被破坏、获取读写权限后低权限用户可以进一步提权。

1.检查是否有内核升级包:yum check-update |SEO靠我grep kernel

2.升级内核:yum update kernel

3.确认下新版本的内核或 initrd/initramfs 是否有xen-vbd和virtio_blk驱动:#lsinitrd /SEO靠我boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E xen-blkfront|virtio_blk -rwxr--r-- 1 root rSEO靠我oot 23448 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko -rwxrSEO靠我--r-- 1 root root 54888 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-bSEO靠我lkfront.ko

如果没有,则需要给initrd/initramfs安装驱动,然后执行第三步后重启。

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

执行命令

cat /etc/passwd cat /etc/SEO靠我shadow

查看账户、口令文件,与系统管理员确认不必要的账号。对于一些保留的系统伪帐户如:bin, sys,

adm,uucp,lp, nuucp,hpdb, www, daemon等可根据需要锁定登陆SEO靠我

加固方法:

  使用命令passwd -l <用户名>锁定不必要的账号。

使用命令passwd -u <用户名>解锁需要恢复的账号。

检查shadow中空口令帐号

检查方法:

awk -F ":" ($2=="!SEO靠我"){print $1} /etc/shadow

加固方法:

#锁定不必要的账户 passwd -l <用户名>#解锁需要恢复的账户 passwd -u <用户名>#为用户SEO靠我设置密码 passwd <用户名> 设置系统密码策略 执行命令 cat /etc/login.defs|grep PASS #查看密码SEO靠我策略设置 加固方法: vi /etc/login.defs修改配置文件PASS_MAX_DAYS 90 #用户的密码最长使用天数PASS_MIN_DAYS 0 #两次修SEO靠我改密码的最小时间间隔PASS_MIN_LEN 7 #密码的最小长度PASS_WARN_AGE 9 #密码过期前多少天开始提示 禁用root之外的超级用户

检测方法:

#检查用户ID为0的SEO靠我用户 awk -F ":" ($3=="0"){print $1} /etc/passwd

加固方法:

#锁定用户 passwd -l <用户名> 限制能SEO靠我够su为root的用户 #查看是否有auth required /lib/security/pam_wheel.so这样的配置条目 cat /etc/pam.d/su

SEO靠我固方法

在头部添加: auth required /lib/security/pam_wheel.so group=wheel

这样,只有wheel组的用户可以su到root

#将test用户加入到wheelSEO靠我组 usermod -G10 test 重要文件加上不可改变属性 #把重要文件加上不可改变属性 chattr +i /etc/passSEO靠我wd chattr +i /etc/shadow chattr +i /etc/gshadow chattr +i /etc/group SEO靠我 chattr +i /etc/inetd.conf chattr +i /etc/httpd.conf ssh安全

禁止root用户进行远程登录 检查方法:

#是否为noSEO靠我 cat /etc/ssh/sshd_config | grep PermitRootLogin

加固方法

vi /etc/ssh/sshd_config PermitRoSEO靠我otLogin no

更改服务端口

vi /etc/ssh/ssh_config Port 2222 更改ssh端口

屏蔽SSH登录banner信息 检查方法:

#查看文件中是否存在bannerSEO靠我字段,或banner字段为NONE cat /etc/ssh/sshd_config #查看文件内容,该处内容作为banner信息显示给登录用户 catSEO靠我 /etc/motd

加固方法:

vim /etc/ssh/sshd_config

添加:

banner NONE #vim /etc/motd

删除全部内容或更新成自己想要添加的内容

仅允许SSSEO靠我H协议版本2

有两个SSH协议版本,仅使用SSH协议版本2会更安全。

SSH协议版本1有安全问题,包括中间人攻击(man-in-the-middle)和注入(insertion)攻击。

编辑/etc/sshSEO靠我/sshd_config文件并查找下面这样的行:

Protocol 2,1

修改为

Protocol 2 防止误使用Ctrl+Alt+Del重启系统

检查方法:

#查看输出行是否被注释

cat SEO靠我/etc/inittab |grep ctrlaltdel #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

加固方法:

vim /etc/inittabSEO靠我

在行开否添加注释符号“#”

#ca::ctrlaltdel:/sbin/shutdown -t3 -r now 设置账户锁定登录失败锁定次数锁定时间

检查方法:

cat /etc/pam.d/system-aSEO靠我uth|grep auth

查看有无auth required pam_tally.so 条目的设置

加固方法:#设置为密码连续错误6次,锁定时间300秒 vi /etc/pam.d/sySEO靠我stem-auth auth required pam_tally.so oneer=filad deny=6 unlock_time=300

解锁用户:faillog -u <用户名>SEO靠我 -r

修改账户TMOUT值,设置自动注销时间

检查方法:

#查看有无TMOUT的设置 cat /etc/profile|grep TMOUT

加固方法:

vim /etc/profile

增加

TSEO靠我MOUT=600

无操作600秒后自动退出

设置BASH保留历史命令的条目

检查方法:

cat /etc/profile | grep HISTSIZE HISTSIZE=1000

加固方法:

vSEO靠我im /etc/profile

修改

HISTSIZE=5

即保留最新执行的5条命令

用户注销时删除命令记录

检查方法:

查看/etc/skel/.bash_logout文件,增加如下行rm -f $HOME/.SEO靠我bash_history

这样,系统中的所有用户注销时都会删除其命令记录,如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件增加SEO靠我相同的一行即可。

设置系统日志策略配置文件

日志的主要用途是系统审计、监测追踪和分析统计。

为了保证 Linux 系统正常运行、准确解决遇到的各种各样的系统问题,认真地读取日志文件是管理员的一项非常重要的任SEO靠我务。

UNIX/ Linux采用了syslog工具来实现此功能,如果配置正确的话,所有在主机上发生的事情都会被记录下来,不管是好的还是坏的。

CentOS6起/etc/syslog.conf不再有!而是/SEO靠我etc/rsyslog.conf代替!

检查方法:

ps -aef | grep syslog #确定syslog服务是否启用 cat /etc/rsyslog.conf #查看sysloSEO靠我gd的配置,并确认日志文件日否存在 #系统日志 (默认) /var/log/messages #cron日志 (默认) /var/loSEO靠我g/cron #安全日志 (默认) /var/log/secure 阻止系统响应任何从外部/内部来的ping请求

加固方法:

echo 1 > /procSEO靠我/sys/net/ipv4/icmp_echo_ignore_all

其他客户端就不能ping通你的服务器了。

中间件加固

IIS加固

IIS安装及版本的选择

在IIS安装过程中,根据具体的业务需求,只安装必要SEO靠我的组件,以避免安装其他一切不必要的组件带来的安全风险。如网站正常运行只需要ASP环境,那我们就没必要安装.net组件。

对于IIS版本,至少要在6.0以上,IIS5.0存在严重的安全漏洞,不过现在运行ISEO靠我IS5.0的服务器已经非常少了,对于这一点不用太过担心。 删除默认网站

把IIS默认安装的站点删除或禁用掉

禁用不必要的Web服务扩展

打开IIS 管理器看是否有不必要的“Web服务扩展”,如果有则禁用掉。,SEO靠我检查是

删除不使用的应用程序扩展

在IIS管理器中,右击网站“属性”,点击主目录选项卡,点击“应用程序设置”的配置按钮。

根据网站的实际情况,只保留必要的应用程序扩展,其他的一律删除,尤其是像cer、asaSEO靠我这样极其危险的扩展,而且一般网站也不需要它。 IIS访问权限配置

如果IIS中有多个网站,建议为每个网站配置不同的匿名访问账户。

方法:

a. 新建一个账号,加入Guests组

b. “网站属性”—>“目录安全SEO靠我性”—>“身份验证和访问控制”,把“启用匿名访问”处,用刚新建的账户代替默认账户。 正确设置网站目录的权限和IIS权限

网站分区为NTFS分区。网站目录出system和administrator组有完全控SEO靠我制权限外,其他用户只需要有读取权限。

IIS6管理器中设置:

只选择“读取、记录访问、索引资源”禁止“写入”和“脚本资源访问”,避免IIS Put上传攻击。禁止“目录浏览”,避免目录遍历攻击。 SEO靠我 正确设置网站目录的权限和IIS权限

应用程序设置中的执行权限设置为“纯脚本”

原则

目录有写入权限,一定不要分配执行权限目录有执行权限,一定不要分配写入权限网站上传目录和数据库目录一般需要分配“写入SEO靠我”权限,但一定不要分配执行权限其他目录一般只分配“读取”和“记录访问”权限即可。 设置IP访问限制 正确设置IIS日志

在IIS管理器中,右击网站“属性”,点击网站选项SEO靠我卡,确定已经选择“启用日志记录”,活动日志格式为“W3C扩充日志文件格式”

接着修改IIS日志文件保存路径,默认保存在“C:\WINDOWS\system32\LogFiles”目录下,这里修改为自定义SEO靠我路径。

建议保存在非系统盘路径,并且IIS日志文件所在目录只允许Administrators组用户和SYSTEM用户访问。

自定义IIS返回的错误信息 禁止向客户端发送详细的ASP错误SEO靠我信息

在IIS管理器中—>“属性”—>“主目录”—>“配置”—>“调试”,选择“向客户端发送下列文本错误消息”项,自定义出错时返回的错误信息

Apache安全加固

隐藏Apache banner信息 SEO靠我 vim /etc/httpd/conf/httpd.conf #在出现错误页的时候不显示服务器操作系统的名称 ServerTokens OS  修改为:SerSEO靠我verTokens Prod #不回显apache版本信息 ServerSignature On 修改为:ServerSignature Off 禁SEO靠我止目录浏览

Options Indexes FollowSymLinks

修改为:vim /etc/httpd/conf/httpd.conf Options FollowSymLinksSEO靠我 限制IP访问 <Directory "/var/www/html/aa/">Options Indexes MultiViews FollowSymLinksAllSEO靠我owOverride AuthConfigAuthType BasicAuthName "testusers paasword"AuthUserFile /usr/local/etc/passwd.hSEO靠我ttpdRequire user testuserOrder allow,denyAllow from 172.16.1.0 </Directory> serviceSEO靠我 httpd restart 停止 httpd:[确定] 启动 httpd:[确定] 限制禁止访问的文件夹,例如后台目录 <DireSEO靠我ctory "/var/www/html/33"> Deny from all </Directory> 防止Apache的解析漏洞

Apache对于文件名的解析是从后SEO靠我往前解析的,直到遇见一个它认识的文件类型为止,因此;如果web目录下存在以类似webshell.php.test这样格式命名的文件,Apache在解析时因为不认识.test这个文件类型,所以会一直往前SEO靠我解析,当解析到.php时,它认识了,因此会将它解析为PHP文件。

Apache的这种解析特性经常被用来绕过Web应用的文件上传检测。当Web应用的文件上传功能在检测上传文件的合法性时,如果仅通过检测上传SEO靠我文件的扩展名来判断文件是否合法,就可以利用Apache的这种文件名解析特征绕过Web应用的检测。

禁止httpd解析文件

禁止httpd解析index.php.jpg文件

可以在httpd.conf配置文件SEO靠我中添加以下内容来阻止Apache解析这种文件。

修改后配置:<FilesMatch \.php$>SetHandler application/x-httpd-php </FilesMaSEO靠我tch> <FilesMatch "\.phps$">SetHandler application/x-httpd-php-source </FilesMatch> SEO靠我 错误页面重定向

在.htaccess 文件中加入如下内容即可:

ErrorDocument 400 /custom400.html ErrorDocument 401 /cSEO靠我ustom401.html ErrorDocument 403 /custom403.html ErrorDocument 404 /custom404.html SEO靠我 ErrorDocument 405 /custom405.html ErrorDocument 500 /custom500.html Customxxx.html 为要设SEO靠我置的错误页面。

重新启动 Apache 服务生效

日志设置

编辑 httpd.conf 配置文件,设置日志记录文件、记录内容、记录 格式。其中,错误日志:

LogLevel notice #日志的级别 SEO靠我 ErrorLog logs/error_log #日志的保存位置(错误日志)

访问日志:

LogFormat %h %l %u %t \”%r\” %>s %b “%{Accept}i\”%{RSEO靠我eferer}i\” \”%{User-Agent}i\”” combined CustomLog logs/access_log combined (访问日志)

在ApSEO靠我ache httpd 中将在这个文件中存放诊断信息和处理请求中出现的错误。 若要将错误日志送到 Syslog,则设置: ErrorLog syslog。

CustomLog 指令设置访问日志的文件名和位SEO靠我置。 访问日志中会记录服务器所处理的所有请求。

LogFormat 设置日志格式。 LogLevel 用于调整记录在错误日志中的信息的详细程度,建议设置为 noti判定条件

查看 logs 目录中相关日志SEO靠我文件内容,记录完整。 拒绝服务防范

根据业务需要,合理设置 session 时间,防止拒绝服务攻击

vim httpd.conf 配置文件Timeout 10 #客户端与服务器端建立连接前的时间间隔 SEO靠我 KeepAlive On KeepAliveTimeout 15 #限制每个 session 的保持时间是 15 秒

注:此处为一建议值,具体的设定需要根据现实情况。

禁用CGISEO靠我

如果服务器上不需要运行 CGI 程序,建议禁用 CGI

修改配置vim /etc/httpd/conf/httpd.conf,把 cgi-bin 目录的配置和模块都注释掉#LoadModule cgi_SEO靠我module modules/mod_cgi.so #ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" #<Directory "/vSEO靠我ar/www/cgi-bin"> AllowOverride None # Options None # Order allow,deny SEO靠我 # Allow from all #</Directory> 防止SQL注入及远程包含

SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,所以一定SEO靠我要小心。

php.ini中有一个设置:

magic_quotes_gpc = Off 改为 magic_quotes_gpc = On

在远程文件包含漏洞中,攻击者可以通过访问外部地址来加载远程代码,所以一SEO靠我定要设置:

allow_url_fopen = off

nginx服务器安全加固

禁用autoindex

确保nginx.conf配置文件上禁用autoindex,即autoindex off或者没有配置auSEO靠我toindex

关闭服务器标记

如果开启的话(默认情况下)所有的错误页面都会显示服务器的版本和信息。nginx.conf配置如下:

http{include naxsi_core.rules;includeSEO靠我 mime.types;default_type application/octet-stream;sendfile on;server_tokens off; ... ...

同时修改SEO靠我/usr/local/nginx/conf/fastcgi_params

将里面的

fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;

修改为:

fastcSEO靠我gi_param SERVER_SOFTWARE nginx; 自定义缓存

设置自定义缓存以限制缓冲区溢出攻击。nginx.conf配置如下:

http{... ...server{... ...clienSEO靠我t_body_buffer_size 16K;client_header_buffer_size 1k;client_max_body_size 1m;large_client_header_buffSEO靠我ers 4 8k;

注:上述的参数不是最优参数,仅供参考。

timeout设置

设置timeout设低来防御DOS攻击,nginx.conf配置如下:

http {... ...client_body_timSEO靠我eout 10;client_header_timeout 30;keepalive_timeout 30 30;send_timeout 10; 配置日志

鉴于日志的输出格式还未确定SEO靠我,目前暂时先使用Nginx默认的日志格式nginx.conf配置如下:

http {......log_format main $remote_addr - $remote_user [$time_loSEO靠我cal]"$request" $status $body_bytes_sent "$http_referer""$http_user_agent" "$http_x_forwarded_for";acSEO靠我cess_log logs/ access.log main; 限制访问

在目前的应用系统中值使用到POST和GET方法,所以除了它们之外,其他方式的请求均可拒绝。

Nginx.confSEO靠我配置如下:

server{... ...if($request_method !~ ^(GET|HEAD|POST)$) { return404;}... ... 限制访问IP

模块 nSEO靠我gx_http_access_module 允许限制某些IP地址的客户端访问。

如下范例:location/ {deny 192.168.1.1;allow 192.168.1.0/24;allow 1SEO靠我0.1.1.0/16;allow 2001:0db8::/32;deny all; }

注:规则按照顺序依次检测,直到匹配到第一条规则。

在这个例子里,IPv4的网络中只有 10.1.1.SEO靠我0/16 和 192.168.1.0/24允许访问,但 192.168.1.1除外

对于IPv6的网络,只有2001:0db8::/32允许访问。

集成Naxsi模块

Naxsi模块是一个开放源代码、高效、SEO靠我低维护规则的Nginx web应用防火墙模块。Naxsi的主要目标是加固web应用程序,以抵御SQL注入、跨站脚本、跨域伪造请求、本地和远程文件包含漏洞。

第一步:下载naxsi

https://githSEO靠我ub.com/nbs-system/naxsi

注:如果不能上网可以事先下载,再上传到服务器中。

开源waf首选,怎么配置和使用,网络教程铺天盖地,这里就不造轮子啦

数据库加固

Mysql数据库安全加固

删除默SEO靠我认数据库和数据库用户

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

mySEO靠我sql> show databases; mysql> drop database test; #删除数据库test mysql> use mysql; SEO靠我 mysql> delete from db; #删除存放数据库的表信息,因为还没有数据库信息。 mysql> delete from user where not (user=rooSEO靠我t); #删除初始非root的用户 mysql> delete from user where user=root and password=; #删除空密码的root尽量重复操作 SEO靠我 mysql> flush privileges; #强制刷新内存授权表。 不使用默认密码和弱口令

检查账户默认密码和弱口令,口令长度至少8位,并包括数字、小写字母、大写字SEO靠我母和特殊符号四类中至少两种。且5次以内不得设置相同的口令,密码应至少90天更换一次。

Mysql> Update user set password=password(‘test!p3’) where SEO靠我user=‘root’; Mysql> Flush privileges;

检测操作

检查本地密码: (注意,管理帐号 root 默认是空密码)mysql> use mysql; SEO靠我 mysql> select Host,User,Password,Select_priv,Grant_priv from user; 改变默认mysql管理员帐号

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

mysql> update mysql.user set user=admin whereSEO靠我 user=root; 使用独立用户运行MySQL

绝对不要作为使用root用户运行MySQL服务器。这样做非常危险,因为任何具有FILE权限的用户能够用root创建文件(例如,~roSEO靠我ot/.bashrc)。mysqld拒绝使用root运行,除非使用–user=root选项明显指定。应该用普通非特权用户运行 mysql。为数据库建立独立的linux中的mysql账户,该账户用来只用SEO靠我于管理和运行MySQL。

要想用其它linux用户启动mysql,增加user选项指定/etc/my.cnf选项文件或服务器数据目录的my.cnf选项文件中的[mysqld]组的用户名。

vi /etc/SEO靠我my.cnf [mysqld] user=mysql

该命令使服务器用指定的用户来启动,无论你手动启动或通过mysqld_safe或mysql.server启动,都能确保SEO靠我使用mysql的身份。

禁止远程连接数据库

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

vi /etc/my.cf #将#skip-networking注释去掉 SEO靠我 限制用户连接的数量

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

vi /etc/my.cnf [mysqld] SEO靠我 max_user_connections=2 命令历史记录保护

数据库相关的shell操作命令都会分别记录在.bash_history,如果这些文件不慎被读取,会导致数据库密码和数据SEO靠我库结构等信息泄露,而登陆数据库后的操作将记录在.mysql_history文件中,如果使用update表信息来修改数据库用户密码的话,也会被读取密码,因此需要删除这两个文件,同时在进行登陆或备份数据库SEO靠我等与密码相关操作时,应该使用-p参数加入提示输入密码后,隐式输入密码,建议将以上文件置空。

rm .bash_history .mysql_history #删除历史记录 ln -s /SEO靠我dev/null .bash_history #将shell记录文件置空 ln -s /dev/null .mysql_history #将mysql记录文件置空 对SEO靠我重要数据加密存储

MySQL提供了4个函数用于哈希加密:PASSWORD, ENCRYPT, SHA1和MD5。

INSERT INTO table1 (user, password) VALUE (‘uSEO靠我ser1’, MD5(‘password1’) ) 本地文件读取保护

常见攻击:拥有FILE权限

create dababase use; CREATE TABLE etc_passwd (SEO靠我pwd_entry TEXT); LOAD DATA INFILE "/etc/passwd" into TABLE etc_passwd; SELECT * FROMSEO靠我 etc_passwd;

防止用户使用LOAD DATA LOCAL INFILE读取服务器上的本地文件设置

vim /etc/my.cnf set-variable=local-infiSEO靠我le=0 日志功能

mysql 有以下几种日志:

错误日志: -log-err 查询日志: -log (可选) 慢查询日志: -log-slow-querSEO靠我ies (可选) 更新日志: -log-update 二进制日志: -log-bin

在 mysql 的安装目录下,打开 my.ini 在后面加上上面的参数,保存后重启mSEO靠我ysql 服务就行了

检查操作 查看etc/my.cnf文件,查看是否包含如下配置:

[mysqld] Log=filename 数据库的恢复 mysql SEO靠我-u root -p [数据库名] < /备份路径/备份文件名

Sqlserver数据库安全加固

密码策略和弱口令

对用户的属性进行安全检查,包括空密码、密码更新时间等。修改目前所有账号的口令,确保口令达到SEO靠我至少12位长度,包括数字、字母、符号混排,无规律的方式,并且不使用默认的win密码。

具体操作

打开SQL Server Management Studio管理界面,在左侧展开“登录名”,对 sa和其它登SEO靠我录名逐一右键点击查看属性,勾选“强制实施密码策略”。

通讯协议加密

当对服务器进行远程管理时,防止鉴别信息在网络传输过程中被窃听,应使用加密通讯协议,提高安全性。

具体操作

SQL Server配置管理器>>SEO靠我SQL Server网络配置>>MSSQLSERVER的协议,右键点击>>属性>>标志

把“强行加密”(ForceEncryption)设为“是”。 限制guest账户对数据库的访问

取消guest账户对mSEO靠我aster和tempdb之外的数据库的访问权限。

方法一:打SQL Server管理界面,在左侧展开除了master和tempdb之外的所有数据库>>安全性>>用户,删除guest账户。方法二:用命令去SEO靠我除guest账户对指定数据库的访问权限:

use 数据库名

exec sp_revokedbaccess guest 设置身份认证

应实现操作系统和数据库系统特权用户的权限分离,防止操作系统SEO靠我用户对SQL Server数据库进行非授权管理。

具体操作

展开服务器组,右键单击服务器->在弹出的右键菜单中单击“属性”,在“安全性”选项卡中选择“服务器身份验证”认证方式为“SQL Server和WiSEO靠我ndows身份验证模式”。在“SQL Server管理器”-〉“安全性”中,选择账号“BUILTIN\Administrators”,右击选择“属性”,更改“状态”设置“拒绝允许连接到数据库引擎”和“SEO靠我禁用登录”。 开启日志审计

数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成功、登录时间以及远程登录时用户使用的IP 地址。

具体操作

在“SQL SerSEO靠我ver管理器”->右键单击服务器->单击“属性”->“安全性”,选择每个登录的“审核级别”为“失败和成功的登录”。询问数据库管理员,是否采取第三方工具或其他措施增强SQL Server的日志功能,如果SEO靠我有则查看这些工具记录的审计记录是否符合等级保护的安全审计要求。 设置连接协议和监听的IP范围

设定SQL Server允许的连接协议,以及TCP/IP协议中监听端口时绑定的IP地址,限制SEO靠我不必要的远程客户端访问到数据库资源。

具体操作

从开始菜单打开SQL Server配置管理器,展开“SQL SERVER 2008网络配置>>SQL SERVER的协议,在右侧将不需要的协议禁用,如:VISEO靠我A和Share Memory方式可能一般不需要使用。在以上界面双击“TCP/IP”协议>>IP地址,如有不必要监听的IP项,则把“活动”属性设置为“否”。如:访问数据库的应用程序也装在该服务器上,则只SEO靠我需要监听127.0.0.1即可,其它IP不需要监听。在应用程序中配置为使用127.0.0.1访问数据库。 根据安全策略设置登录终端的操作超时锁定。 从开SEO靠我始菜单打开SQL Server管理界面,再展开菜单栏的“工具”>>“选项”>>“设计器”>>“Analysis Services设计器”,在“连接”下的“连接超时值”输入合适的数字(默认值15)。在SSEO靠我QL Server管理界面左侧,右键点击服务器名称>>属性>>高级,在右侧找到“远程登录超时值”,设置为合适的数字,

选项—连接属性—将连接超时值设置为一个较大的数字(默认值20)。 隐SEO靠我藏实例

防止数据库系统的相关信息泄露

具体操作

在SQL Server配置管理器中选择“SQL Server 网络配置”中的“MSSQLSERVER的协议”,右键选择“属性”,选中其中的“隐藏实例”选项。 SEO靠我 修改默认端口

修改默认通信端口,防止攻击者通过1433登录数据库服务器。

具体操作:

在SQL Server配置管理器中选择“SQL Server 2005网络配置”中的“MSSQLSERVSEO靠我ER的协议”,选中“TCP/IP”,右键选择“属性”,在TCP/IP属性对话框,选择“IP地址”选项卡。修改所有“TCP端口”右边的文本栏为新的要修改的端口号(默认端口号为1433),然后重启SQL SEO靠我Server生效。

关于安全加固的知识点就总结到这里,本文可能实际上没有啥技术含量,但是写起来还是比较耗费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰SEO靠我巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文!

“拒绝允许连接到数据库引擎”和“禁用登录”。 开启日志审计

数据库应配置日志功能,对用户登录进行记录,记录内容包括用户登录使用的账号、登录是否成SEO靠我功、登录时间以及远程登录时用户使用的IP 地址。

具体操作

在“SQL Server管理器”->右键单击服务器->单击“属性”->“安全性”,选择每个登录的“审核级别”为“失败和成功的登录”。询问数据库管SEO靠我理员,是否采取第三方工具或其他措施增强SQL Server的日志功能,如果有则查看这些工具记录的审计记录是否符合等级保护的安全审计要求。 设置连接协议和监听的IP范围

设定SQL SerSEO靠我ver允许的连接协议,以及TCP/IP协议中监听端口时绑定的IP地址,限制不必要的远程客户端访问到数据库资源。

具体操作

从开始菜单打开SQL Server配置管理器,展开“SQL SERVER 2008SEO靠我网络配置>>SQL SERVER的协议,在右侧将不需要的协议禁用,如:VIA和Share Memory方式可能一般不需要使用。在以上界面双击“TCP/IP”协议>>IP地址,如有不必要监听的IP项,则SEO靠我把“活动”属性设置为“否”。如:访问数据库的应用程序也装在该服务器上,则只需要监听127.0.0.1即可,其它IP不需要监听。在应用程序中配置为使用127.0.0.1访问数据库。 SEO靠我 根据安全策略设置登录终端的操作超时锁定。 从开始菜单打开SQL Server管理界面,再展开菜单栏的“工具”>>“选项”>>“设计器”>>“Analysis ServiceSEO靠我s设计器”,在“连接”下的“连接超时值”输入合适的数字(默认值15)。在SQL Server管理界面左侧,右键点击服务器名称>>属性>>高级,在右侧找到“远程登录超时值”,设置为合适的数字,

选项—连接SEO靠我属性—将连接超时值设置为一个较大的数字(默认值20)。 隐藏实例

防止数据库系统的相关信息泄露

具体操作

在SQL Server配置管理器中选择“SQL Server 网络配置”中的“MSSSEO靠我QLSERVER的协议”,右键选择“属性”,选中其中的“隐藏实例”选项。 修改默认端口

修改默认通信端口,防止攻击者通过1433登录数据库服务器。

具体操作:

在SQL Server配置管理SEO靠我器中选择“SQL Server 2005网络配置”中的“MSSQLSERVER的协议”,选中“TCP/IP”,右键选择“属性”,在TCP/IP属性对话框,选择“IP地址”选项卡。修改所有“TCP端口”SEO靠我右边的文本栏为新的要修改的端口号(默认端口号为1433),然后重启SQL Server生效。

关于安全加固的知识点就总结到这里,本文可能实际上没有啥技术含量,但是写起来还是比较耗费时间的,在这个喧嚣浮躁SEO靠我的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果感觉本文对你有所帮助的话,就给笔者点个关注吧!

原创不易,转载请注明来源CKCsec!

关于我

欢迎关注公众号

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2