沫延说
沫延说

CentOS系统必做的优化项目

前言

操作系统设计初衷为的是可以在多种环境情况下负载任务,优先考虑的肯定是稳定性和兼容性,而对于VPS云主机或者本地服务器,肯定是要对系统进行一些优化的

 

具体操作

获取系统信息

查看内核版本

uname -r

查看系统版本

cat /etc/redhat-release

查看网络信息

类似于Windows下的ipconfig命令

CentOS7
ip addr
CentOS8
nmcli

查看DNS配置

cat /etc/resolv.conf

如果返回空则没有配置DNS地址

修改主机名

hostnamectl set-hostname [主机名称]

修改DNS配置

一般来说云主机都已经配置好了,如果是本地虚拟机安装或者有其他特殊需求可以确认或更改一下

使用vi /etc/resolv.conf编辑文件

加入或更改DNS配置(第一个是百度的,第二个是阿里的)

nameserver 180.76.76.76
nameserver 223.6.6.6

加入国内镜像CentOS官方源和EPEL源地址加速软件下载

CentOS7

切换为阿里云和网易云的国内镜像源,我已经整合好了,直接使用即可

#有时候可能没有wget组件,所以使用curl命令实现
curl -k -o /etc/yum.repos.d/CentOS-Base.repo https://mirror.rowsen.com/repo/Centos-7.repo
curl -k -o /etc/yum.repos.d/epel.repo https://mirror.rowsen.com/repo/epel-7.repo
#重建缓存
yum makecache

CentOS8

切换为阿里云的国内镜像源,

但是阿里云的镜像源中配置了一个内网地址供ECS产品使用,如果您的服务器并非阿里云ECS产品则需要执行第二条命令,以修正第一条命令的内网地址

当然了,不修正也可以用,只不过会报一个错误,但是不影响执行

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
yum makecache

#epel源
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

 

升级内核

CentOS7入口

CentOS8入口

升级系统和软件(依赖)

升级系统和软件(依赖)

yum update

此处建议reboot重启一下,不重启不影响

有些情况下使用yum update会更新内核,导致切换引导内核,重启后建议uname -r一下看看引导内核是否有变动,如有需要可以手动切换一下

更改SSH为只允许通过密钥登录

如果你已经有用于SSH登录的密钥对,请直接跳过ssh-keygen命令

但是有时候在root目录下没有.ssh目录,所以要先运行一下ssh-keygen命令,根据提示输入必要信息后(一个是路径信息,留空即默认路径,即/root/.ssh/;另一个是私钥密码。),系统会在默认目录(或你指定的目录)下生成密钥对文件,如果有密钥对其实我们只需要用mkdir命令在root目录下生成一个.ssh文件夹即可。

ssh-keygen
如果有自己的密钥对使用vi命令将公钥粘贴进去即可,
vi .ssh/authorized_keys
如果没有则使用第一条命令生成的密钥对
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
加600权限保护安全
chmod 600 /root/.ssh/authorized_keys
编辑ssh服务配置文件
vi /etc/ssh/sshd_config

ssh配置文件中,将

PubkeyAuthentication后面的参数改为yes(有时候已经是yes但是开头有“#”注释掉了,去掉“#”使其生效)

PasswordAuthentication后面的参数改为no,以不允许密码登录

最后重启ssh服务(不影响已连接的终端,故不会中断现有连接)

systemctl restart sshd.service

配置防火墙

防火墙的配置在生产环境中必不可少,虽然说现在已经有了入侵检测,硬件防火墙,行为检测,堡垒机等设备,安全不可掉以轻心

首先查看防火墙状态

systemctl status firewalld

如果没有这项服务,说明未安装,执行下一条命令安装防火墙

yum install firewalld

如果显示未启动则首先启动它,不然我们没法配置

systemctl start firewalld.service

以下是一些防火墙的相关指令,根据实际情况配置

【系统级】
防火墙状态
systemctl status firewalld
启动防火墙(将start换成stop可停止,换成restart可重启)
systemctl start firewalld.service
开机启动防火墙
systemctl enable firewalld
关闭开机启动防火墙
systemctl disable firewalld
【应用(防火墙)级】
状态
firewall-cmd --state
查看开放的端口(zone是指分区,不再展开说明)
firewall-cmd --zone=public --list-ports
查看开放的服务(防火墙预制了一些服务类似于http指的80端口)
firewall-cmd --list-services
查看支持的服务(包括上面提到的预制的和用户加入的)
firewall-cmd --get-services
开放服务端口(permanent参数指永久,如不加则为一次性;add-service后面跟服务,匹配上一条命令)
firewall-cmd --permanent --add-service=http
开放端口(add-port后面跟端口的同时要指出是什么协议,如tcp、udp)
firewall-cmd --permanent --add-port=80/tcp
移除开放的端口(将port换成service为服务)
firewall-cmd --permanent --remove-port=80/tcp
重载配置
firewall-cmd --reload

 

开启Google BBR和TCP Fast Open优化TCP连接

需要内核支持,具体详情Google BBR可点我了解,TCP Fast Open详情可点我了解。

首先查看一下有没有开启BBR功能

lsmod | grep bbr

如果有回显则说明已开启,如无回显则执行vi /etc/sysctl.conf编辑该配置文件

在配置文件中加入

# Google BBR
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

# TCP Fast Open
net.ipv4.tcp_fastopen = 3

 

并执行重载命令

sysctl -p

再次执行lsmod | grep bbr如有回显表示已开启

清理

有些强迫症(比如我)可能需要清理一下各种log

清除用户登录记录
echo > /var/log/wtmp
清除尝试登录记录
echo > /var/log/btmp
清除最近登录信息
echo>/var/log/lastlog
清除登录信息
echo > /var/log/secure

清除命令执行记录
history -c

 

 

Morton.L

文章作者

发表回复

textsms
account_circle
email


沫延说

CentOS系统必做的优化项目
前言 操作系统设计初衷为的是可以在多种环境情况下负载任务,优先考虑的肯定是稳定性和兼容性,而对于VPS云主机或者本地服务器,肯定是要对系统进行一些优化的   具体操作 获取系统…
扫描二维码继续阅读
2020-11-24