CentOS 7系统加固详细方案SSH FTP MYSQL加固

一、删除后门账户 修改强口令

1、修改改密码长度需要编译login.defs文件

vi /etc/login.defs
PASS_MIN_LEN 8

在这里插入图片描述

2、注释掉不需要的用户和用户组

在这里插入图片描述

或者
检查是否存在除root之外UID为0的用户
使用如下代码,对passwd文件进行检索:

awk -F ':' '($3==0){print $1)' /etc/passwd

将检索出来的不是root的用户使用userdel命令全部删除。
在这里插入图片描述

3、限制su命令:如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:

auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=isd

在这里插入图片描述

二、更改权限设置

1、chattr命令给下面的文件加上不可更改属性,从而防止非授权用户获得权限。

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

在这里插入图片描述
2、禁止Ctrl Alt Delete重新启动机器命令
修改/etc/inittab文件,将”ca::ctrlaltdel:/sbin/shutdown -t3 -r now”一行注释掉。

在这里插入图片描述

重新设置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:# chmod -R 700 /etc/rc.d/init.d/*
在这里插入图片描述

三、远程登陆

1、#不允许使用低版本的SSH协议

vi /etc/ssh/ssd_config
将#protocol 2,1改为
protocol 2

在这里插入图片描述

2、#取消root直接远程登录

vi /etc/ssh/sshd_config
	PermitRootLogin no

在这里插入图片描述

3、#禁用.rhosts 文件

	Vi /etc/ssh/sshd_config
IgnoreRhosts yes

在这里插入图片描述

4、#禁用基于主机的认证

Vi /etc/ssh/sshd_config
HostbasedAuthentication no

在这里插入图片描述

5、#禁用空密码:

PermitEmptyPasswords no
禁止帐号使用空密码进行远程登录SSH

在这里插入图片描述

6、设置访问控制策略限制能够管理本机的IP地址
检查方法:

#cat /etc/ssh/sshd_config  查看有无AllowUsers的语句
备份方法:
#cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
加固方法:
#vi /etc/ssh/sshd_config,添加以下语句
AllowUsers  *@127.*.*.*     此句意为:仅允许127.0.0.0/8网段所有用户通过ssh访问	

在这里插入图片描述

保存后重启ssh服务

#service sshd restart

在这里插入图片描述
7、限制FTP登录
检查方法:
#cat /etc/vsftpd/ftpusers 确认是否包含用户名,这些用户名不允许登录FTP服务
备份方法:
#cp -p /etc/vsftpd/ftpusers /etc/vsftpd/ftpusers_bak
加固方法:
#vi /etc/vsftpd/ftpusers 添加行,每行包含一个用户名,添加的用户将被禁止登录FTP服务(红色字体为修改部分)
在这里插入图片描述

四、服务器

1、服务器禁止ping

 cp  /etc/rc.d/rc.local  /etc/rc.d/rc.localbak     
 vi  /etc/rc.d/rc.local        #在文件末尾增加下面这一行
 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all   

参数0表示允许 1表示禁止
在这里插入图片描述

五、限制访问

1、在 /etc/hosts.allow中加入
all:127.0.0.1
这样就会允许来自127.0.0.1的客户来访问。
在这里插入图片描述

在 /etc/hosts.deny中加入
all:0.0.0.0
就限制了来自0.0.0.0的所有的所有的IP。
在这里插入图片描述

设置好后,要重新启动
# /etc/rc.d/init.d/xinetd restart
在这里插入图片描述

#/etc/rc.d/init.d/network restart
在这里插入图片描述

六、FTP加固

1、禁止匿名登录
anonymous_enable=NO
在这里插入图片描述

2、设置本地用户的文件生成掩码为022,默认值为077
local_umask=022
在这里插入图片描述

3、禁止激活上传和下载日志
xferlog_enable=NO
在这里插入图片描述

4、禁止匿名用户上传
为了禁止匿名用户上传,需要在/etc/vsftpd中激活两个配置选项,分别是:
anon_upload_enable=NO
//禁止匿名用户上传
在这里插入图片描述

anon_mkdir_write_enable=NO
//关闭匿名用户的写和创建目录的权限
在这里插入图片描述

若要以上两项设置生效,同时还要求:
write_enable=NO
//禁止匿名用户对文件系统的上传目录具有写权限
在这里插入图片描述

添加如下的配置语句:
anon_world_readable_only=YES
//上面的配置语句用于禁止放开匿名用户的浏览权限
在这里插入图片描述

