Linux系统安全加固防攻击技术
ahcoder 2025-04-27 11:55 7 浏览
Linux系统安全加固防攻击技术
一、前言
本系列文档包括三个部分,分别是《针对Linux系统的攻击》、《Linux系统安全加固》和《Linux系统入侵排查》。编写这些文档的目的,是从攻和防的角度分别对Linux系统相关的安全技术进行介绍,使初级水平的网络安全从业者对Linux操作系统的脆弱性检查、安全加固、应急响应等安全服务工作产生更清晰的认识。
在前面一篇文章《针对Linux系统的攻击》中,介绍了攻击者对Linux系统可能发起什么样的攻击。本文是系列文档的第二部分,在本文档中,针对这些攻击行为,给出在CentOS 7系统中进行相应安全加固的基本步骤和方法。
相关操作系统及IP地址
操作系统 | IP地址 | 作用 |
manjaro | 192.168.242.1 | 宿主机 |
CentOS 7 x64 | 192.168.242.132 | 被安全加固的虚拟机 |
Ubuntu 1804 | 192.168.242.134 | 辅助测试的虚拟机 |
二、Linux系统安全加固
(一)防口令破解
1. 处理弱口令账户
加固要求:
当前user1用户的口令为弱口令,修改该口令,使其符合长度和复杂性要求。
加固方法:
passwd user1 //为用户设置强壮的口令
验证效果:
重新以user1身份连接到服务器,以新口令登录,确定其可成功登录。
2. 处理与系统运行维护无关的账户
加固要求:
系统存在与系统运行、维护工作无关的账户,名为user1,根据需要,将其锁定或删除。
加固方法:
usermod -L user1 //锁定账户
userdel user1 //删除用户
验证效果:
查看user1用户的状态
返回“密码已被锁定”,说明账户处于锁定状态。
若返回“未知用户名”,则user1已被删除。
3. 限定口令长度和复杂度
加固要求:
设置口令策略,满足长度和复杂度要求。要求长度8位以上,口令中包含大写字母、小写字母、数字、特殊字符,每种字符至少一个。
加固方法:
//限制口令最短8位
authconfig --passminlen=8 --update
//限制口令至少包含4种字符
authconfig --passminclass=4 --update
验证效果:
创建测试用户,为其设置不符合长度和复杂度要求的口令
系统首先提示口令长度不够,之后提示字符类型少于4种。说明本项加固成功。
4. 限定口令生存周期
加固要求:
限制口令的最长使用期限为90天,口令的最短使用期限为3天,口令到期前15天发出警告。
加固方法:
//编辑文件,修改文件内容
vi /etc/login.defs
设置PASS_MAX_DAYS为90,
设置PASS_MIN_DAYS为3,
设置PASS_WARN_AGE为15
保存退出
验证效果:
cat /etc/login.defs | grep '^PASS_' //查看相关参数的值
5. 设置登录失败锁定
加固要求:
用户远程登录验证连续超过5次失败的,锁定账号30分钟
加固方法:
//修改配置文件,在#%PAM-1.0的下面,即第二行添加内容
vim /etc/pam.d/sshd
auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
保存退出
验证效果:
ssh user1@192.168.242.132
故意连续6次输入错误口令,最后输入正确口令,发现已经无法登录。
在服务器上查看锁定情况:
说明登录失败锁定机制已经生效。
(二)防服务漏洞
1. 更改ssh服务端口
加固要求:
更改ssh服务的监听端口为2222
加固方法:
//编辑配置文件
vi /etc/ssh/sshd_config
取消Port行的注释,将Port的值从22修改为2222
保存退出
//重启ssh服务
systemctl restart sshd
验证效果:
//访问远程主机ssh服务默认的22端口
ssh user1@192.168.242.132
连接被拒绝
//指定访问远程主机的ssh服务的2222端口
ssh -p 2222 user1@192.168.242.132
允许登录。说明ssh服务端口修改成功。
2. 限制ssh连接的源地址范围
加固要求:
只允许192.168.242.0/24网段访问ssh服务。
加固方法:
//修改配置文件,在末尾加入一行
vi /etc/hosts.deny
sshd:ALL
保存退出
//修改配置文件,在末尾加入一行
vi /etc/hosts.allow
sshd:192.168.242.0/255.255.255.0:allow
保存退出
验证效果:
从其它虚拟机访问CentOS 7
客户端地址为192.168.242.134,连接被重置,说明ssh客户端地址限制生效了,加固成功。
3. 禁用不必要的服务
加固要求:
停止并禁用不需要的服务,如cups,减小系统的受攻击面。
加固方法:
//停止服务
systemctl stop cups
//禁用服务
systemctl disable cups
验证效果:
//查看服务是否被禁用
systemctl is-enabled cups
//查看服务当前是否正在运行
systemctl status cups
若服务的自启动配置为disabled或masked,服务的运行状态为inactive,则加固成功。
4. 启用selinux
加固要求:
SELinux使用强制访问控制机制,可最大限度地减小系统中服务进程可访问的资源。要求开启selinux,设置工作模式为enforcing,策略为target。
加固方法:
vi /etc/selinux/config //编辑配置文件
设置
SELINUX=enforcing
SELINUXTYPE=targeted
保存退出,重启后生效。
验证效果:
sestatus //查看selinux的工作状态
SELinux status:enabled
Loaded Policy name:Target
说明加固成功。
5. 启用审计服务
加固要求:
启动auditd服务,并设置为开机自动运行。
加固方法:
//手动启动服务
systemctl start auditd
//设置开机自动运行
systemctl enable auditd
验证效果:
//查看auditd服务状态
systemctl status auditd
//查看是否自启动
systemctl is-enabled auditd
若auditd服务被设置为自动启动且已经运行,则加固成功。
(三)防权限提升
1. 管理sudo权限
加固要求:
当前user1用户被加入到了wheel用户组,而系统允许wheel组通过sudo执行任何命令。现要求取消user1用户通过sudo执行任何命令的权限,只允许sudo执行特定的命令。
加固方法:
gpasswd -d user1 wheel //将user1从wheel组中删除
visudo //编辑配置文件,给予user1通过sudo执行特定命令的权限
推荐阅读:《CentOS 7系统配置sudo策略(附sudo提权演示)》
https://www.freebuf.com/articles/system/243526.html
验证效果:
sudo ls //user1用户通过sudo执行未授权的命令
若出现提示,称用户不在sudoers文件中,说明sudo权限配置加固成功。
2. 启用sudo日志
加固要求:
启用sudo日志。
加固方法:
第一步,创建sudo.log文件
//创建日志文件
touch /var/log/sudo.log
第二步,修改rsyslog配置文件
//在配置文件最后添加一行
vi /etc/rsyslog.conf
local2.debug/var/log/sudo.log //空白处不能用空格键,必需用tab键
保存退出
//重启rsyslog服务
systemctl restart rsyslog
第三步,修改sudo配置文件
visudo //编辑sudo配置
Defaults logfile=/var/log/sudo.log
Defaults loglinelen=0
Defaults !syslog
保存退出
验证效果:
cat /var/log/sudo.log //执行sudo命令后查看sudo日志文件
如果产生了日志条目,说明配置成功。
3. 管理suid/sgid文件
加固要求:
系统中存在设置了suid的vim程序(/usr/bin/vim),存在提权风险,要求取消该程序文件的suid权限。
加固方法:
chmod u-s /usr/bin/vim
验证效果:
ls -l /usr/bin/vim
若文件权限中没有suid标识位,说明加固成功。
4. 限制su的使用
加固要求:
除了user1用户之外,其它用户禁止使用su命令。
加固方法:
vi /etc/pam.d/su //编辑配置文件,加入下面的行
auth required pam_wheel.so use_uid
保存退出
vi /etc/group //编辑配置文件,将user1加入wheel组
wheel:x:10:root,user1
保存退出
验证效果:
以user1用户之外的普通用户身份登录,之后执行su命令,若返回“su: 拒绝权限”,则说明加固成功。
5. 设置严格的umask
加固要求:
将用户默认的umask值设置为027
加固方法:
编辑/etc/bashrc、/etc/profile、/etc/profile.d/*.sh等文件,将umask参数的值改为027:
umask=027
验证效果:
创建文件,若文件的权限为640,则说明加固成功。
6. 清除没有属主的目录和文件
加固要求:
查找并处理系统中无属主或无属组的目录和文件
加固方法:
第一步,查找无属主或无属组的目录/文件
find / \( -nouser -o -nogroup \) -exec ls -al {} \;
第二步,对查找到的文件进行处理,不再使用的文件可删除,有用的文件可将其属主或属组修改为现有的某个用户。
验证效果:
系统中找不到无属主或无属组的目录/文件,则加固成功。
7. 注销时清除命令历史
加固要求:
用户注销时清除该用户的历史命令
加固方法:
//注销时清除root用户的历史命令
vi /root/.bash_logout //编辑配置文件,加入下面的命令
echo > /root/.bash_history
保存退出
//注销时清除user1用户的历史命令
vi /home/user1/.bash_logout //编辑配置文件,加入下面的命令
echo > /home/user1/.bash_history
保存退出
//编辑用户配置模板,这样以后创建的用户在注销时也会删除历史命令
vi /etc/skel/.bash_logout //编辑配置文件,加入下面的命令
echo > $HOME/.bash_history
保存退出
验证效果:
注销用户,重新登录,执行history命令查看历史命令,若看不到注销前的历史命令,则说明加固成功。
8. 禁用coredump
加固要求:
禁用系统的core dump功能
加固方法:
vi /etc/security/limits.conf //编辑配置文件,在文件末尾加入:
* hard core 0
保存退出
vi /etc/sysctl.conf //编辑配置文件,加入下面的内容
fs.suid_dumpable = 0
保存退出。重启后参数生效
sysctl -w fs.suid_dumpable=0 //参数立即生效
验证效果:
查看配置文件,确认配置。9. 执行安全更新
加固要求:
安装可用的安全更新。
加固方法:
yum update --security //安装安全更新包
验证效果:
yum check-update --security //检查安全更新
若返回“No packages needed for security;”,说明安全更新已完成。
(四)防木马后门
1. 部署主机入侵检测软件
加固要求:
安装部署AIDE入侵检测软件,并定期检查文件完整性。
加固方法:
yum install aide //在线安装AIDE
aide --init //生成包含文件系统中所有文件的数据库
cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz //安装数据库
aide -c /etc/aide.conf --check //进行完整性检查
aide -c /etc/aide.conf --limit /bin --check //对指定目录进行完整性检查
推荐阅读:《CentOS 8系统安装配置AIDE入侵检测软件检查文件完整性》
https://www.freebuf.com/sectool/265391.html
验证效果:
生成散列数据库后对文件进行修改,运行aide,确认其可以检测到文件的变化。
2. 开启网络防火墙firewalld
加固要求:
开启网络防火墙,只允许远程主机访问本地的特定端口,如22和80端口。
加固方法:
systemctl start firewalld //启动firewalld服务
systemctl enable firewalld //设置服务开机自启
firewall-cmd --add-service=http //允许访问http服务
firewall-cmd --add-service=http --permanent //持久化(写入配置文件)
firewall-cmd --add-service=ssh
firewall-cmd --add-service=ssh --permanent
firewall-cmd --remove-service=dhcpv6-client //删除不需要的服务
firewall-cmd --remove-service=dhcpv6-client --permanent
firewall-cmd --list-service //查看firewalld允许的服务
firewall-cmd --list-service --permanent //查看配置文件允许的服务
推荐阅读:《CentOS 7系统使用firewalld防火墙创建包过滤规则》
https://www.freebuf.com/sectool/237569.html
验证效果:
//查看服务器本地的firewalld服务是否设置为自动启动
systemctl is-enabled firewalld
//远程扫描服务器端口
nmap 192.168.242.132
若只开放了22和80端口,说明firewalld加固成功。
3. 限制crontab使用者
加固要求:
禁止root之外的用户以crontab方式运行计划任务。
加固方法:
touch /etc/cron.allow && vi /etc/cron.allow //创建并编辑文件
在文件的第一行写入root,保存退出
验证效果:
普通用户尝试创建crontab任务,若无法创建,则加固成功
(五)防痕迹清除
1. 启用rsyslog服务
加固要求:
启动rsyslog服务并设置为开机自动运行
加固方法:
systemctl enable rsyslog //设置自动启动
systemctl start rsyslog //手动启动服务
验证效果:
logger -p local1.notice "This is a test for rsyslog." //执行命令
在/var/log/messages文件中若能可以看到相应的日志,说明rsyslog服务工作正常,加固成功。
2. 配置远程日志服务器
加固要求:
配置远程rsyslog日志服务器
加固方法:
vi /etc/rsyslog.conf //编辑配置文件,在末尾加入一行
*.* @192.168.242.1
作用是将全部日志转发到192.168.242.1的UDP 514端口。
保存退出。
推荐阅读:《CentOS 7系统配置rsyslog服务发送和接收日志》
https://www.freebuf.com/articles/es/246659.html
验证效果:
在日志服务器192.168.242.1上监听TCP 514端口
tcpdump -i vmnet8 udp port 514
当被加固主机执行下面的命令时,192.168.242.1主机的UDP 514端口将收到一个包
logger -p local1.notice "This is a test for rsyslog."
目标主机的UDP 514端口收到数据,说明日志服务器配置成功。
3. 配置NTP时间同步
加固要求:
定期(每小时一次)与远程NTP服务器(time1.aliyun.com)同步时间,以保证日志时间的准确性。
加固方法:
crontab -u root -e //编辑root账户的计划任务
0 1 * * * /usr/sbin/ntpdate time1.aliyun.com
保存退出
验证效果:
crontab -u root -l //查看root的crontab,确保存在ntp更新的指令
/usr/sbin/ntpdate time1.aliyun.com //手工执行时间同步
以上命令若返回成功的结果,则说明加固成功。
4. 加强审计日志文件权限
加固要求:
为audit日志文件设置严格的权限,避免日志信息被恶意操作
加固方法:
chmod 700 /var/log/audit
chmod 600 /var/log/audit/audit.log
chmod 400 /var/log/audit/audit.log.*
验证效果:
ls -ld /var/log/audit //查看日志目录权限
ls -l /var/log/audit //查看日志文件权限
(六)防物理攻击
1. bootloader安全配置
加固要求:
要求用户在系统引导程序执行之前输入boot口令,避免非授权用户改变启动参数或者改变引导分区,从而降低系统安全性被削弱的风险(如在启动时关闭selinux、进入单用户模式等)
加固方法:
grub2-setpassword
验证效果:
重启服务器,在出现开机选择菜单时按e,若出现输入用户名和密码的提示,则说明加固成功。
2. 禁用usb设备
加固要求:
禁止在服务器上使用usb存储设备,如U盘或移动硬盘
加固方法:
第一步,伪安装
cd /etc/modprobe.d/
touch block_usb.conf && vi block_usb.conf //创建并编辑配置文件,加入一行
install usb-storage /bin/true
保存退出
第二步,转移usb-storage驱动文件
uname -r //查看当前使用的内核版本
cd /lib/modules/3.10.0-1062.18.1.el7.x86_64/kernel/drivers/usb/storage/
mv usb-storage.ko.xz /root
第三步,对驱动文件进行加密
cd /root
zip -q -r -P biomind usb-storage-driver.zip usb-storage.ko.xz
rm -rf usb-storage.ko.xz
这样,usb存储设备的驱动就无法使用了。当需要使用的时候,将驱动文件解压出来,放回到原先的目录即可。
验证效果:
将USB存储设备插入系统后无法识别,说明加固成功,
三、总结
针对上一篇文章介绍的针对Linux系统的攻击方法,本文相对应地介绍了在Linux系统进行安全加固的方法。应定期对系统进行安全加固操作,以最大程度地降低Linux系统自身的脆弱性,减少系统被入侵的风险。在下一篇文章中,将介绍针对攻击者的各类攻击方式所采取的入侵排查方法。
相关推荐
- PC也能装MAX OS X
-
MACBOOK向来以其时尚的外观以及易用的OSX操作系统成为了时(zhuang)尚(bi)人士的最爱。但是其动不动就上万元的昂贵价格,也将一批立志时(zhuang)尚(bi)人士的拒之门外。但是最近...
- 一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?
-
前言:有很多粉丝都问过本人,一千多元到底能买到什么样的笔记本?在此笔者只想说,这样的资金预算真的太低了!如果想买全新的,那大概率买的就是性能比较拉垮的上网本,比如搭载英特赛扬N系列、J系列处理器的轻薄...
- 首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境
-
德国Linux硬件供应商TUXEDOComputers宣布正在开发一款配备高通骁龙XElite处理器(SnapdragonXEliteSoC)的ARM笔记本电脑,内部将该...
- System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器
-
IT之家3月30日消息,主打Linux硬件的厂商System76于今天发布了新一代Gazelle笔记本电脑,共有15英寸和17英寸两个版本,将于3月30日接受预订,...
- Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统
-
IT之家3月25日消息,KubuntuFocusXeGen2笔记本于近日发布,这是一款预装Kubuntu22.04LTSGNU/Linux发行版的轻薄本。上一代Kub...
- 这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起
-
Linux笔记本可能因为比较小众,一般都是拿Windows笔记本换个系统而来,硬件上也会落后同期Windows笔记本一两代,不过现在专门做Linux电脑的System76,推出了一款名为LemurP...
- 戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux
-
IT之家4月25日消息,科技媒体phoronix今天(4月25日)发布博文,报道称最新发布的Linux内核补丁,针对骁龙芯片的戴尔Inspiron14Plus笔记本,让其...
- TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U
-
IT之家8月12日消息,Linux硬件企业TUXEDO当地时间本月2日推出了InfinityFlex14二合一Linux笔记本。该笔记本搭载2+8核的英特尔酷睿i5-...
- 登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?
-
这是不是国家机密啊。事实什么样的不知道,但是从美国的探测器来看,就算不是也是相似的东西。下面我来说说我知道的。龙芯已经随北斗卫星上天了.就算登月探测器嫦娥是用"龙芯+Linux"也不出奇.没必要...
- DNS分离解析实验
-
如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力目录一、分离解析概述二、实验需求三、实验步骤3.1双网卡服务器配置3.1.1添加两张网卡(内外网)3.1.2对两个网卡进...
- 一个小实验巩固下进程管理
-
先回顾下之前的三篇文章:Linux进程在内核眼中是什么样子的?Linux进程线程是如何创建的?Linux是如何调度进程的?通过这三篇文章的学习我们知道,无论内核进程还是用户进程,都是可以用task...
- VMware Kali无线WIFI密码破解
-
WIFI破解前准备工作一张支持Kali系统监听的无线网卡VMware虚拟机安装好Kali系统(本实验用的是Kali2022版本)Kali系统下载、安装官方网站:https://www.kali.or...
- python多进程编程
-
forkwindows中是没有fork函数的,一开始直接在Windows中测试,直接报错importosimporttimeret=os.fork()ifret==0:...
- 拔电源十台电脑藏后门!德国实验惊曝Windows致命漏洞
-
2025年4月15日,央视突然曝出一个超级大新闻!原来美国国家安全局通过黑龙江,往微软Windows系统里发送加密信息,激活了系统里藏着的后门程序,想破坏哈尔滨亚冬会!这消息一出来,大家才发现,竟然已...
- 深度探索RK3568嵌入式教学平台实战案例:设备驱动开发实验
-
一、产品简介TL3568-PlusTEB人工智能实验箱国产高性能处理器64位4核低功耗2.0GHz超高主频1T超高算力NPU兼容鸿蒙等国产操作系统二、实验目的1、熟悉基本字符设备的驱动程序...
- 一周热门
- 最近发表
-
- PC也能装MAX OS X
- 一千多元的笔记本能买吗?英特尔11代+大屏幕,豆小谷值得选吗?
- 首款配备骁龙X Elite处理器的Linux笔记本:采用KDE Plasma桌面环境
- System76推出Gazelle Linux笔记本:配酷睿i9-13900H处理器
- Kubuntu Focus Xe Gen 2笔记本发布,预装Linux系统
- 这台Linux笔记本已用上英特尔12代酷睿,最高可选i7-1255U、卖1149美元起
- 戴尔Inspiron 14 Plus骁龙笔记本迎新补丁,支持启动Linux
- TUXEDO推出InfinityFlex 14二合一Linux笔记本,配i5-1335U
- 登月探测器嫦娥使用什么操作系统,是Linux还是其它自主研发?
- DNS分离解析实验
- 标签列表
-
- linux 远程 (37)
- u盘 linux (32)
- linux 登录 (34)
- linux 路径 (33)
- linux 文件命令 (35)
- linux 是什么 (35)
- linux 界面 (34)
- 查看文件 linux (35)
- linux 语言 (33)
- linux代码 (32)
- linux 查看命令 (33)
- 关闭linux (34)
- root linux (33)
- 删除文件 linux (35)
- linux 主机 (34)
- linux与 (33)
- linux 函数 (35)
- linux .ssh (35)
- cpu linux (35)
- 查看linux 系统 (32)
- linux 防火墙 (33)
- linux 手机 (32)
- linux 镜像 (34)
- linux mac (32)
- linux ip地址 (34)