当前位置: 首页 > news >正文

Linux系统常用的安全优化

环境:CentOS7.9
1、禁用SELinux
SELinux是美国国家安全局对于强制访问控制的实现
1)永久禁用SELinux

vim /etc/selinux/config
SELINUX=disabled
#必须重启系统才能生效

2)临时禁用SELInux

getenforce      #查看SELInux当前状态
setenforce 0      #数字0表示Permissive,即给出警告但不会阻止操作,相当于disabled,数字1表示Enforcing,即开启SELinux

生产环境中可以先临时禁用SELinux,即设置setenforce 0,再去修改selinux的配置文件永久禁用,这样就不用立即重启系统也能禁用SELinux了,等下次系统需要重启时就能实现永久禁用selinux了,线上的系统不能说能随便立即重启的。

2、精简开机自启动服务
精简开机自启动是为了节省系统资源,只开启必须的服务。以下是几个必要的开机自启动的服务:

sshd(远程连接服务)、rsyslog(系统的日志服务)、network(网络网卡服务)、crond(计划任务服务,使用crontab命令创建计划任务)、sysstat(一个软件包,包含检测系统性能和吞吐率的一组工具)

systemctl list-unit-files      #查看所有的服务,其中enable就表示开机自启动,disable表示禁止开机自启动
systemctl enable service_name        #开机自启动
systemctl disable service_name        #禁止开机自启动

3、系统安全最小原则
安装的Linux系统最小化,Yum 安装软件也最小化,无用的包不安装;开机自启动服务最小化,即无用的服务不开启;命令最小化,如能用“rm -f tets.txt”就不用“rm -rf tets.txt”;登录最小化,禁用root远程登录,使用普通用户登录即可;普通用户授权最小化,只给用户必要的管理系统的命令;文件及目录权限最小化,禁止随意创建、更改、删除文件。

4、更改SSH服务远程登录配置
修改ssh默认的22端口;禁用root远程登录;禁止空密码登录;只监听必要的网卡地址而不是所有的网卡地址,如服务器存在内网和外网时,如果禁止外部远程登录只允许内网远程登录,则可以设置ssh只监听内网网卡地址。

5、利用sudo 控制用户对系统命令的使用权限
执行 visudo 命令即可快速打开编辑/etc/sudoes文件,找到 root ALL=(ALL)ALL 这行,在这行下面添加需要提升为root权限的普通用户名及权限即可,其格式为:

用户或组 机器=(表示以谁的身份执行)命令

示例:guo ALL=(ALL) /usr/sbin/reboot,/usr/sbin/useadd

说明:

root   ALL=(ALL)ALL

root表示用户名,如果是用户组,这样写 :%组名

ALL :表示允许登录的主机为任意主机

(ALL):表示以谁的身份执行,ALL表示root身份

ALL:表示当前用户可以执行全部命令,如果指定多个命令需要使用英文道号分割

6、设置Linux服务器时间同步
服务器的时间是至关重要的,如果服务器的时间不对,那么数据就有可能出现问题,因为前端记录的数据,往数据库插入记录时,一般都是取服务器的时间,所以说服务器的时间不对就很有可能造成订单的时间出现问题,所以服务器的时间准确性是至关重要;同步,顾名思义就是把服务器的时间同步到另外一台服务器,这里指的另外一台服务器就是指网络上或者本地内网的时间服务器。同步的命令有ntpdate等命令,一般使用定时任务结合ntpdate命令来实现定时同步时间。

7、调整系统文件描述符数量
每个用户能打开的文件数量是有限的,使用命令ulimit -n查看,默认是1024,使用ulimit -SHn 102400 命令来修改限制,但这时临时的退出登录会话后就失效了,如果想永久变更就修改/etc/security/limits.conf 文件,如下:

vi /etc/security/limits.conf
Oracle  hard nofile 102400
Oracle soft nofile 102400

系统级的限制是限制所有用户打开文件描述符的总和,可以通过修改内核参数来更改该限制:

sysctl -w fs.file-max=102400

