Linux内核优化

生产环境优化

开机启动

chkconfig --list|grep 3:on查看当前开机开启服务
关闭其他开机启动的服务

for i in `chkconfig --list|grep '3:on'|awk '{print $1}'|grep -vE "crond|network|sshd|rsyslog|sysstat"`;do chkconfig $i off;done
#执行完以后再查看一下开机启动的服务
chkconfig --list|grep 3:on


其他开机启动服务原则是:只保留使用的服务,清楚系统上每个服务的角色,最小化系统服务。

防火墙

防火墙个人学习或者企业级高并发高流量服务器一般都不开启,因为开启防火墙会有较大的性能损耗,解决此类问题及在更前端用硬件防火墙进行安全防护
/etc/init.d/iptables stop

远程连接

  • linux系统配置修改后恢复比较麻烦,建议修改配置前备份一份,如果容易忘记,则设置一下命令别名
vim /etc/profile
#在末尾添加一行alias,这样每次vim会自动在vim的目录创建一个备份
alias vim='func() { cp -f  $1 $1-bk; vim $1;}; func'
source /etc/profile
  • 修改配置
    vim /etc/ssh/sshd_config
参数 说明
Port 设置远程连接端口,默认22
PermitEmptyPasswords 远程用户空密码登录,设置为no
PermitRootLogin 是否允许root用户直接登录,设置为no
UseDNS no 是否反向解析ip,设置为no
GSSAPIAuthentication no 解决慢连接

/etc/init.d/sshd reload

权限管理

visudo
在文件的98行给对应普通用户加权限
用户名|机器=(授权角色)|可执行命令
xxx ALL=(ALL) NOPASSWD: ALL 
表示xxx 可通过sudo 执行所以系统命令,并不需要密码提示
最后的ALL表示所有命令,可指定某些命令,用逗号隔开
xxx ALL=(ALL) NOPASSWD: vim,cp,find

关键系统文件上锁

#上锁
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
#解锁
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

升级已知漏洞软件版本

升级到最新

  • openssl
  • openssh
  • bash

内核优化

内核部分根据实际需要优化

参数名 默认值 建议值 说明
tcp_syn_retries 5 1 对外TCP连接请求时,内核尝试发送syn请求的次数,默认5次大概180秒,对内请求是由参数tcp_retries1控制
tcp_synack_retries 5 1 对外TCP的第二步,尝试发送SYN +ACK次数
tcp_keepalive_time 7200 1800 当网络两端建立了TCP连接之后,闲置tcp_keepalive_time时间后,内核会向客户端发送侦测包判断tcp连接情况
tcp_keepalive_probes 9 3 内核会向客户端发送tcp_keepalive_probes次侦测包判断tcp连接情况
tcp_keepalive_intvl 75 15 内核向客户端发送侦测包未获得响应时,隔tcp_keepalive_intvl时间,再发一次侦测
tcp_retries1 3 3 放弃回应一个TCP连接请求前,进行tcp_retries1次重试,最低为3
tcp_retries2 15 5 丢弃已建立的tcp前,进行多少次重试
tcp_orphan_retries 7 3 在近端丢弃TCP前,重试多少次
tcp_fin_timeout 60 2 对于本端断开的socket连接,TCP保持的时间
tcp_max_tw_buckets 180000 36000 系统在同时所处理的最大timewait sockets数目
tcp_tw_recycle 0 1 快速TIME-WAIT sockets回收
tcp_tw_reuse 0 1 表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接
tcp_max_orphans 8192 32768 系统所能处理不属于任何进程的TCP sockets最大数量,超过这个数量﹐那么不属于任何进程的连接会被立即reset,并同时显示警告信息
tcp_syncookies 0 1 只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时象对方发送syncookies。目的是为了防止syn flood攻击
tcp_max_syn_backlog 1024 16384 对于那些依然还未获得客户端确认的连接请求﹐需要保存在队列中最大数目
tcp_reordering 3 6 TCP流中重排序的数据报最大数量
tcp_retrans_collapse 1 0 对于某些有bug的打印机提供针对其bug的兼容性
tcp_wmem:mindefaultmax 4096/16384/131072 8192/131072/16777216 发送缓存设置
tcp_rmem:mindefaultmax 4096/16384/131072 8192/131072/16777216 接收缓存设置
tcp_mem:mindefaultmax 内存计算 786432/1048576/1572864  
ip_local_port_range:minmax 32768/61000 1024/65000 表示用于向外连接的端口范围
netdev_max_backlog 1024 16384 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一点
somaxconn 128 16384 用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制
rmem_max 129024 873200 最大的TCP数据接收缓冲
wmem_max 129024 873200 最大的TCP数据发送缓冲
cat /etc/sysctl.conf 

net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 32768
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 786432 1048576 1572864
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max=65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
vm.swappiness=10

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