CentOS 7 优化指南
CentOS 7 是一个企业级的 Linux 发行版,广泛用于服务器和开发环境,尽管它本身已经非常稳定和高效,但通过一些优化措施,可以进一步提升其性能和安全性,本文将详细介绍如何对 CentOS 7 进行优化,包括系统配置、网络设置、安全强化等多个方面。
系统配置优化
1. 修改 IP 地址、网关、主机名和 DNS
我们需要配置网络参数以确保系统能够正常连接网络,编辑/etc/sysconfig/networkscripts/ifcfgeth0
文件:
vi /etc/sysconfig/networkscripts/ifcfgeth0
添加或修改以下内容:
DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.1.113 NETMASK=255.255.255.0 ONBOOT=yes GATEWAY=192.168.1.1 DNS1=114.114.114.114 DNS2=8.8.8.8
保存并退出后,重启网络服务:
systemctl restart network
2. 关闭 SELinux
SELinux 提供了额外的安全层,但在某些情况下可能会影响系统性能,可以选择关闭 SELinux:
vi /etc/selinux/config
将SELINUX=enforcing
修改为SELINUX=disabled
,然后重启系统:
reboot
3. 清空 iptables
为了确保防火墙规则不会干扰网络通信,可以清空 iptables 规则:
iptables F iptables X
如果需要持久化这些更改,可以安装iptablesservices
并保存规则:
yum install iptablesservices y service iptables save
系统服务优化
1. 关闭不必要的服务
CentOS 7 默认启动了许多服务,其中很多可能是不必要的,可以通过以下命令停止并禁用这些服务:
systemctl stop firewalld.service systemctl disable firewalld.service systemctl stop postfix.service systemctl disable postfix.service systemctl stop NetworkManager.service systemctl disable NetworkManager.service
2. 调整 SSH 服务端口并禁止 root 用户远程登录
为了提高安全性,建议更改默认的 SSH 端口(22)并禁止 root 用户远程登录,编辑/etc/ssh/sshd_config
文件:
vi /etc/ssh/sshd_config
修改以下内容:
Port 2222 PermitRootLogin no
保存并退出后,重启 SSH 服务:
systemctl restart sshd
3. 定时清理日志文件
日志文件会随着时间的推移占用大量磁盘空间,建议定期清理,可以编写一个简单的脚本来自动清理旧的日志文件:
find /var/log type f name "*.log" mtime +7 exec rm f {} \;
将上述命令添加到cron
任务中,每天执行一次:
crontab e
添加以下行:
0 0 * * * find /var/log type f name "*.log" mtime +7 exec rm f {} \;
内核参数优化
1. 调整文件描述符数量
增加文件描述符的限制可以提高系统的并发处理能力:
echo "fs.filemax = 65536" >> /etc/sysctl.conf sysctl p
2. 优化网络参数
调整 TCP 窗口大小和本地端口范围,以提高网络性能:
echo "net.ipv4.tcp_window_scaling = 1" >> /etc/sysctl.conf echo "net.ipv4.tcp_rmemb_min = 2048" >> /etc/sysctl.conf echo "net.ipv4.ip_local_port_range = 1024 65535" >> /etc/sysctl.conf sysctl p
3. 使用高性能调度器和 I/O 调度器
选择合适的调度器可以提高系统的响应速度,使用deadline
调度器:
echo "deadline" > /sys/block/sda/queue/scheduler
对于 I/O 调度器,可以使用noop
:
echo "noop" > /sys/block/sda/queue/scheduler
安全强化
1. 锁定关键文件系统
为了防止关键系统文件被篡改,可以使用chattr
命令锁定/etc/passwd
和/etc/shadow
文件:
chattr +i /etc/passwd chattr +i /etc/shadow
2. 禁止 Ping
为了避免不必要的 ICMP 请求,可以禁止 Ping:
echo "icmp_echo_ignore_all = 1" >> /etc/sysctl.conf sysctl p
3. 历史记录数及登录超时设置
限制用户的历史命令数量和登录超时时间,以增强安全性:
echo "HISTSIZE=500" >> /etc/profile echo "TMOUT=300" >> /etc/profile source /etc/profile
FAQs
Q1: 如何更改 CentOS 7 的默认 Shell?
A1: 你可以通过修改/etc/passwd
文件中用户的 shell 路径来更改默认 shell,要将用户的默认 shell 更改为bash
,可以运行以下命令:
usermod s /bin/bash username
替换username
为你的实际用户名。
Q2: 如何升级 CentOS 7 的软件包?
A2: 你可以使用yum
命令来升级系统中的软件包,首先更新软件包列表,然后进行升级:
yum update y