重新启动vsftpd.
在这里插入图片描述

5、设置客户端连接时的端口范围
例如下面的配置:
pasv_min_port=50000 (改成1)
pasv_max_port=60000(改成2)
将使客户端连接时的端口范围在50000和60000之间。这提高了系统的安全性。

6、设置chroot
在 默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限许可的范围内进行下载和上传。这样的设置对于一个FTP服务器来说是不安全的。如果希望用户登录后不能切换到自家目录以外的目录,则需要设置chroot选项,涉及如下选项:
chroot_local_user
chroot_list_enable
chroot_list_file
有两种设置chroot的方法:
(1)设置对所有的本地用户执行chroot(即活动范围限制在自家目录)只要将chroot_local_user的值设 为YES即可, 即:
chroot_local_user=YES
在这里插入图片描述

(2)设置指定的用户执行chroot需要如下的设置:
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file= /etc/vsftpd.chroot_list
这样,只有/etc/vsftpd.chroot_list文件中指定的用户才执行chroot。
注意 :上面所提及的文件/etc/vsftpd.chroot_list和下面将要提及的文件 /etc/vsftpd.user_list的格式要求均为每个 用户名占一行。

7、只允许指定的主机访问
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
only_from <主机表>
例如:only_from 192.168.1.0
表示只允许192.168.1.0网段内的主机访问。
2)指定不能访问的主机
在配置文件/etc/xinetd.d/vsftpd的{}中添加如下的配置语句:
no_access <主机表>
例如:no_access 192.168.1.0
表示只有192.168.1.0网段内的主机不能访问。
(因为现在情况是vsftpd服务不是由xinetd管理的,所以没有这个配置文件;vsftpd使用standalone模式启动,则有这个配置文件)

七、一些需要禁用的PHP危险函数(disable_functions)

phpinfo()
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。
危险等级:中

passthru()
功能描述:允许执行一个外部程序并回显输出,类似于 exec()。
危险等级:高

exec()
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。
危险等级:高

system()
功能描述:允许执行一个外部程序并回显输出,类似于 passthru()。
危险等级:高

chroot()
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 CLI 模式
PHP 时才能工作,且该函数不适用于 Windows 系统。
危险等级:高

scandir()
功能描述:列出指定路径中的文件和目录。
危险等级:中

chgrp()
功能描述:改变文件或目录所属的用户组。
危险等级:高

chown()
功能描述:改变文件或目录的所有者。
危险等级:高

shell_exec()
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。
危险等级:高

proc_open()
功能描述:执行一个命令并打开文件指针用于读取以及写入。
危险等级:高

proc_get_status()
功能描述:获取使用 proc_open() 所打开进程的信息。
危险等级:高

error_log()
功能描述:将错误信息发送到指定位置(文件)。
安全备注:在某些版本的 PHP 中,可使用 error_log() 绕过 PHP safe mode,
执行任意命令。
危险等级:低

ini_alter()
功能描述:是 ini_set() 函数的一个别名函数,功能与 ini_set() 相同。
具体参见 ini_set()。
危险等级:高

ini_set()
功能描述:可用于修改、设置 PHP 环境配置参数。
危险等级:高

ini_restore()
功能描述:可用于恢复 PHP 环境配置参数到其初始值。
危险等级:高

dl()
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。
危险等级:高

pfsockopen()
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。
危险等级:高

syslog()
功能描述:可调用 UNIX 系统的系统层 syslog() 函数。
危险等级:中

readlink()
功能描述:返回符号连接指向的目标文件内容。
危险等级:中

symlink()
功能描述:在 UNIX 系统中建立一个符号链接。
危险等级:高

popen()
功能描述:可通过 popen() 的参数传递一条命令,并对 popen() 所打开的文件进行执行。
危险等级:高

stream_socket_server()
功能描述:建立一个 Internet 或 UNIX 服务器连接。
危险等级:中

putenv()
功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中,可利用该函数
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。
危险等级:高

禁用方法如下:
打开/etc/php.ini文件,
查找到 disable_functions ,添加需禁用的函数名,如下:
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen
在这里插入图片描述

八、MySQL加固

1、修改root用户口令,删除空口令
缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母、数字和符号组成的不规律密码。使用MySQL自带的命令mysaladmin修改root密码,同时也可以登陆数据库,修改数据库mysql下的user表的字段内容,修改方法如下所示:

 /usr/local/mysql/bin/mysqladmin -u root password “upassword” //使用mysqladmin

在这里插入图片描述