使用sysctl命令更改也是临时的,如果想永久更改需要在/etc/sysctl.conf添加

fs.file-max=102400
#使用sysctl -p 命令使其生效

8、Linux服务器内核参数优化
内核参数文件是 /etc/sysctl.conf,打开此文件编辑,编辑之后重新读取内核参数生效:sysctl -p

9、锁定系统关键文件,防止被提权篡改
要锁定关键系统文件,必须对账号密码及启动文件加锁,防止被篡改,上锁命令如下:

chattr +i /etc/passwd /etc/shadow /etc/group /etc/inittab
#上锁后所有用户都不能对文件修改删除#解锁 命令
chattr -i /etc/passwd /etc/shadow /etc/group /etc/inittab

10、为grub菜单加密码
为grub菜单加密码的目的是防止他人修改grub进行内核等启动设置,以及用单用户默认启动进行破解root密码等操作,实际上加密码可以在安装系统的过程中设置,安装系统后的具体步骤如下:

执行命令:/sbin/grub2-set-password 生成密码

11、禁止Linux被ping
此项不是必须的,因为有时候我们需要ping服务器查看网络是否正常,当然设置禁止ping也可以,从安全的角度来看,禁止ping还会增加系统的安全性。

永久设置禁止ping :

echo "net.ipv4.icmp_echo_ignore_all=1"  >> /etc/sysctl.conf  #0表示允许,1表示禁止
sysctl -p 

实际生产环境中最常用的做法:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all    #0表示允许,1表示禁止

通过iptables
iptables是Linux命令行防火墙,也可以配置规则禁用ping流量。在Linux服务器上通过iptables来禁用ping请求,请运行以下命令。首先来检测一下iptables的版本。

iptables -V
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
iptables -A OUTPUT -p icmp –icmp-type echo-reply -j#恢复ping
iptables -D OUTPUT -p icmp --icmp-type echo-reply -j DROP
iptables -D INPUT -p icmp --icmp-type echo-request -j

12、ssh配置优化
修改之前,需要将/etc/ssh/sshd_config备份一个


Port 12011 PermitRootLogin no UseDNS no #防止ssh客户端超时# ClientAliveInterval 30 ClientAliveCountMax 99 GSSAuthentication no
#主要目的更改ssh远程端口、禁用root远程登录(本地还是可以root登录的)、禁用dns、防止ssh超时、解决ssh慢,当然也可以启用密钥登录

禁用ssh登录执行某些命令


#编辑~/.ssh/authorized_keys,在前面加上语句:
command="bash --restricted --noprofile --rcfile$HOME/.stricted_profile" ssh-rsa……  #使用restricted模式,并且不加载系统默认的profile文件,而加载我们定义的profile文件$HOME/.stricted_profile。上面添加command参数一定是在一个主机行的前面,每添加一台主机,需要添加一行。
vim $HOME/.stricted_profile文件  #内容如下
PATH=${HOME}/bin
export PATH
#配置允许ssh登录可执行的命令
mkdir $HOME/bin
ln -s /usr/bin/ssh $HOME/bin/  #当登陆这台机器的时候,除了ssh 命令,不能使用其他任何命令

禁用scp和sftp

rpm -qa|grep openssh-*
yum remove openssh-clients -y
#禁止sftp
vi /etc/ssh/sshd.config
Subsystem sftp /usr/libexec/openssh/sftp-server #注释掉
mv /usr/lib/sftp-server /usr/lib/

13、用户权限以及系统安全优化
非root用户添加以及sudo权限控制
通过groupadd 以及useradd建立普通用户以后,需要配置对应的sudo权限,授权不同登录人员的可执行命令权限。此时建议普通用户禁止sudo su -切换root的权限。

比较大的sudo权限分配:

username ALL=NOPASSWD:ALL,!/usr/bin/passwd,/usr/bin/passwd [a-zA-Z]*,!/usr/bin/passwd root,!/bin/bash

禁用普通用户su到root
禁止非WHEEL用户使用SU命令

编辑su配置文件:vi /etc/pam.d/su,开启:

