安全测试|服务器安全加固方法

在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。

1安全的重要性

  • 数据保护:服务器主机存储了大量的重要数据,包括客户信息、财务数据、商业策略等。这些数据如果被非法获取或破坏,将对组织造成巨大的损失。因此,保护服务器主机的安全是保护数据的重要措施。

  • 防止网络攻击:网络攻击者常常将服务器主机作为攻击目标,利用漏洞进行渗透,获取敏感信息,或者破坏系统。保护服务器主机的安全可以防止网络攻击,保护组织的网络安全。

  • 维护系统稳定:服务器主机是网络系统的核心,其稳定运行是保障网络服务正常运转的基础。一旦服务器主机受到攻击或出现故障,将导致网络服务的中断,给组织带来巨大的损失。

2安全加固方法与实例

1、环境说明

服务器:云服务器

操作系统:Centos7.9.2009(Core)

2、安全加固项目

  • 禁用账号SSH登陆

  • 端口调整

  • 防火墙调整

  • 密码策略

2.1禁用账号SSH登陆

禁用用户远程SSH登陆包括禁用root用户和禁用普通用户直接登陆

2.1.1禁用root远程ssh直接登陆

修改/etc/ssh/sshd_config文件

复制代码
#PermitRootLogin yes

修改为:

复制代码
PermitRootLogin no

重启ssh服务,重启后查看

复制代码
systemctl restart sshd.service

2.1.2禁用普通用户远程ssh直接登陆

打开配置文件/etc/ssh/sshd_config

复制代码
vim /etc/ssh/sshd_config

在文件末尾加入要禁用的信息

复制代码
DenyUsers yelflower

保存退出,重启ssh服务

复制代码
systemctl restart sshd.service

2.2修改SSH默认端口

ssh默认端口22,默认扫描的重灾区。将默认端口调整为不常用端口。建议10000~65536端口之间的随机端口,跟现有端口不冲突。

2.2.1 新增端口,后修改

2.2.2防火墙设置

需要将新增调整的端口在防火墙上开启策略

复制代码
#firewall-cmd --zone=public --add-port=31697/tcp --permanent#firewall-cmd --reload

2.2.3 SELinux中添加修改的SSH端口

安装SELinux管理工具semanage

复制代码
#yum provides semanage

安装semanage依赖工具包policycoreutils-python

复制代码
#yum -y install policycoretuils-python

查询ssh服务端口

复制代码
#semanage port -l | grep ssh

像SELinux中添加ssh端口

复制代码
#semanage port -a -t ssh_port_t -p tcp 31697

添加完毕查看端口,确认添加成功后,

重启ssh服务

复制代码
systemctl restart sshd.service

使用31697登陆测试,登陆成功后禁用22端口

2.3 防火墙设置

查看防火墙状态

复制代码
systemctl status firewalld

启动防火墙

复制代码
systemctl start firewalld

关闭防火墙

复制代码
systemctl stop firewalld

重启防火墙

复制代码
systemctl restart firewalld

查看防火墙端口

复制代码
firewall-cmd --list-port

新增端口

复制代码
firewall-cmd --zone=public --add-port=80/tcp --permanent

关闭端口

复制代码
firewall-cmd --zone=public --remove-port=80/tcp --permanent

重新加载

复制代码
firewall-cmd --reload

最小端口法,将不用的端口进行关闭,保留再用的端口,减少安全隐患。

2.4 密码策略

信息系统安全等级保护关于主机的访问控制有一个控制点是这样要求的:操作系统和数据库系统管理用户身份标识应具有不易被冒用的特点,口令应有复杂度要求并定期更换。

密码口令配置文件/etc/login.defs

修改如下:

复制代码
PASS_MAX_DAYS    90PASS_MIN_DAYS    5PASS_MIN_LEN    10PASS_WARN_AGE    7

配置信息查看

通过命令chage -l username来查看账户的配置信息。

这些配置并不对已有账户生效,只对新建账户生效。因此对于已有账户,一定要用chage命令进行逐一修改。

设置密码复杂度

一般要求口令由大小写字母、数字和字符共同组成。唯一的缘由就是这样的口令复杂度高,不容易被暴力破解。在/etc/pam.d/system-auth中添加配置如下:

复制代码
password    required     pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-1 dcredit=-1 

保存测试验证

新增用户

复制代码
#useadd yelflower#passwd yelflower

用户修改密码,必须得遵守设定的密码复杂度的规则。密码过于简单,系统会提示。这个配置要求密码长度10位以上,由至少1位大写、小写字母和数字组成。

登陆失败锁定设置

确认需要达到的效果

云服务器使用的是最小系统安装法,在ssh登陆时限制设置

配置命令

复制代码
auth   required   pam_tally2.so deny=5 lock_time=5 unlock_time=5 
相关推荐
逆风的蚂蚁2 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
ESDWAN3 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
数据库小组4 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
发光小北4 小时前
EtherNet/IP 转 ModbusTCP 网关现场应用中会遇到什么问题?
服务器·网络·tcp/ip
程序猿老A5 小时前
轻量云服务器总是卡,内存占比高?
运维·服务器
cnskylee5 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵5 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
是真的小外套6 小时前
网络安全实战第7期:Hydra爆破SSH实战
安全·web安全·ssh
沫璃染墨6 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
大侠归来6 小时前
常用 MySQL 分库分表方案详解
数据库·mysql