#mysql> use mysql;
#mysql> update user set password=password(‘upassword’) where user=’root’;

在这里插入图片描述

#mysql> flush privileges; //强制刷新内存授权表,否则用的还是在内存缓冲的口令

在这里插入图片描述

2、禁止远程连接数据库

#vi /etc/my.cf

将#skip-networking注释去掉。

在这里插入图片描述

# /usr/local/mysql/bin/mysqladmin -u root -p shutdown //停止数据库
#/usr/local/mysql/bin/mysqld_safe –user=mysql & //后台用mysql用户启动mysql

3、用户目录权限限制
默认的mysql是安装在/usr/local/mysql,而对应的数据库文件在/usr/local/mysql/var目录下,因此,必须保证该目录不能让未经授权的用户访问后把数据库打包拷贝走了,所以要限制对该目录的访问。确保mysqld运行时,只使用对数据库目录具有读或写权限的linux用户来运行。

# chown -R root /usr/local/mysql/ //mysql主目录给root
# chown -R mysql.mysql /usr/local/mysql/var //确保数据库目录权限所属mysql用户

4、禁止MySQL对本地文件存取
可以在my.cnf中添加local-infile=0,或者加参数local-infile=0启动mysql。
在这里插入图片描述

#/usr/local/mysql/bin/mysqld_safe –user=mysql –local-infile=0 &
#mysql> load data local infile ’sqlfile.txt’ into table users fields terminated by ‘,’;
#ERROR 1148 (42000): The used command is not allowed with this MySQL version

–local-infile=0选项启动mysqld从服务器端禁用所有LOAD DATA LOCAL命令,假如需要获取本地文件,需要打开,但是建议关闭。

5、禁止远程访问
如果数据库不需要远程访问,可以禁止远程 TCP/IP 连接,通过在 MySQL 服务器的启动参数中添加–skip-networking参数使 MySQL 服务不监听任何 TCP/IP 连接,增加安全性。

九、Kill 连接(shell)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、shell攻击获取flag(nc和POST)

在这里插入图片描述

十一、python

DisplayDirectory
在这里插入图片描述

nc
在这里插入图片描述

WebShell
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 说明 博主是x86平台&#xff0c;所以下面的结果是28&#xff1b;x64平台下是40&#xff0c;size_t变了&#xff0c;由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组&#xff0c;…

极坐标下的牛拉法潮流计算57节点MATLAB程序

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 潮流计算&#xff1a; 潮流计算是根据给定的电网结构、参数和发电机、负荷等元件的运行条件&#xff0c;确定电力系统各部分稳态运行状态参数的计算。通常给定的运行条件有系统中各电源和负荷点的功率、枢纽…

大模型时代-大模型开发入门

一、 学习大模型的入门知识 深度学习基础知识&#xff1a;了解深度学习中的基本概念、算法和模型&#xff0c;包括神经网络、卷积神经网络、循环神经网络等。 编程能力&#xff1a;掌握至少一种编程语言&#xff0c;如Python、C等&#xff0c;熟悉常用的深度学习框架&#xff…

解锁数据探索新时代,JetBrains DataGrip 2023 Mac/win中文版下载

JetBrains DataGrip 2023 Mac/win&#xff0c;作为一款全新的数据库管理和开发工具&#xff0c;为数据工程师、分析师和开发人员提供了强大的功能和工具&#xff0c;帮助他们更高效地处理和分析数据。无论你是使用Mac还是Windows系统&#xff0c;都能够通过这款软件轻松驾驭数据…

【halcon深度学习】目标检测的数据准备过程中的一个库函数determine_dl_model_detection_param

determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数&#xff0c;强烈建议使用这一过程来优化训练和推断性能。 过程签名 determine_dl_model_detection…

【JAVA日志框架】JUL,JDK原生日志框架详解。

前言 Java日志体系混乱&#xff1f;Java日志框架系列&#xff0c;清晰简洁整理好整个Java的日志框架体系。第一篇&#xff0c;JDK原生日志框架——JUL。 目录 1.概述 2.日志级别 3.配置 4.继承关系 1.概述 日志框架的核心问题&#xff1a; 日志是用来记录应用的一些运行…

听GPT 讲Rust源代码--src/tools(13)

File: rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs 在Rust源代码中&#xff0c;路径为rust/src/tools/rust-analyzer/crates/ide-diagnostics/src/handlers/incoherent_impl.rs的文件是为了处理Rust代码中的不一致实现问题而存在的。…

