如何优化Linux系统?/ 初始化Linux服务器?
1.不用root,添加普通用户,通过sudo授权管理
2.更改默认的远程连接SSH服务端口(22)及禁止root用户远程连接
3.定时自动更新服务器时间
4.配置国内yum源
5.开启防火墙。关闭selinux及iptables (iptables工作场景如果有外网IP一定要打开,高并发除外)
6.调整文件描述符的数量(一个进程能打开的连接数量)
7.精简开机启动服务 (crond rsyslog network sshd)
8.内核参数优化(/etc/sysctl.conf)
9.更改字符集(localctl),支持中文,但建议还是用英文字符集,防止乱码
10.锁定关键系统文件(chattr +i)
11.清空/etc/issue,去除系统及内核版本登录前的屏幕显示升级Linux内核(centos7 内核版本初始3.10,稳定版5.4)
TCP 内核参数调优
$ vim /etc/sysctl.conf ### 对于本端断开的 Socket 连接,TCP 保持在 FIN-WAIT-2 状态的时间(秒) net.ipv4.tcp_fin_timeout = 7 ### TCP 发送 keepalive 探测消息的间隔时间(秒),用于确认 TCP 连接是否有效 net.ipv4.tcp_keepalive_time = 300 ### 还未获得对端确认的连接请求,可保存在队列中的最大数目 net.ipv4.tcp_max_syn_backlog = 655360 ### 系统同时保持 TIME_WAIT 套接字的最大数量 net.ipv4.tcp_max_tw_buckets = 6000000 ### 表示开启 TCP 连接中 TIME-WAIT Sockets 的快速回收,默认为 0,表示关闭 net.ipv4.tcp_tw_recycle = 1 ### 允许将 TIME-WAIT Sockets 重新用于新的 TCP 连接,默认为 0,表示关闭 net.ipv4.tcp_tw_reuse = 1 ### 最大限度优先,100% 使用物理内存后再考虑使用 Swap vm.swappiness = 0
设置系统打开文件数限制
可解决高并发下 too many open files 问题,通过 ulimit -n 查看,修改完后重新登录系统。
$ vim /etc/security/limits.conf * soft nofile 1000000 * hard nofile 1000000 root soft nofile 1000000 root hard nofile 1000000
安全方面
设置密码策略,强度(8-12位 英文数字 大小写)
限制登录次数
禁止ROOT账户远程登录
设置历史命令条数 (History)
设置账户超时锁定 (TMOUT=600)
设置只有指定用户组才能su切换到root用户(PAM认证 加入wheel组)
对Linux账户进行管理(锁定,删除)
对重要文件进行锁定,即使root也不能删除
服务器使用秘钥登录,禁止密码登录
开启防火墙。关闭selinux
安装fail2ban这种防止SSH暴力攻击的软件
设置只允许公司办公网出口ip能登录服务器(看公司需要),也可以安装VPN等软件,只允许连接VPN到服务器上
只允许有需要的服务器访问外网,其余服务器禁止
做好软件层面防护:
设置nginx-waf模块防止SQL注入、
把web服务使用www用户启动,更改网站目录的所有者与所属组为www