一名运维工程师在运维岗位上时间久了, 就会发现 Linux 优化的重要性, 同时会给运维工作带来很多的便利性. 本人逐渐认识到了这一点, 所以特意在工作闲暇之余, 通过阅读 Linux 相关书籍及向同事, 同行高手咨询, 针对 Linux https://www.linuxprobe.com/ 系统的一些基本优化做了如下归纳总结, 如有不足之处, 还望大伙补充完善.
本文主要描述一些基本的系统优化知识点, 并未涉及 Linux 深化优化, 关于 Linux 的深化优化知识本人后期会更新.
第一点: Linux 的管理尽量不用 root 用户, 利用 sudo 命令来控制普通用户对系统的管理
新建一个用户, 使用 sudo 命令添加权限, 详细操作步骤如下:
(1) 添加新的用户: useradd 新的用户名
(2) 检查是否已成功添加: id 新的用户名
(3) 设置该用户的密码: echo 123321|passwd --stdin 新的用户名
接下来需将新的用户添加管理员权限, 这个新的用户就相当于管理员
(4) 备份之前的权限文件:\cp /etc/sudoers{,.back}
(5) 将新的用户添加管理员权限:
echo "新的用户名 ALL=(ALL) NOPASSWD: ALL">> /etc/sudoers
(6) 检查是否已成功添加: tail -1 /etc/sudoers
(7) 配置生效: visudo -c
待以上操作完毕, 那么此时的新的用户权限等同于 root 用户.
第二点: 更改默认的远程连接 SSH 服务端口
(1) 修改配置文件 / etc/SSH/sshd_config
Port 22, 改为 Port 52113(范围 0--65535);## 默认端口为 22
ListenAddress 0.0.0.0, 改为 ListenAddress 内网 IP 地址;## 监听内网 ip 地址
PermitRootLogion yes, 改为 PermitRootLogion no;##root 用户远程连接)
(2) 重启生效:/etc/init.d/sshd reload
(3) 查看端口状态: netstat -lntup|grep sshd
第三点: 定时自动更新服务器时间, 使其和互联网时间同步
(1) 配置
- echo '#time sync by 新的用户名 at 2019-04-01'>> /var/spool/cron/root
- echo '/5 /usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1'>> /var/spool/cron/root
- ### 每 5 分钟执行一次同步
- ### 至于以哪个时间服务器为基准, 以下地址可自己选择:
- ntp1.aliyun.com
- ntp2.aliyun.com
- ntp3.aliyun.com
- ntp4.aliyun.com
- ntp5.aliyun.com
- ntp6.aliyun.com
- ntp7.aliyun.com
(2) 查看是否已更新: crontab -l
(3) 最后备份下:\cp /var/spool/cron/root{,.back}
第四点: 配置 yum 配置源
(1) 创建备份文件存放目录
Mkdir -p /etc/yum.repos.d/{default,back}
(2) 备份所有默认的配置文件
\mv /etc/yum.repos.d/repo /etc/yum.repos.d/default
(3) 从阿里云获取 yum 源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
(4) 备份 yum 源
\cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/default
第五点: 关闭 selinux 及 iptables
(1) 关闭 iptables:/etc/init.d/iptables stop
(2) 检查是否已关闭:/etc/init.d/iptables status
(3) 设置开机不自动启动: chkconfig iptables off
(4) 确认配置: chkconfig --list iptables
(5) 关闭 selinux:
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config
(6) 查看并确认配置: cat /etc/selinux/config
备注: 永久生效, 需要重启计算机.(在工作场景中, 如果有外部 IP 一般要打开 iptables)
第六点: 适当调整文件描述符的数量
鉴于进程及文件的打开都会消耗文件描述符, 所以在运维过程中我们要调整下文件描述符的数量, 表示形式为整数数字 (0--65535).
查看默认文件描述符: ulimit -n ### 一般默认为 1024
在 / etc/sercurity/limits.conf 里面配置:
- echo '* - nofile 65535'>>/etc/security/limits.conf
- tail -1 /etc/security/limits.conf
第七点: 定时自动清理邮件目录垃圾文件
防止 inodes 节点被占满.
第八点: 精简并保留必要的开机自启动服务
(1) 只保留重要的基础服务, 其余全部关闭
chkconfig --list|egrep -v "sysstat|crond|sshd|network|rsyslog"|awk '{print"chkconfig "$1,"off"}'|bash
(2) 确认配置: chkconfig --list|grep 3:on
第八点: 优化 Linux 内核参数
(1) 配置文件 / etc/sysctl.conf, 添加如下命令 (可直接复制粘贴)
- cat>>/etc/sysctl.conf<<EOF
- net.ipv4.tcp_fin_timeout = 2
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_syncookies = 1
- net.ipv4.tcp_keepalive_time = 600
- net.ipv4.ip_local_port_range = 4000 65000
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.tcp_max_tw_buckets = 36000
- net.ipv4.route.gc_timeout = 100
- net.ipv4.tcp_syn_retries = 1
- net.ipv4.tcp_synack_retries = 1
- net.core.somaxconn = 16384
- net.core.netdev_max_backlog = 16384
- net.ipv4.tcp_max_orphans = 16384
以下参数是对 iptables 防火墙的优化, 防火墙关闭的情况下会提示, 可以略过提示.
- net.nf_conntrack_max = 25000000
- net.netfilter.nf_conntrack_max = 25000000
- net.netfilter.nf_conntrack_tcp_timeout_established = 180
- net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
- net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
- net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
- EOF
(2) 配置生效命令: sysctl -p
第九点: 配置字符集
(1) 查看配置文件: cat /etc/sysconfig/I18N
里面默认应该有以下 2 行内容:
LANG="en_US.UTF-8" ### 默认提示为英文
(2) 先备份配置文件: cp /etc/sysconfig/I18N{,.back}
(3) 修改配置文件:
说明: 此项可将字符集修改为中文, 也可不做修改.
- echo 'LANG="zn_CN.UTF-8"'> /etc/sysconfig/I18N
- echo 'SYSFONT="latarcyrheb-sun16"'>> /etc/sysconfig/I18N
(4) 配置生效: source /etc/sysconfig/I18N
(5) 确认配置是否成功: echo $LANG
第十点: 锁定关键性系统文件, 防止被篡改
配置命令:
- chattr +i /etc/{
- passwd,shadow,group,gshadow
- }
- lsattr -a /etc/{
- passwd,shadow,group,gshadow
- }
解除锁定命令: chattr -i
第十一点: 禁止系统被 ping
配置命令: echo "net.ipv4.icmp_echo_ignore_all=1">> /etc/sysctl.conf
配置生效命令: sysctl -p
第十二点: 升级漏洞软件
查看相关软件的版本号: rpm -qa openssl openssh bash
执行升级: yum install openssl openssh bash
第十三点: 优化 SSH 远程连接
(1) 先备份配置文件: cp /etc/SSH/sshd_config{,.back}
(2) 编辑 SSH 服务配置文件
编辑 SSH 服务的配置文件 (VIM /etc/SSH/sshd_config), 在第 12 行下面添加如下内容:
- Port 52113 #使用大于 10000 的端口号
- PermitRootLogin no #禁止 root 远程登录
- PermitEmptyPasswords no #禁止空密码登录
- UseDNS no #不使用 dns 解析
- GSSAPIAuthentication no #连接慢的解决配置
(3) 确认配置: grep -A 5 -i 'Start by 新的用户名' /etc/SSH/sshd_config
(4) 重启 SSH 服务:/etc/init.d/sshd restart
(5) 确认配置是否成功: netstat -lntup | grep SSH
以上关于 Linux 系统的基础优化, 由于本人能力及知识点有限, 总结归纳的不够全面, 还请大家多参考 Linux 工具书, 如《Linux 就该这么学》 https://www.linuxprobe.com/ 等及同行高手.
来源: http://www.bubuko.com/infodetail-3036131.html