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_configPermitRootLogin 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.mzph.cn/news/227214.shtml

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

相关文章

『K8S 入门』二:深入 Pod

『K8S 入门』二&#xff1a;深入 Pod 一、基础命令 获取所有 Pod kubectl get pods2. 获取 deploy kubectl get deploy3. 删除 deploy&#xff0c;这时候相应的 pod 就没了 kubectl delete deploy nginx4. 虽然删掉了 Pod&#xff0c;但是这是时候还有 service&#xff0c…

轻松搭建FPGA开发环境:第三课——Vivado 库编译与设置说明

工欲善其事必先利其器&#xff0c;很多人想从事FPGA的开发&#xff0c;但是不知道如何下手。既要装这个软件&#xff0c;又要装那个软件&#xff0c;还要编译仿真库&#xff0c;网上的教程一大堆&#xff0c;不知道到底应该听谁的。所以很多人还没开始就被繁琐的开发环境搭建吓…

电子学会C/C++编程等级考试2021年06月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:逆波兰表达式 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3。逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* +…

智能优化算法应用:基于动物迁徙算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于动物迁徙算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于动物迁徙算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.动物迁徙算法4.实验参数设定5.算法结果6.…

不同的葡萄酒瓶盖会影响葡萄酒饮用的体验

首先&#xff0c;不同的葡萄酒瓶盖会影响我们找到想要喝的葡萄酒的难易程度。螺旋盖、Zork瓶塞和起泡酒“蘑菇形瓶塞”赢得了直接的满足感&#xff0c;它们只需要拔瓶塞不需要开瓶器。来自云仓酒庄品牌雷盛红酒分享对于所有其他的酒瓶封口&#xff0c;我们都需要一个工具来打开…

论文阅读——Mask DINO(cvpr2023)

DINO是检测&#xff0c;Mask DINO是检测分割。 几个模型对比&#xff1a; 传统的检测分割中&#xff0c;检测头和分割头是平行的&#xff0c;Mask DINO使用二分图匹配bipartite matching提高匹配结果的准确性。 box对大的类别不计算损失&#xff0c;因为太大了&#xff0c;会…

Mac安装Typora实现markdown自由

一、什么是markdown Markdown 是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。 它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语言吸收了很多在电子邮…

verilog语法进阶-移位寄存器原语-单输入单输出

概述 verilog c代码 module primitive1(input clk , // system clock 50Mhz on boardinput rst_n, // system rst, low active input a , output y1, // output signaloutput y // output signal);SRLC16_1 #(.INIT(16h0000) // Initial Value of Shift Register ) SRLC16_1…

SpringCloud-高级篇(八)

&#xff08;1&#xff09;TCC模式 前面学了XA和AT模式&#xff0c;这两种模式最终都能实现一致性&#xff0c;和隔离性&#xff0c;XA是强一致&#xff0c;AT是最终一致&#xff0c;隔离性呢XA是在第一阶段不提交&#xff0c;基于事务本身的特性来完成隔离&#xff0c;AT则是…

uniGUI学习之UniTreeview

UniTreeview中能改变一级目录的字体和颜色 function beforeInit(sender, config) { ID"#"config.id; Ext.util.CSS.createStyleSheet( ${ID} .x-tree-node-text{color:green;font-weight:800;} ${ID} .x-tree-elbow-line ~ span{color:black;font-weight:400;} ); }

uniGUI学习之UniHTMLMemo1富文本编辑器

1]系统自带的富文本编辑器 2]jQueryBootstarp富文本编辑器插件summernote.js 1]系统自带的富文本编辑器 1、末尾增加<p> 2、增加字体 3、解决滚屏问题 4、输入长度限制问题 5、显示 并 编辑 HTML源代码(主要是图片处理) 1、末尾增加<p> UniHTMLMemo1.Lines…

【MySQL】启动 和 连接 MySQL

启动停止 mysql安装成功后在cmd输入 net start mysql80 //启动 net stop mysql80 //停止 mysql连接 方式1. 通过客户端去连接 方式2.使用cmd去连接 描述&#xff1a;-u是指定 用户 -p是指定密码 mysql -u root -p password

NVM下载和安装NodeJS教程(环境变量配置)

前言:一个公司很多项目,可能每个项目node版本要求不一样,导致每次切换项目,你要重新下载node,非常麻烦,这个时候,就有了nvm,非常的方便实用,也是程序员必备. 1.nvm是什么? nvm全英文也叫node.js version management&#xff0c;是一个nodejs的版本管理工具。nvm和n都是node.…

基于java+swing+mysq学生成绩管理系统(含课程报告)

基于javaswingmysq学生成绩管理系统_含课程报告 一、系统介绍二、功能展示三、项目相关3.1 乱码问题3.2 如何将GBK编码系统修改为UTF-8编码的系统&#xff1f; 四、其它1.其他系统实现 五、源码下载 一、系统介绍 本系统使用 Swing MySQL IntelliJ IDEA 开发。为管理人员提供…

Mac brew install youtube-dl 【 youtube 下载工具:youtube-dl 安装】

文章目录 1. 简介2. 预备3. 安装4. 命令5. 测试 1. 简介 youtube-dl - 从youtube.com或其他视频平台下载视频 https://github.com/ytdl-org/youtube-dl 2. 预备 安装并配置 git安装 brew 3. 安装 MacBook-Pro ~ % brew install youtube-dl Warning: youtube-dl has been …

蓝桥杯专题-真题版含答案-【国庆星期日】【三色棋】【蒙地卡罗法求 PI】【格雷码(Gray Code)】

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

JVM学习之类加载子系统

类加载子系统 类加载子系统负责从文件或者网络中加载Class文件&#xff0c;class文件在开头有特定的标识 ClassLoader只负责class文件的加载&#xff0c;是否可运行是执行引擎决定的 加载的类信息放在方法区。除了类信息之外&#xff0c;方法区也会放运行时常量池&#xff0c…

TCP报文头(首部)详解

本篇文章基于 RFC 9293: Transmission Control Protocol (TCP) 对TCP报头进行讲解&#xff0c;部分内容会与旧版本有些许区别。 TCP协议传输的数据单元是报文段&#xff0c;一个报文段由TCP首部&#xff08;报文头&#xff09;和TCP数据两部分组成&#xff0c;其中TCP首部尤其重…

基于EasyExcel的数据导入导出

前言&#xff1a; 代码复制粘贴即可用&#xff0c;主要包含的功能有Excel模板下载、基于Excel数据导入、Excel数据导出。 根据实际情况修改一些细节即可&#xff0c;最后有结果展示&#xff0c;可以先看下结果&#xff0c;是否是您想要的。 台上一分钟&#xff0c;台下60秒&a…

【数据在内存中的存储】

目录 整数在内存中的存储大小端字节序和字节序判断浮点数在内存中的存储 1. 整数在内存中的存储 整数的二进制表示方法有三种: 原码、反码和补码 三种表示方法均有符号位和数值位两部分&#xff0c;符号位0表示“正”,1表示"负",而数值位最高的一位被当做符号位,剩…