Linux系统优化及性能调优

目录

一、基本优化

1. SELinux和防火墙优化

1.1 selinux概述

1.2 selinux三种工作模式 

1.3 切换selinux模式

1.4 防火墙概述

1.5 firewalld管理工具

2. 自启动服务优化 

2.1 Systemd

2.2 SysVinit

3. 禁用超级管理员

4. 普通用户提权

5. 使用国内yum源

5.1 配置阿里云YUM源

5.2 配置清华大学YUM源

5.3 选择配置EPEL源

5.4 更新YUM缓存

5.4 测试新的YUM源

二、性能调优

1. 开启路由转发功能

2. 调整TCP连接数

3. 禁ping


一、基本优化

1. SELinux和防火墙优化

1.1 selinux概述

SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)安全机制,它在Linux操作系统中提供了额外的安全层。SELinux是由美国国家安全局(NSA)开发的,旨在提供对进程、文件和日志的访问控制策略。SELinux通过定义一系列的安全策略来控制应用程序和用户对系统资源的访问。这些策略定义了哪些用户和程序可以访问系统上的资源,以及它们可以执行哪些操作。

1.2 selinux三种工作模式 

① Enforcing(强制模式):这是SELinux的默认模式,它会强制执行所有的安全策略,并拒绝所有未经授权的访问。在这种模式下,任何违反策略的行为都会被阻止,并记录到日志中。

② Permissive(许可模式):在这种模式下,SELinux仍然会检查所有的访问请求,但不会实际阻止违反策略的行为。相反,它会记录所有的违规行为,就像在强制模式下一样。这种模式对于调试SELinux策略非常有用,因为它允许管理员看到哪些操作会被阻止,而不会实际影响系统的正常运行。

③ Disabled(禁用模式):在这种模式下,SELinux被完全禁用,不会检查访问请求也不会应用任何安全策略。这意味着系统将只依赖于传统的离散访问控制(DAC)机制,如文件权限和所有权。禁用SELinux会降低系统的安全性,因此通常不推荐这样做,除非确实需要。

1.3 切换selinux模式

① 临时切换

可以使用setenforce命令来切换selinux的模式。

[root@localhost ~]# setenforce 0
#临时关闭
[root@localhost ~]# setenforce 1
#临时开启

② 永久切换

可以修改/etc/selinux/config配置文件来切换selinux的模式。