auth required /lib/security/$ISA/pam_wheel.so use_uid   //即要求wheel组的用户才可执行su,只有usermod -G wheel 用户,才可su;auth required pam_wheel.so use_uid

修改/etc/login.defs文件:

echo “SU_WHEEL_ONLY yes” >> /etc/login.defs   //普通用户登录,shell限制

修改默认的su的wheel组:vi /etc/pam.d/su文件

auth sufficient /lib/security/pam_rootok.so debugauth required /lib/security/pam_wheel.so group=wheel   //可将wheel替换为其他

用户配置文件锁定
针对/etc/passwd 、/etc/shadow 、/etc/group和/etc/gshadow进行chattr +i保护,进一步提供系统用户管理安全。

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow

14、服务控制
默认无关服务都禁止运行并chkconfig xxx off,只保留有用服务。这种如果是云计算厂商提供的,一般都是优化过。如果是自己安装的虚拟机或者托管的机器,那就需要优化下,默认只保留network、sshd、iptables、crond、以及rsyslog等必要服务,一些无关紧要的服务就可以off掉了,比如我自己的博客的服务器记录是这样保留服务的:

for service in `chkconfig --list | grep "3:on" |awk '{print $1}' | grep -Ev "sshd|crond|nginxd|network|mysqld|php-fpm|rsyslog|iptables|zabbix-agent|salt-minion"` ;do chkconfig $service off ;done

15、主机名更改
ssh登录以后,势必会看到主机名,这个主机名建议根据业务需要进行命名,这个命名同时也方便于我们后续的监控自动添加以及saltstack等批量化管理有帮助。

16、内核参数优化
进程级文件以及系统级文件句柄数量参数优化
默认ulinit -n看到的是1024,这种如果系统文件开销量非常大,那么就会遇到各种报错比如:

localhost kernel: VFS: file-max limit 65535 reached 或者too many open files 等等,那就是文件句柄打开数量已经超过系统限制,就需要优化了。

这个参数我们进程级优化文件如下:

vim /etc/security/limits.conf # End of file * soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535

系统级文件句柄优化

vim /etc/sysctl.conf
fs.file-max=65535

