阿里云99计划服务器优化教程,Linux服务器安全优化完整指南

ECS 经济型e实例99计划 2核2G,3M固定带宽 40G ESSD Entry云盘

Linux服务器配置

ECS 经济型e实例99计划 2核2G,3M固定带宽 40G ESSD Entry云盘

检测是否存在内存超售

1
curl https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh | bash

1
wget --no-check-certificate -O memoryCheck.sh https://raw.githubusercontent.com/uselibrary/memoryCheck/main/memoryCheck.sh && chmod +x memoryCheck.sh && bash memoryCheck.sh

如果超售,可以采用下面的方法关闭

检查

要检查是否存在Virtio-Balloon,可使用lsmod检查是否加载

1
lsmod | grep virtio_balloon

若无输出,则不存在Virtio-Balloon

永久卸载

为了防止重启后自动启动,可以将规则添加到/etc/modprobe.d/下的配置文件

打开配置文件

1
vim /etc/modprobe.d/blacklist.conf

上述命令中,vim可换为您习惯的文件编辑器,blacklist.conf文件名可修改,只要确保后缀为.conf

写入规则

使用文件编辑器在配置文件内写入

1
blacklist virtio_balloon

保存并退出文件编辑器

通过在 blacklist-virtio-balloon.conf 文件中写入 “blacklist virtio_balloon”,系统将不再加载 virtio_balloon 模块,因此禁用了相关的功能和特性。这样做可以确保系统在启动时不会加载这个模块,从而实现了禁用 virtio_balloon 内核模块的目的。

重新生成initramfs

1
update-initramfs -u

它会重新生成 initramfs 文件,将最新的配置文件和内核模块信息包含进去。

对于编译到内核

部分服务商可能会将virtio_balloon编译进内核,而不是内核模块,使得无法通过lsmod | grep virtio_balloon 查询到,且rmmod virtio_balloon无法卸载,对于这种情况可以采用指定Linux内核启动时的命令行参数和选项禁用。

首先,使用您喜欢的文件编辑器打开/etc/default/grub

如vim

1
vim /etc/default/grub

找到GRUB_CMDLINE_LINUX ,在后面的引号内加上virtio_balloon=0

例如

1
GRUB_CMDLINE_LINUX="virtio_balloon=0"

若GRUB_CMDLINE_LINUX 后的引号内非空,则按下面修改

例如(abc为示例原有参数)

1
GRUB_CMDLINE_LINUX="abc virtio_balloon=0"

修改完毕后,输入以下命令更新grub配置,并重启服务器

1
update-grub

若没有上述命令,则使用以下命令

1
grub-mkconfig -o /boot/grub/grub.cfg

开启zram

1
curl -L https://raw.githubusercontent.com/spiritLHLS/addzram/main/addzram.sh -o addzram.sh && chmod +x addzram.sh && bash addzram.sh

选lz4,768MB。

修改部分配置

Linux配置

参数 说明
fs.file-max 186628 系统最大文件句柄数,影响连接数
fs.inotify.max_user_instances 512 文件监控实例数,影响同步工具
fs.inotify.max_user_watches 32768 可监控的最大文件数
net.core.netdev_max_backlog 2000 网络设备接收队列,防止高流量丢包
net.core.somaxconn 1024 监听队列长度,影响并发连接数
net.ipv4.tcp_fin_timeout 60 TCP关闭等待时间(秒),加快端口回收
net.ipv4.tcp_keepalive_time 7200 TCP空闲探测时间(秒)
net.ipv4.tcp_max_syn_backlog 1024 TCP半连接队列,防御SYN攻击
net.ipv4.tcp_syncookies 1 SYN Cookies防御洪水攻击 (0关闭/1开启)
net.ipv4.tcp_tw_reuse 1 TIME_WAIT重用,加快端口释放 (0关闭/1开启)
net.ipv4.tcp_window_scaling 1 TCP窗口扩展,提高带宽性能 (0关闭/1开启)

Nginx

参数 说明
worker_processes auto 处理进程,auto表示自动,数字表示进程数
worker_connections 2048 最大并发链接数
keepalive_timeout 60 连接超时时间
gzip 开启 是否开启压缩传输
gzip_min_length 2 KB,最小压缩文件
gzip_comp_level 2 压缩率
client_max_body_size 50 MB,最大上传文件
server_names_hash_bucket_size 512 服务器名字的hash表大小
client_header_buffer_size 32 KB,客户端请求头buffer大小
client_body_buffer_size 128 KB,请求主体缓冲区

PHP

参数 说明
short_open_tag 关闭 短标签支持
max_execution_time 180 最大脚本运行时间
max_input_time 60 最大输入时间
memory_limit 128M 脚本内存限制
post_max_size 50M POST数据最大尺寸
file_uploads 开启 是否允许上传文件
upload_max_filesize 48M 允许上传文件的最大尺寸
max_file_uploads 20 允许同时上传文件的最大数量
default_socket_timeout 60 Socket超时时间
error_reporting E_ALL 错误级别
display_errors 关闭 是否输出详细错误信息
cgi.fix_pathinfo 0 是否开启pathinfo
date.timezone Asia/Shanghai 时区

PHP性能调整

参数 说明
运行模式 动态模式 PHP-FPM运行模式
max_children 10 允许创建的最大子进程数
start_servers 2 起始进程数(服务启动后初始进程数量)
min_spare_servers 2 最小空闲进程数(清理空闲进程后的保留数量)
max_spare_servers 6 最大空闲进程数(当空闲进程达到此值时清理)

Redis

参数 说明
bind 127.0.0.1 绑定IP(修改绑定IP可能会存在安全隐患)
port 6379 绑定端口
timeout 300 空闲连接超时时间,0表示不断开
maxclients 256 最大连接数
databases 16 数据库数量
requirepass [您的强密码] redis密码,留空代表没有设置密码
maxmemory 768 MB,最大使用内存,0表示不限制

Redis持久化

参数 说明
appendonly 开启
appendfsync everysec
save 900 100 900秒内插入100条数据
save 300 50 300秒内插入50条数据
save 60 1000 60秒内插入1000条数据