[root@localhost ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 修改SELINUX=后面的参数来改变工作模式:
enforcing:强制模式
permissive:宽容模式
disabled:禁用模式[root@localhost ~]# reboot  #修改完配置文件需要重启才能生效

③ 查看状态

[root@localhost ~]# getenforce
#这个命令会显示SELinux的当前模式(Enforcing、Permissive或Disabled)
[root@localhost ~]# sestatus
#sestatus会显示SELinux的当前模式(强制、许可或禁用)和配置状态。

1.4 防火墙概述

Linux系统中的防火墙主要通过iptables或firewalld服务来管理。这两种服务提供了网络层的过滤和防火墙规则的管理功能,帮助保护系统免受未授权访问和网络攻击。iptables相关介绍请参考:Linux防火墙与iptables五表五链规则介绍-CSDN博客

1.5 firewalld管理工具

[root@localhost ~]# systemctl status firewalld
#查看firewalld状态
[root@localhost ~]# systemctl start firewalld
#关闭firewalld
[root@localhost ~]# systemctl enable/disable firewalld
#开机自启动/静止firewalld
[root@localhost ~]# systemctl enable/disable --now firewalld
#开机自启动/静止,并立刻开启/关闭firewalld

2. 自启动服务优化 

在Linux系统中,关闭不必要的开机自启动程序是一个重要的系统优化步骤,可以提高系统启动速度和运行效率。根据系统使用的初始化系统(如Systemd或SysVinit),关闭自启动程序的方法有所不同。

2.1 Systemd

Systemd是许多现代Linux发行版(如CentOS 7/8、Fedora、Ubuntu 15.04及以后版本)的初始化系统和系统管理器。

① 列出所有启动服务

systemctl list-unit-files --type=service | grep enabled

② 确定了不需要在启动时运行的服务后,使用以下命令禁用它们

systemctl disable 服务名.service
systemctl disable --now 服务名.service  #禁止自启并立刻关闭

2.2 SysVinit

尽管许多现代Linux发行版已经转向使用Systemd,但仍有一些发行版使用传统的SysVinit系统。如:centos6。

① 查看当前所有自启动的服务

对于使用SysVinit的系统,可以通过检查/etc/rc.d或/etc/init.d目录下的脚本来查看哪些服务设置为自启动。

ls /etc/rc.d/rc*.d/S*
或者
ls /etc/init.d

并使用chkconfig命令查看服务的启动状态

chkconfig --list | grep '3:on'
#chkconfig --list:这个命令用于显示所有系统服务的启动状态
#3:on表示在运行级别3中启用的服务
#列出所有在运行级别3下被配置为自动启动的服务
#linux操作系统运行级别如下:
0:关机
1:单用户,类似于windows的急救模式
2:字符界面:缺少nfs等功能
3:字符界面
4:字符界面:保留,未使用过
5:图形界面
6:重启

② 禁用不必要的服务 

使用chkconfig命令禁用不需要的服务。

chkconfig 服务名 off

3. 禁用超级管理员

在Linux系统中,超级管理员(通常是root用户)拥有对系统的完全控制权,包括访问和修改所有文件、运行任何命令等。出于安全考虑,有时可能需要限制root用户的直接登录能力,而不是完全禁用root用户(这在实际操作中是不可行的,因为root权限对于系统管理是必需的)。 

① 禁用root用户的SSH远程登录

编辑SSH配置文件/etc/ssh/sshd_config,找到PermitRootLogin修改或添加以下行:

 38 #PermitRootLogin yesPermitRootLogin no

这将禁止root用户通过SSH远程登录。之后,需要重启SSH服务以应用更改: 

systemctl restart sshd

② 修改root用户的shell为禁用登录的shell 

这个方法会阻止root用户登录到系统的shell。通过更改root用户的默认shell为一个不允许登录的shell(例如/sbin/nologin或/bin/false),可以实现这一点。

usermod -s /sbin/nologin root
或者
sudo usermod -s /bin/false root
#理论上非/bin/bash即可

注意:这会阻止root用户通过直接登录获取shell访问,但请注意,通过sudo或su切换到root用户的能力不会受到影响。

③ 注意事项

  • 在禁用root用户直接登录之前,确保至少有一个普通用户具有通过sudo获取root权限的能力,以便可以进行必要的系统管理任务。
  • 完全禁用root账户(例如通过更改密码或删除账户)是不推荐的,因为这可能会导致系统管理和维护工作变得非常困难,甚至不可能执行。
  • 这些措施增加了系统的安全性,因为它们可以防止未经授权的用户直接以root身份登录系统。然而,仍然需要采取其他安全措施来保护系统,如定期更新软件、使用强密码和配置防火墙等。 

4. 普通用户提权

在Linux系统中,sudoers文件是用来配置sudo命令的行为的文件,允许指定哪些用户可以以超级用户的权限执行特定的命令。对于大多数Linux发行版来说,推荐使用visudo命令来编辑sudoers文件,因为它可以在编辑过程中检查语法错误,避免在保存后由于语法错误而失去sudo访问权限。

① 以root或具有sudo权限的用户身份登录到Linux系统。

② 执行以下命令以编辑sudoers文件:

visudo
sudo visudo

③ 在sudoers文件中找到类似以下行的条目:

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
#允许超级用户root在任何终端以任何用户的身份通过sudo命令执行任何命令
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
#允许属于wheel用户组的用户在任何终端以任何用户的身份通过sudo命令执行任何命令
#whell组为超级管理员组,root严格意思并不能代表超级管理员

④  若要授予用户fql执行任何命令的sudo权限,可以在文件中添加以下行:

## Allow root to run any commands anywhere
#root    ALL=(ALL)       ALL     #建议注释,否则谁叫root谁就拥有无上的权利,很危险fql     ALL=(ALL:ALL)   ALL     #添加此行

这行的含义是允许fql以任何用户的身份,在任何终端使用sudo命令执行任何命令。如果你希望fql用户只能执行特定的命令,而不是所有命令,你可以使用更细粒度的授权语法。例如,要允许fql用户仅运行/usr/sbin/reboot命令,可以使用以下行:

fql    ALL=(ALL) /usr/sbin/reboot

 这表明fql用户可以使用sudo运行/usr/sbin/reboot命令,但不能执行其他命令。

⑤ 保存文件并退出,如果有必要,重启系统以使更改生效,或者在其他终端会话中验证新的sudo权限。

5. 使用国内yum源

在Linux系统中,配置国内的YUM源可以帮助提高软件包安装和更新的速度。以下是如何为CentOS系统配置国内YUM源的步骤,以阿里云和清华大学的YUM源为例: 

首先备份原有的YUM源配置 

[fql@localhost ~]$ cd /etc/yum.repos.d/
[fql@localhost yum.repos.d]$ sudo mkdir backup
[fql@localhost yum.repos.d]$ ls
backup            CentOS-CR.repo         CentOS-fasttrack.repo  CentOS-Sources.repo
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo      CentOS-Vault.repo
[fql@localhost yum.repos.d]$ sudo mv *.repo backup/

5.1 配置阿里云YUM源

下载阿里云的YUM源配置:

对于CentOS 7,可以使用以下命令:

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

对于CentOS 8,命令稍有不同:

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo

5.2 配置清华大学YUM源

下载清华大学的YUM源配置:

对于CentOS 7,使用以下命令:

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/help/centos-vault/

对于CentOS 8,命令稍有不同:

sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/help/centos/

注意:阿里云与清华园yum源二选一即可 

5.3 选择配置EPEL源

使用阿里云的EPEL源:

对于CentOS 7,使用以下命令:

sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

 对于CentOS 8,使用以下命令:

sudo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-8.repo

5.4 更新YUM缓存

配置完新的YUM源之后,需要清除YUM缓存并生成新的缓存:

sudo yum clean all
sudo yum makecache

5.4 测试新的YUM源

通过安装或更新一个软件包来测试新配置的YUM源是否工作正常:

sudo yum install -y tree

二、性能调优

1. 开启路由转发功能

在Linux系统中,路由转发功能是指将接收到的数据包从一个网络接口转发到另一个网络接口的能力。这对于将数据包从一个网络传输到另一个网络非常重要,特别是在充当网络路由器、防火墙或网关的设备上。开启路由转发功能步骤如下:

① 临时性地开启路由转发功能,可以使用以下命令:

sudo sysctl net.ipv4.ip_forward=1

这将使IPv4的路由转发功能在当前会话中生效。在系统重新启动后,该设置将失效。 

② 若要使路由转发功能永久生效,需要编辑/etc/sysctl.conf文件,并添加以下行: 

net.ipv4.ip_forward = 1

保存文件后,运行以下命令使配置生效:

sudo sysctl -p

2. 调整TCP连接数

在Linux系统中,调整TCP连接数是一项重要的性能调优任务。通过增加或调整TCP连接数,可以提高系统的并发连接处理能力。调整TCP连接数步骤如下:

① 修改系统参数: 你可以通过sysctl命令或编辑/etc/sysctl.conf文件来修改TCP连接数参数。例如,要增加端口范围内允许的最大连接数:

net.ipv4.ip_local_port_range = 1024 65535
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

② 修改文件描述符限制: 对于高并发场景,你可能还需要增加文件描述符限制,以确保系统可以处理更多的连接。这可以通过修改/etc/security/limits.conf文件实现。详情请参考:Linux系统安全及应用-CSDN博客5.8 limit 相关内容。

在修改了参数后,需要重新加载sysctl配置:

sudo sysctl -p

3. 禁ping

在Linux系统中,禁用ping其实是指禁止ICMP协议的回显请求(ping请求),也就是禁止对该系统进行ping操作。这通常是出于安全或者隐私的考虑。禁用ping的方法如下:

① 使用防火墙规则: 你可以使用iptables或者firewalld等防火墙管理工具,针对ICMP协议进行相应的规则配置,禁止ping请求。

使用iptables禁止ping:

sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

使用firewalld禁止ping:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" protocol value="icmp" drop'

② 修改内核参数: 你也可以通过修改内核参数来禁用ICMP协议,阻止ping请求。在/etc/sysctl.conf文件中添加以下行来禁用ICMP请求:

net.ipv4.icmp_echo_ignore_all = 1

保存文件后,运行以下命令使配置生效:

sudo sysctl -p

 其他Linux系统调优相关介绍请参考:Linux系统安全及应用-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

量化交易入门(一)学习量化交易需要掌握哪些知识

学习量化(Quantitative Analysis),特别是在金融领域的量化分析或量化交易,需要掌握以下几个方面的知识: 数学和统计学:高等数学(微积分、线性代数等)、概率论与数理统计是量化分析的…

【S5PV210_视频编解码项目】裸机开发:实现按键的外部中断处理

加粗样式本文所作内容: 基于S5PV210芯片实现按键的外部中断处理程序,搭建中断处理流程框架 S5PV210对于中断处理的操作流程 1 外部中断得到触发: 1)外部中断在初始化阶段得到使能 2)外界达到了外部中断的触发条件 …