蓝桥杯专题-真题版含答案-【骑士走棋盘】【阿姆斯壮数】【Shell 排序法 - 改良的插入排序】【合并排序法】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

自定义时间选择器

自定义时间选择器 文章目录 自定义时间选择器第一章 效果演示第01节 效果图第02节 主要文件 第二章 案例代码第01节 核心文件 WheelPicker第02节 实体类 WheelBean第03节 接口类 IWheelPicker第04节 原子时间类 DateTimePickerView第05节 原子时间类 PickerYear第06节 原子时间…

网络(七)路由协议以及相关配置

目录 一、路由器的工作原理 二、路由表的形成 2.1 直连网段 2.2 非直连网 2.3 路由表解析 2.3.1 查看路由表 2.3.2 解析 三、静态路由和默认路由 1. 静态路由 1.1 定义 1.2 特点 2. 默认路由 2.1 定义 2.2 特点 四、静态路由和默认路由的配置 1. 静态路由配置…

maui中实现加载更多 RefreshView跟ListView(1)

效果如图&#xff1a; MainPage.xaml.cs: using System; using System.Collections.ObjectModel; using System.Threading.Tasks; using Microsoft.Maui.Controls; using Microsoft.Maui.Controls.Xaml; using System.ComponentModel; using System.Runtime.CompilerServices…

visual stdio code运行js没有输出

visual code运行js没有输出 先Debug file 然后右键直接run code就会输出了 插件的安装 visual stdio code插件安装 c qt wordle游戏实现

知识图谱之关键实体数据爬取

目录 爬取实体概览 爬取技术介绍 requests_html Selenium 两者比较 学习路径 代码结构 高可用爬取策略 基于文件记录位点 请求失败指数退避重试 爬取代码 品牌数据 车系数据 车型数据 车型配置数据 代码地址 爬取实体概览 一个品牌有多个车系,一个车系有多个…

C语言:猜数字游戏

#include<stdio.h> #include<time.h> #include<stdlib.h> void menu() {printf("********************************\n");printf("****** 1.开始 2.退出 ******\n");printf("********************************\n"); } voi…

论文阅读笔记(12月15)--DialogXL

论文阅读笔记(12月15)–DialogXL 基本情况介绍&#xff1a; 作者&#xff1a;Weizhou Shen等 单位&#xff1a;中山大学 时间&期刊&#xff1a;AAAI 2021 主题&#xff1a;对话情绪识别(ERC)–文本模态 论文链接&#xff1a;https://ojs.aaai.org/index.php/AAAI/article…

MX6ULL学习笔记(十二)Linux 自带的 LED 灯

前言 前面我们都是自己编写 LED 灯驱动&#xff0c;其实像 LED 灯这样非常基础的设备驱动&#xff0c;Linux 内 核已经集成了。Linux 内核的 LED 灯驱动采用 platform 框架&#xff0c;因此我们只需要按照要求在设备 树文件中添加相应的 LED 节点即可&#xff0c;本章我们就来学…

算法:二叉树的遍历

一、31种遍历方法 (1)先序法&#xff08;又称先根法&#xff09; 先序遍历&#xff1a;根&#xff0c;左子树&#xff0c;右子树 遍历的结果&#xff1a;A&#xff0c;B&#xff0c;C 遍历的足迹&#xff1a;沿途经过各结点的“左部” (2)中序法&#xff08;又称中根法&#…

【MySQL内置函数】

目录&#xff1a; 前言一、日期函数获取日期获取时间获取时间戳在日期上增加时间在日期上减去时间计算两个日期相差多少天当前时间案例&#xff1a;留言板 二、字符串函数查看字符串字符集字符串连接查找字符串大小写转换子串提取字符串长度字符串替换字符串比较消除左右空格案…

【ArkTS】Watch装饰器

Watch装饰器&#xff0c;相当于Vue中的监听器 以及 React中使用useEffect监听变量 使用Watch装饰器&#xff0c;可以监听一个数据的变化&#xff0c;并进行后续的响应。 使用方法&#xff1a; Watch(‘回调函数’)&#xff0c;写在State装饰器后&#xff08;其实写在前面也行&a…

在thinkphp5.1 自定义验证规则 获取get 传递的值的时候 传递了 值 能够获取到 验证出错

控制器: public function teamDetail(){if(request()->isGet()){$team_id $this->request->get(team_id, );$this->validate->scene(teamDetail)->check($team_id);if ($this->validate->getError()) {return resultArray(lang(strval($this->vali…
最新文章