生产环境优化
开机启动
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