24考研数学最大教训❗️660/880过时了?

我没看错吧,说660题和880题过时了? 660题和880题好好用,这俩很经典不会过时。 660题是客观题训练必刷的一本题集,而880是强化阶段非常好的一本综合性题集。我本身在考研的时候使用的也是这两本题集,所以对这两本题集…

如何学习一个大型分布式Java项目

前言 很多同学在没有实习经验的时候看到一个多模块分布式项目总是有一种老虎吃天的无力感,就像我刚毕业去到公司接触项目的时候一样,模块多的夸张,想学都不知道从哪开始学,那么我们拿到一份代码后如何从头开始学习一个新项目呢。…

pyinstaller使用笔记

1. 简介 pyinstaller是一个第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。 PyIns…

Oracle Primavera Analytics 是什么,与P6的关系?

前言 Oracle Primavera P6 Analytics 是与P6有关的一个相对较新的模块,Primavera 用户社区在很大程度上尚未对其进行探索。 那么它到底有什么作用呢? 通过了解得知它旨在通过深入了解组织的项目组合绩效,帮助高级管理层对其项目组合做出更好…

「Linux系列」Linux 系统目录结构/忘记密码解决方法

文章目录 一、Linux 系统目录结构Linux系统目录结构的概念案例 二、Linux 忘记密码解决方法方法一:使用root用户重置密码方法二:使用单用户模式重置密码方法三:使用恢复模式或救援模式案例:使用CentOS的救援模式重置密码 三、相关…

PE文件格式知识点汇总

简单概述:可执行文件之所以被操作系统加载且运行,是因为它们遵循相同的规范,而这个规范正是PE文件格式所确定。 1、PE文件格式的定义 PE文件格式:PE(Portable Executable)是win32平台下可执行文件遵守的数…

Python进阶学习(6)异常

文章目录 异常1.异常的定义2.异常错误3.异常处理(捕捉异常)4.assert断言5. 定义异常 异常 1.异常的定义 什么是异常:报错 也可以去链接资源访问某个网站时,中断程序,也叫异常 捕捉异常:因为我们在程序编…

MySQL | 库的操作 | 表的操作

目录 1. 库的操作 1.1. 创建数据库 1.2. 字符集和校验规则 1.2.1. 查看系统默认字符集以及校验规则 1.2.2. 查看数据库支持的字符集 1.2.3. 查看数据库支持的字符校验规则 2. 操作数据库 2.1. 查看数据库 2.2. 显示创建语句 2.3. 修改数据库 2.4. 数据库的删除 2.4.…

维基百科推广秘诀13个方法助你成为行业领导者-华媒舍

维基百科(Wikipedia)作为全球最大、最权威的在线百科全书,拥有海量的知识内容,被广大用户广泛使用。对于任何一个领域的从业者来说,建立自己的维基百科页面,无疑是提升行业影响力的重要手段。本文将向您介绍…

Linux学习(4)——使用编辑器

1.gedit编辑器 简单易懂,依赖图形界面。可以使用ctrlc ctrlv等快捷键,ctrls进行保存,与windows系统中相类似。 2.vi/vim编辑器 vi/vim可以直接通过控制台的终端完成文本的编辑,不依赖图形界面,使用范围更广。它的编辑…

DataX-数据迁移Oracle到Mysql-ETL工具

一、安装 https://github.com/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md 1、直接下载DataX工具包:DataX下载地址 下载后解压至本地某个目录,进入bin目录,即可运行同步作业: $ cd {YOUR_DATAX_HOME}/…

Redis数据结构对象之字符串对象

字符串对象 字符串对象的编码可以是int、raw或者embstr 如果一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么字符串对象会将整数值保存在字符串对象结构的ptr属性里面(将void *转换成long),并且将字符串对象的编码设…

为啥这么做实现不了优雅关闭服务,gin 项目

所谓的优雅关闭服务就是 在关闭服务时,服务不再监听新的请求,并且可以将之前的请求处理完毕。 细节请看 专栏博客Gin项目实战09-优雅关闭服务

【Cute】MMA抽象代码理解 c2d9bff3d88846eb8c523fb722166bc9

【Cute】MMA抽象代码理解 导读: cute 之 Layoutcute Layout 的代数和几何解释cute 之 Tensorcute 之 MMA抽象cute 之 简单GEMM实现 阅读本文前建议先读上面reed大神的数篇文章,文本逻辑主要是针对具体的代码,记录一下自己学习过程中的理解…

Atlas200板卡部署车道线

本博客包含推理的准备和部署代码,一步步实现部署。 这个运行时生成的一个batch的数据,NCHW,就是输入的N,单图片推理就是1,把里面的数量改成1,但是你可以多生成一些bin图片放到校准文件夹中,更改输出文件名…

“城市绿肺诊断:集成GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型技术深入解析生态系统与城镇化协调发展“

基于GIS、RS、VORS模型、CCDM模型、geodetecto、GWR模型集成的生态系统健康的耦合协调分析 城市群是一国经济发展水平的象征,也是一国经济发展到一定阶段的标志,我国城市群建设体量不断增加,将成为全球经济的核心,中国城市群的建…

MyFileServer

靶场下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 信息收集 # nmap -sn 192.168.56.0/24 -oN live.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-24 22:07 CST Nmap scan report for 192.168.56.2 (192.168.56.2) Host is up (0.…

QML与C++通信

一、QML中如何使用C的类和对象 前提条件: 1.从 QObject 或 QObject 的派生类继承 2.使用 Q_OBJECT 宏 这两个条件是为了让一个类能够进入 Qt 强大的元对象系统(meta-object system)中,只有使用元对象系统,一个类的某些…