17、禁止执行 rm -rf /*

#利用工具afe-rm,  安装后替换系统命令rm;
下载地址: https://launchpad.net/safe-rm/+download;
下载:wget  https://launchpad.net/safe-rm/trunk/1.1.0/+download/safe-rm-1.1.0.tar.gztar -zxvf safe-rm-1.1.0.tar.gz   # 将safe-rm命令复制到系统的/usr/local/bin目录
cp safe-rm-1.1.0/safe-rm /usr/local/bin/
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm   # 创建软链接,用safe-rm替换rm,如果有问题,请检查环境变量PATH,是否包含/usr/local/bin路径

设置过滤目录:

编辑:vi /etc/safe-rm.conf 文件,添加需要过滤的目录即可,一行一个,而且应满足递归原则;

格式:

/ 代表过滤 目录/./* 代表过滤 目录/ 下面的所有文件

相关文章:

Linux系统常用的安全优化

环境:CentOS7.9 1、禁用SELinux SELinux是美国国家安全局对于强制访问控制的实现 1)永久禁用SELinux vim /etc/selinux/config SELINUXdisabled #必须重启系统才能生效2)临时禁用SELInux getenforce #查看SELInux当前状态 setenforce 0 #数字…...

Vue-4、单向数据绑定与双向数据绑定

1、单向数据绑定 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>数据绑定</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/…...

【Flutter 开发实战】Dart 基础篇:常用运算符

在Dart中&#xff0c;运算符是编写任何程序的基本构建块之一。本文将详细介绍Dart中常用的运算符&#xff0c;以帮助初学者更好地理解和运用这些概念。 1. 算术运算符 算术运算符用于执行基本的数学运算。Dart支持常见的加、减、乘、除、整除以及取余运算。常见的算数运算符如…...

C++:ifstream通过getline读取文件会忽略最后一行空行

getline是读取文件的常用函数,虽然使用简单,但是有一个较容易被忽视的问题,就是文件最后一行空行会被忽略。 #include <iostream> #include <fstream> #include <string> using namespace std;void readWholeFileWithGetline(string fileName) {string t…...

力扣123. 买卖股票的最佳时机 III

动态规划 思路&#xff1a; 最多可以完成两笔交易&#xff0c;因此任意一天结束后&#xff0c;会处于5种状态&#xff1a; 未进行任何操作&#xff1b;只进行了一次买操作&#xff1b;进行了一次买操作和一次卖操作&#xff1b;再完成了一次交易之后&#xff0c;进行了一次买操…...

Vue3:vue-cli项目创建

一、node.js检测或安装&#xff1a; node -v node.js官方 二、vue-cli安装&#xff1a; npm install -g vue/cli # OR yarn global add vue/cli/*如果安装的时候报错&#xff0c;可以尝试一下方法 删除C:\Users**\AppData\Roaming下的npm和npm-cache文件夹 删除项目下的node…...

C# .Net学习笔记—— 异步和多线程(Task)

一、概念 Task是DotNet3.0之后所推出的一种新的使用多线程的方式&#xff0c;它是基于ThreadPool线程进行封装的。 二、使用多线程的时机 任务能够并发运行的时候&#xff0c;提升速度&#xff1b;优化体验 三、基本使用方法 private void button5_Click(object sender, Ev…...

Python从入门到网络爬虫(读写Excel详解)

前言 Python操作Excel的模块有很多&#xff0c;并且各有优劣&#xff0c;不同模块支持的操作和文件类型也有不同。最常用的Excel处理库有xlrd、xlwt、xlutils、xlwings、openpyxl、pandas&#xff0c;下面是各个模块的支持情况&#xff1a; 工具名称.xls.xlsx获取文件内容写入…...

Mysql之子查询、连接查询(内外)以及分页查询

目录 一.案例&#xff08;接上篇博客&#xff09; 09&#xff09;查询学过「张三」老师授课的同学的信息 10&#xff09;查询没有学全所有课程的同学的信息 11&#xff09;查询没学过"张三"老师讲授的任一门课程的学生姓名 12&#xff09;查询两门及其以上不及格课程…...

计算机的存储单位

在计算机中&#xff0c;只能识别二进制。 byte是1个字节&#xff0c;是8个比特位&#xff0c;所以byte可以存储的最大值是&#xff1a;01111111&#xff0c;byte是 [-128 ~ 127] 共可以标识256个不同的数字。 1字节 8bit&#xff08;8比特&#xff09;--> 1byte 8bit 类…...

设备树文件中的设备节点

一. 简介 前面几篇文章学习了 关于设备树文件的编译&#xff0c;设备树文件的调用。 本文开始学习 设备树文件的语法。具体学习设备节点与标准属性。 二. 设备树文件之设备节点与标准属性 1. 设备节点 设备树 是采用树形结构来描述板子上的设备信息的文件&#xff0c;每…...

文件管理工具.netcore资源文件管理

文件管理工具 怎么快速有效的管理我的文件包括文件夹&#xff0c;需求功能是 模糊搜索显示匹配的文件夹或文件数据 快速打开文件夹位置 在windows直接查看搜索速度太慢&#xff0c;范围宽泛&#xff0c;整理所需资源文件名和文件本机路径保存在数据库&#xff0c;可以在数据库中…...

go-carbon v2.3.4 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

vue3 内置组件

文章目录 前言一、过渡效果相关的组件1、Transition2、TransitionGroup 二、状态缓存组件&#xff08;KeepAlive&#xff09;三、传送组件&#xff08;Teleport &#xff09;四、异步依赖处理组件&#xff08;Suspense&#xff09; 前言 在vue3中 其提供了5个内置组件 Transiti…...

MFC如何动态创建button按钮并添加点击事件

在MFC中&#xff0c;可以使用CButton类来动态创建按钮。下面是一个示例代码&#xff0c;演示了如何动态创建按钮并添加点击事件&#xff1a; 在对话框类的头文件中声明按钮变量&#xff1a; CButton m_btnDynamic;在对话框的OnInitDialog()函数中使用Create()函数创建按钮&am…...

Qt - QML框架

文章目录 1 . 前言2 . 框架生成3 . 框架解析3.1 qml.pro解析3.2 main.cpp解析3.3 main.qml解析 4 . 总结 【极客技术传送门】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 前言 什么是QML&#xff1f; QML是一种用户界面规范和编程语言。它允许开发人员…...

Python+Flask+MySQL的图书馆管理系统【附源码,运行简单】

PythonFlaskMySQL的图书馆管理系统【附源码&#xff0c;运行简单】 总览 1、《的图书馆管理系统》1.1 方案设计说明书设计目标需求分析工具列表 2、详细设计2.1 登录2.2 注册2.3 程序主页面2.4 图书新增界面2.5 图书信息修改界面2.6 普通用户界面2.7 其他功能贴图 3、下载 总览…...

Module-Federation[微前端]

Module-Federation 微前端简介我们为什么没有延续使用【乾坤】使用Module-Federation 优/缺EMP 优EMP 缺图解DEMO详解`Tips:` [文件资源](https://download.csdn.net/download/alnorthword/88699315)微前端简介 微前端是借鉴了微服务的理念,将一个庞大的应用拆分成多个独立灵活…...

Spring 动态数据源事务处理

在一般的 Spring 应用中,如果底层数据库访问采用的是 MyBatis,那么在大多数情况下,只使用一个单独的数据源,Spring 的事务管理在大多数情况下都是有效的。然而,在一些复杂的业务场景下,如需要在某一时刻访问不同的数据库,由于 Spring 对于事务管理实现的方式,可能不能达…...

WSL2-Ubuntu22.04子系统图形化界面搭建与远程桌面连接

提示&#xff1a;文中不提供WSL2子系统搭建步骤&#xff0c;假定子系统已建立好&#xff1a; 文章目录 检查WSL子系统状态图形化界面安装远程桌面连接可能遇到的相关问题xrdp状态异常远程桌面黑屏 检查WSL子系统状态 wsl -l -v如下图所示为正常 图形化界面安装 以此执行如下…...

【sklearn练习】model常用属性和功能

介绍 scikit-learn 中的机器学习模型&#xff08;estimator&#xff09;通常具有一组常用属性和功能&#xff0c;这些属性和功能可以用于训练、评估和使用模型。以下是一些常见的模型属性和功能&#xff1a; 常见属性&#xff1a; coef_&#xff1a;对于线性模型&#xff08;…...

IO类day01

File类 File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径) 使用File可以做到: 1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等 2:创建和删除文件或目录 3:访问一个目录中的子项 但是File不能访问文件数据. pu…...

软件测试大作业||测试计划+测试用例+性能用例+自动化用例+测试报告

xxx学院 2023—2024 学年度第二学期期末考试 《软件测试》&#xff08;A&#xff09;试题&#xff08;开卷&#xff09; 题目&#xff1a;以某一 web 系统为测试对象&#xff0c;完成以下文档的编写&#xff1a; &#xff08;满分 100 分&#xff09; &#xff08;1&am…...

适用于任何公司的网络安全架构

1.第一等级:基础级 优势 可防范基本有针对性的攻击&#xff0c;使攻击者难以在网络上推进。将生产环境与企业环境进行基本隔离。 劣势 默认的企业网络应被视为潜在受损。普通员工的工作站以及管理员的工作站可能受到潜在威胁&#xff0c;因为它们在生产网络中具有基本和管理…...

Excel:通过excel将表数据批量转换成SQL语句

这里有一张表《student》&#xff0c;里面有10条测试数据&#xff0c;现在将这10条测试数据自动生成 insert语句&#xff0c;去数据库 批量执行 P.S. 主要用到excel表格中的 CONCATENATE函数&#xff0c;将单元格里面的内容填入到sql里面对应的位置 1. 先写好一条insert语句&a…...

Android linphone-android sdk设置语音编码问题

1.遇到的问题 今天遇到linphone-android sdk需要解决语音编码问题&#xff0c;需要指定编码。查了下配置&#xff0c;里面没有发现类似的配置。 ## Start of factory rc # This file shall not contain path referencing package name, in order to be portable when app is r…...

Hyperledger Fabric Orderer 配置解析

文中使用的 fabric 版本为 2.4.1 排序节点在 Fabric 网络中为 Peer 提供排序服务。与 Peer 节点类似&#xff0c;排序节点支持从命令行参数、环境变量或配置文件中读取配置信息。环境变量中配置需要以 ORDERER_前缀开头&#xff0c;例如&#xff0c;配置文件中的 general.Liste…...

苹果电脑交互式原型设计软件Axure RP 9 mac特色介绍

Axure RP 9 for Mac是一款交互式原型设计软件&#xff0c;使用axure rp9以最佳的方式展示您的作品&#xff0c;优化现代浏览器并为现代工作流程设计。同时确保您的解决方案正确完整地构建。Axure RP 9 for Mac为您整理笔记&#xff0c;将其分配给UI元素&#xff0c;并合并屏幕注…...

Java 判断实体类对象的全部属性是否空

public boolean checkObjAllFieldsIsNull(Object object) {// 如果对象为null直接返回trueif (null object) {return true;}try {// 挨个获取对象属性值for (Field f : object.getClass().getDeclaredFields()) {f.setAccessible(true);// 如果有一个属性值不为null&#xff0…...

Vue3-44-Pinia- 安装步骤

介绍 本文介绍 在 vue3 中 安装 Pinia 的步骤 安装步骤 1、npm 安装 npm install pinia》 安装完成后可以看到 package.json 中添加了 pinia 的依赖信息 2、main.ts 中配置 // 引入 vue实例创建方法 import { createApp } from vue// 引入pinia import { createPinia } fro…...

wordpress api 自定义/b站视频推广网站2023年

睡袋、小马扎已经out啦~ IPhone7发售在即&#xff0c;苹果零售店前渐渐开始排起长龙。在iPhone6s发售的时候&#xff0c;从漫天遍野的帐篷、睡袋、小马扎中&#xff0c;我们看到了一个新奇的“排队神器”——一台简陋的机器人。或许是受此启发&#xff0c;看到了里面的商机&…...

在b2c电商网站上购物时提供的送货/百度搜索收录入口

背景 CNN是深度学习的重中之重&#xff0c;而conv1D&#xff0c;conv2D&#xff0c;和conv3D又是CNN的核心&#xff0c;所以理解conv的工作原理就变得尤为重要。在本博客中&#xff0c;将简单梳理一下这三种卷积&#xff0c;以及在PyTorch中的应用方法。 参考 https://pytorch.…...

页面设计风格/seo整站优化系统

回文 回文串就是一个正读和反读都一样的字符串&#xff0c;比如“level”或者“noon”等等就是回文串。 code(Java) …...

网站制作需要哪些软件/怎么推广平台

文章目录平面切分路径数字三角形蛇形填数进制转换一、其他进制转十进制&#xff1a;二、十进制转其他进制一、Itertools.permutations1.马虎算式2.幻方二、itertools.combinations3.数字划分一、datetime模块1.星期一2.星系炸弹二、calendar模块常用&#xff1a;1.天数单词分析…...

海南网站建设粤icp备/淘宝的前100个关键词排名

详情请参考&#xff1a;https://help.aliyun.com/document_detail/32069.html?spma2c4g.11186623.6.763.ZgC59a或者https://help.aliyun.com/document_detail/64041.html?spma2c4g.11186623.6.762.EmuWIt这里写的是最简单的写法&#xff0c;只是实现其简单的功能1.引入js文件…...

网站下要加个备案号 怎么做/网络自动推广软件

虚拟机复制后&#xff0c;由于SID都是一样的&#xff0c;所以在做AD环境内的应用实验时&#xff0c;经常会出现问题现在放一个SID更新工具&#xff0c;供以后使用转载于:https://blog.51cto.com/fishvsfrog/1220041...