百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Linux系统安全加固防攻击技术(linux操作系统安全加固)

nanshan 2025-03-26 14:37 10 浏览 0 评论

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系统自身的脆弱性,减少系统被入侵的风险。在下一篇文章中,将介绍针对攻击者的各类攻击方式所采取的入侵排查方法。

相关推荐

ssh终端xshell日志查看命令(xshell怎么看日志)

现在我们云服务器运维较多用的是SSH工具,其中常用的包括PUTTY、XSHELL等,其实大同小异界面UI稍微不同,但是都可以进入远程连接。这里有朋友提到如何查看服务器的日志文件,这个其实和是否使用XS...

使用 Fail Ban 日志分析 SSH 攻击行为

通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...

如何高效读取Linux日志文件?这些命令要熟记于心!

在Linux系统中,日志文件通常存储在/var/log目录下。比如,/var/log/syslog(或/var/log/messages,视发行版而定)记录系统整体事件,/var/log/a...

Windows服务器远程登录日志查询方法,linux查看登录日志方法

概述本文介绍Windows、Linux服务器查询系统的远程登录日志方法。根据服务器所使用的操作系统不同,有以下两种查询方法。Linux操作系统的登录日志查询通过远程连接登录Linux服务器,使用roo...

iptables防火墙如何记录日志(防火墙日志查看)

例如:记录所有ssh服务的登录的日志首先,我们需要了解如何将所有的iptables的INPUT链数据包记录到/var/log/messages中。如果你已经有一些iptables规则了,那么将记录日志...

如何安全管理SSH密钥以防止服务器被入侵

SSH密钥安全管理实施指南(2025年更新版)一、密钥生成与存储规范高强度密钥生成bashCopyCodessh-keygen-ted25519-a100#生成ED25519算法密钥(比...

在CentOS上安装nginx服务器(centos搭建代理服务器)

一、环境描述1.虚拟机配置CPU:单核内存:2GB硬盘:120GBIP:10.24.17.1082.操作系统版本:CentOS6.6x86_64安装方式:Minimal3.虚拟化环境VM...

CentOS7安全加固的一份整理规划建议

◆更新系统:及时更新CentOS7操作系统版本和安全补丁,确保系统以最新状态运行。◆关闭不必要的服务:在运行系统时,应关闭不需要的服务和端口,以减少系统暴露的攻击面。◆安装防火墙:使用iptables...

第四十七天-二叉树,centOS安装tomcat,Maven,vsftpd

学习笔记:1.Maven是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven...

Linux远程桌面连接使用教程 Widows终端远程连接Linux服务器

一、前言为什么不是远程连接Linux服务器?因为我不会,远程连接window我就用电脑自带的“远程桌面连接”。以下所述都是在CentOS操作系统下的。服务器刚换成Linux的时候很迷茫,感觉无从下手...

CentOS 安全加固操作,保护你的操作系统

系统加固是保障系统安全的重要手段,对于维护企业数据安全、用户隐私以及系统稳定运行具有重要意义。加固后的系统更加健壮和稳定,能够有效减少因安全问题导致的系统故障和停机时间,提高系统的可用性和可靠性。通过...

Dockerfile部署Java项目(docker如何部署java项目)

1、概述本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过do...

CentOS7云主机部署Fail2ban阻断SSH暴力破解

关于Fail2banFail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)例如:当有人在试探你的HTTP、SSH、SMTP、FTP密...

在CentOS7上用源码编译安装PostgreSQL

1、新建postgres用户#useraddpostgres&&passwdpostgres2、安装依赖包#yum-yinstallmakegccgcc-c++readline...

pure-ftpd 使用(ftp prompt命令)

pure-ftpd是一个免费的ftp软件,其他介绍就不多说了。我们直接开始主题安装centosyuminstallepel-releaseyuminstallpure-ftpd配置备份原配置...

取消回复欢迎 发表评论: