操作系统加固:
从互联网诞生之初,人们主要以网络的连通性,速率为研究目标,忽视了网络可达后造成的风险,起初一个随意的恶意程序都会导致网络瘫痪,甚至资产的流失。
安全这件事,平时没有大的安全事故,大家都觉得安全不怎么关键,实际上如果网络安全受到侵犯,这种风险,以及所要承担的后果都是非常巨大的,所以我们需要网络安全,需要加固我们的信息平台保障 数据,信息等隐私
linux加固:
版本升级:
- linux常作为服务器使用 而linux的版本更新推送比较差 很难接收到更新通知 这就要求公司的运维经常上官网查看操作系统更新信息 一般更新使用yum dnf apt等包管理工具进行升级
关闭端口服务:
- 端口的暴露越多 服务就越多 服务越多 系统的漏洞就越多 建议在平时使用时 不要开启非必要的端口比如 smtp 25 ftp 21 Telnet 23 Dns 53 等高危端口 非必要不开启 以及测试时使用的测试端口 在服务正式上线时 关闭测试端口
修改配置项:
- 权限,selinux,Firewalls 等操作系统安全的配置,以及常用服务的高安全配置
修改代码:
- 在代码中寻找逻辑漏洞 不规范调用漏洞 危险函数调用 等漏洞并予以修复
主机和acl策略:
- 在网络中使用网络设备 使用iptables对流量进行严格的控制 一般使用白名单 但是白名单的配置较为繁琐 且白名单对运维会带来一定的难度
增加安全设备:
- 安全设备专用于漏洞的检测防护 一般服务器跑业务流 如果将安全功能集成到服务器上 对服务器处理数据的效率有影响 所以 一般业务流与安全是分开的 这时我们往往会选择使用其他专业安全设备
账号管理与授权:
- 为不同的管理员设定不同的账号 设定不同的权限 细化用户能力
创建账号:
useradd username 用户添加
passwd username 用户密码
修改文件权限:
chown username 修改文件拥有者
chmod 权限掩码 修改文件权限
修改sudo权限:
visudo 修改用户sudo权限
也可以在etc/sudoers中修改:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
#用户名 主机=(命令可以多条 !号后的命令是禁用的)
#示例:f0r9 localhost=/usr/sbin/useradd,!/usr/bin/vi /etc/hosts
#这个条目中 f0r9 用户可以添加用户 但是不能编辑hosts文件
#加了叹号表示不允许执行的命令 命令后还可以加文件名 限定命令执行对象 逗号隔开命令
检查高权限文件:
find / -type f perm -00007 -a -ctime -1 -exec ls -lg {};
find / -type f perm -000007 -a -ctime -1 | xargs -I {} ls -l {};
主要是查ctime c为change表示更改 程序属性更改时间称之为ctime 程序内容更改叫mtime 还有atime访问时间
用户权限修改:
umask 修改权限掩码 对创建的文件设定默认权限如掩码为077 此时只有所属用户能够打开查看该文件
userdel groupdel 删除用户 删除组
修改用户登录:shell usermod -s /sbin/nologin
锁定用户:passwd -l
登录管理:一般root用户不允许远程ssh登录 需要修改sshd服务配置文件
如:
PermitRootLogin yes
允许root用户登录
用户权限细化:删除除了root以外的用户:
首先查找:
awk -f : '($3 == 0){print 1}' /etc/passwd
搜索到passwd第三列为0的用户说明该用户用有root权限 需要对这些用户仔细审计
然后使用userdel进行删除 防止用户被暴力破解
修改登录限制:
vim /etc/login.defs
set权限建议全部关闭
suid: chmod u+s 有这个权限的文件 任何人执行时被视为该文件的拥有者的用户的身份
sgid: chmod g+s 有这个权限的文件 任何人执行时被视为该文件所属组的身份权限
sbip: chmod o+t 只能对自己的文件删除 移动 不能修改文件内容
通信协议:
telnet服务危险性比较高 一般需要关闭
ssh服务可以更改端口 但是如果运维使用了ansible 这时ssh的开启会导致ansible失效 因为ansible默认使用端口22
访问控制 白名单 将所有流量都执行拒绝动作 只放通部分需要的流量
一般shell都以反弹形式注入 如果目标主机不出网 此时就需要先拿下出网的主机 比如服务器 通过服务器与目标主机建立连接
syn泛洪防御 syncookie 引入身份标识 身份认证通过后 才会分配资源引起占用
服务的banner信息最好删掉 不要把信息放给攻击者
寻找服务器远程连接迹象 netrc rhosts
打补丁: 最好去官方源找rpm包 自己更新
更新能解决较多的安全问题 但是回退也会比较难 打补丁前一定要克隆测试 确保版本的更新对服务没有影响
关闭无用服务:
systemctl list-util-files | grep enabled 搜索查询启用的服务
禁用服务:systemctl disable 服务
grup菜单:
grup菜单用于设置开机项 攻击者可以修改密码 建议将grub直接关闭 或者grub设定密码
开启服务日志:
*.info;mail.none;authpriv.none;cron.none @远端服务器以及其路径
# @符号决定了传输协议 一个@是udp 两个@则是tcp *.info表示传输所有消息日志
# The authpriv file has restricted access.
authpriv.* @远端服务器以及其路径
#这里传输的是安全日志
把日志转发到远端服务器
Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# 这个是udp
Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# 这个是tcp
$template Remote,"/var/log/%$YEAR%-%$MONTH%-%$DAY%/%fromhost-ip%.log" 远程日志路径 日志目录为年-月-日 日志名为 远程ip.log
windows加固:
账号与授权:使用lusrmgr.msc 本地用户管理器 修改本地用户信息
dsa.msc域环境用户管理 隐藏的后门用户需要到注册表里查看
禁用guest 改名adminstrator 防止密码爆破
远程关机:通过本地安全策略管理:secpol.msc 关闭远程关机权限 防止系统被远程关闭
方式用户绕过ntfs:禁止除管理员以外的用户取得文件的取得所有权权限
域环境禁止非管理员用户登录域控
通过授权方式管理用户是否能远程访问
使用防火墙封堵业务以外的端口 设定服务挂起时间 关闭默认文件共享
如果不想使用远程服务 在策略中加入禁止远程访问 关闭默认共享 需要注意 注册表修改行为是非常危险的 一定要做好备份 然后决定是否要修改
修复漏洞 定时更新软件版本 安装防病毒软件 第三方应用不建议安装 只建议安装防病毒软件
windows 关闭服务 使用services.msc管理服务 关闭并禁用服务
msconfig 关闭启动项
中间件加固:
中间件一般是提供cgi接口 能通过cgi接口将用户发送的数据包 解析并转给底层代码处理 然后反馈给用户
主要使用的中间件 有:
apache nginx iis tomcat weblogic jboss jenkins
后四种中间件常用于Java开发
数据库加固:
传统的数据库为关系型数据库 :mysql 3306 mssql 1443 Oracle 1521 postgre 5432
也存在一些非传统的非关系型数据库 :redis 6379 mongodb 27017
数据库主要需要加固的是数据库监听地址 密码 以及用户的权限划分
REDIS:
作为一种非关系型数据库 redis的未授权访问漏洞比较出名 解决方法是不将端口暴露到公网中
bind 127.0.0.1 ::1 只监听本地
或者使用防火墙对可以访问6379端口的数据包放通
iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
修改配置文件 更改redis的命令集 rename-command CONFIG '别名' 使用别名才能运行原有的命令
配置使用requirepass 该参数设定后 每次查询 都会需要键入auth进行认证 认证通过后 才能继续操作
在redis交互界面中 需要auth然后交互 在命令行交互界面中 使用-a参数指定密码
密码长短和复杂度一定要足够高 由于其没有尝试次数限制 攻击者可以轻易爆破得到 密码
redis用户的shell可以设定为 nologinin
添加用户:
useradd -s /sbin/nologinin redis
以该用户身份启动服务:
su -m redis -c /opt/redis/redis_server
m参数执行后不会切换现有用户的bash环境
非关系型数据库加固方式思路基本如上
关系型数据库加固主要是用户权限的细化 端口监听的位置 不要把管理端口暴露到公网
那么sql注入的防范方式主要是规范代码书写:
使用预编译方式,对可参数化位置进行参数化处理,避免攻击者注入恶意语句,使用安全设备对数据包过滤 通过语义分析 通过正匹配等方式
加固测试:
回退测试: 服务开启后 很可能会对服务器的业务有影响 比如iptables写多了会需要逐行匹配 对数据流的处理效率下降 转发速度变慢 为了避免这样的影响 需要厂商进行版本回退 万一业务加固后出现错误 可以进行版本回退
业务测试: 业务测试 在安全加固后 有没有对业务产生影响 产生了哪些影响 是否可以避免 权衡利弊 决定是否要实施策略
有效性测试: 对业务没有影响 但还未知安全加固是否生效 安全加固实现了什么效果 能够做到什么 确认加固的有效性 满足甲方的要求
标签:服务,修改,端口,用户,安全,加固,权限 From: https://www.cnblogs.com/fr09/p/18406121