一、系统的安装
1.系统的安装一般采用最小化安装,除非一些特殊需求需要安装图形界面。
2.系统安装之前首先要做好磁盘、分区的规划,需要根据实际需求制定相应的磁盘分区方案。例如:数据库及存储服务器可以单独使用一块磁盘分区之后挂载到指定挂载点。如果使用了LVM对磁盘进行管理,那么可以新建一个VG,这块磁盘的分区创建PV之后加入到该VG来分配使用。这样就与系统的分区独立开了,提高了数据的安全性。
3.对于swap分区,一般设置为物理内存的1.5-2倍。若物理内存大于16GB,可以配置为8-16GB。对于swap空间的扩展,我使用过的有2种方式,之前的文章有介绍。
4.对于boot分区,一般200MB-300MB就行。系统默认为500MB,可以适当减少,我一般设置为300MB。
5.时区、语言、字符集、键盘布局选择正确,主机名、网络配置按实际情况进行设置。
二、系统的调优及安全设置
1.养成能不用root则不用root的良好习惯。每次安装软件、部署应用之前,先做好管理账户、目录的规划。最好是装完系统就新增一个标准用户,visudo给这个账户配置sudo权限,只有这个账户具有root权限。在这一点上必须得赞一下Ubuntu,安装完成之后你是不能直接root用户登录的。
2.启用密码策略。
3.禁止通过telnet等不安全的登录方式。目前的系统默认一般不自带telnet,如果装了telnet那就卸载了。
4.使用ssh2协议,禁止root用户通过ssh登录。设置某些账号可以su到root,大部分标准用户禁止切换到root。
5.设置不活动用户登录超时自动退出登录并断开ssh连接。例如:TMOUT=300
6.设置HISTORYFILESIZE和HISTSIZE。
7.调整文件描述符。文件描述符是有无符号的整数表示的句柄,进程使用它来标识打开的文件,文件描述符包括相关信息的文件对象关联,这些信息被称为文件的上下文文件描述符的有效范围是0到OPEN_MAX。文件描述符的默认大小是1024,可以使用命令ulimit -n进行查看。使用ulimit -n 2048可以临时性的进行设置,退出登录之后失效。可以编辑/etc/security/limits.conf使其永久生效, 在被注释了的内容中,我们基本能够看到每一个配置项的详细说明,按照说明进行配置即可。在这个配置文件最后一行新增:* - nofile 2048,重新登录或重启之后生效。如果并发不大可以不用修改此项。
8.关闭SELinux。将/etc/selinux/config中的SELINUX=enforcing改为:SELINUX=disabled,保存之后重启系统即可生效。
9.如果使用了硬件防火墙及其他相关的网络安全措施,可以将系统自带的防火墙卸载。CentOS6自带的防火墙是iptables,CentOS7自带的防火墙是firewalld,并且从CentOS7.4起,防火墙开机自动启动,这需要特别注意。如果是直接暴露在外网的服务器,那么强烈建议开启防火墙。需要注意的是,iptables和firewalld不能同时存在,只能选择其一,建议使用动态防火墙firewalld。
9.如果确定使用ntp连网来获取时间,CentOS7.X自带了chrony,并且为开机启动,可用通过修改/etc/chrony.conf配置文件来设置同步时间源。一般公司都具有内部NTP服务器,统一指向这些NTP服务器即可。当然,也可以使用连网NTP服务器,例如阿里云的,或者其他稳定、可靠的NTP时间服务器。也可以通过交互式命令chronyc来设置ntp服务。需要注意的是:如果填写了ntp服务器的域名,则需要配置能够正常解析的dns服务器,NTP处于的层级(stratum )也非常重要。其他时间、日期、NTP设定可以使用timedatectl。如果有其他时间同步管理方案,请卸载chronyd。
10.锁定关键系统文件,防止被提权篡改。使用chattr命令来进行操作,需要锁定的文件如:/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow等。
10.清除多余的系统虚拟账号。如:games、lp、ftp等。
11.给grub菜单加密。
12.一些服务器可以设置禁ping。但这也不是最佳方案,因为有时候我们也需要通过ping来检查网络情况。
13.配置内部yum源或者国内yum源。
14.优化Linux内核参数。此部分内容较多,操作也需要十分谨慎,后期会专门针对这一部分进行深入探索。
15.禁止显示内核版本及系统版本信息。此部分本人认为不必太重视,因为在CentOS7中,/etc/redhat-release及/proc/version都会涉及到相关内容的显示,没必要纠结这一项。
三、结语
1.在本文中提到的内容在之前的文章中大多数均有涉及,只是没有综合整理而已。
2.文章的第一部分可以概括为系统的安装注意事项,第二部分基本可以概括为系统的安全设置与优化,这一部分我没有对这些内容按照安全部分与系统优化部分进行区分。
3.有些项未必适合自己的情况,需要根据实际情况进行改进、设计。
4.本文仅仅提及思路,并未进行详细的内容讨论及落地。在后续的文章中会进一步将本文的内容进行落地。
5.本文内容均为本人在实际工作中的一些经验,不妥之处希望诸位多多指教,欢迎多多交流,一起进步。
四、本文扩展成为公司内部资料--《XX公司Linux系统运维操作流程》
4.1安装流程
4.1.1 系统如无特殊要求一律采用小化安装方式进行安装。
4.1.2 安装过程开始之前需要根据实际情况进行CPU数量、磁盘容量、内存分配、文件系统、目录结构、磁盘分区规划、磁盘管理方案进行分析与设计,并按照方案进行系统的安装。
4.1.3 安装过程中,需要按照实际情况设置恰当的主机名、语言、字符集、键盘布局、网络参数。
4.2系统安全设置及优化设置
4.2.1 创建标准账号,授予sudo权限,指定特定账户可以su到root账户。禁止root用户通过ssh远程登录,使用安全性较高的ssh2协议进行登录,卸载telnet(如果已安装)。
4.2.2 启用密码策略。
4.2.3 在应用部署之前需要按要求建好管理账户,做好应用目录的规划与权限设计,使用指定用户启动指定应用。
4.2.4 设置不活动用户登录超时自动退出登录并断开ssh连接。例如:TMOUT=300
4.2.5 设置HISTORYFILESIZE和HISTSIZE。
4.2.6 调整文件描述符。
4.2.7 关闭SELinux。
4.2.8 使用或禁用防火墙。
4.2.9 设置NTP时间同步。
4.2.10 锁定关键系统文件,防止被提权篡改。
4.2.11 清除多余的系统虚拟账号。如:games、lp、ftp等。
4.2.12 给grub菜单加密(可选)。
4.2.13 一些服务器可以设置禁ping(可选)。
4.2.14 配置内部yum源或者国内yum源。
4.2.15 优化Linux内核参数(谨慎操作)。
4.2.16 禁止显示内核版本及系统版本信息(可选)。
针对每一项内容进行细化即可。