Linux 系统优化

2019-08-07  本文已影响0人  DB哥

Linux System Environment

[root@optimize ~]#cat /etc/redhat-release                   #==》系统版本
CentOS Linux release 7.5.1804 (Core)
[root@optimize ~]# usname –r                                #==》系统内核
3.10.0-862.el7.x86_64
[root@optimize ~]#uname -m                                  #==》系统位数
x86_64
[root@optimize ~]# echo $LANG                               #==》系统字符集
en_US.UTF-8

Linux基本优化与安全优化说明
标注:以下优化有些不是必要的优化,根据自身企业需求定义

1、系统最小化安装,用不到软件包就不安装
2、权限最小化,不用root登录管理系统,以普通用户身份登录,通过sudo授权管理
3、开启防火墙,设置放行的相关安全端口,其它端口都禁用,甚至可以设置禁止ping
4、关闭SElinux
5、更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至更改SSH服务只监听内网IP
6、设置自动更新服务器时间,使系统时间与互联网时间同步
7、配置yum更新源(建议使用阿里云yum源),yum源包含base源和epel源
8、调整文件描述符的数量、进程及文件的打开都会消耗文件描述符数量
9、Linux系统内核优化参数/etc/sysctl.conf,执行sysctl –p命令使其生效
10、定时自动清除邮件临时目录垃圾文件,防止磁盘的inodes被小文件占满
11、精简并保留必要的开机自启动服务(如crond/sshd/network/rsyslog/ssystat),其它不必要的服务可以停止
12、修改系统字符集为UTF-8
13、锁定相关系统文件,如/etc/passwd /etc/shadow /etc/gshadow /etc/group 等文件
14、清空/etc/issue /etc/issue.net文件内容,去除用户登录之前提示相关的系统信息
15、清除多余的虚拟账号或不使用的账号
16、为系统grub菜单添加密码

一、关闭防火墙
标注:如果服务器对外使用建议开启,本教程只是学习使用所以关闭

[root@optimize ~]# systemctl stop firewalld
[root@optimize ~]# systemctl disable firewalld
[root@optimize ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@optimize ~]# systemctl is-enabled firewalld
disabled
[root@optimize ~]# systemctl is-active firewalld
unknown

二、关闭SElinux
标注:SElinux一般不使用,太过复杂

#==》链接文件不能使用sed命令替换,否则会使链接文件失效
[root@optimize ~]# ls -l /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 17 Apr 23 13:02 /etc/sysconfig/selinux -> ../selinux/config
#==》推荐SElinux修改这个配置文件,可以使用sed命令替换
[root@optimize ~]# ls -l /etc/selinux/config 
-rw-r--r--. 1 root root 546 Aug  6 17:27 /etc/selinux/config    
[root@optimize ~]# sed -i 's@SELINUX=enforcing@SELINUX=disabled@g' /etc/selinux/config
[root@optimize ~]# grep -i "^selinux=" /etc/selinux/config 
SELINUX=disabled
[root@optimize ~]# getenforce
[root@optimize ~]# setenforce 0

三、设定运行级别为 multi-user.target

[root@optimize ~]# vim /etc/inittab 
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
[root@optimize ~]# systemctl get-default
multi-user.target
[root@optimize ~]# ls -l /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Apr 23 13:02 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Apr 23 13:02 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Apr 23 13:02 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Apr 23 13:02 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Apr 23 13:02 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Apr 23 13:02 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Apr 23 13:02 /usr/lib/systemd/system/runlevel6.target -> reboot.target

#==》设置运行级别为multi-user.target
[root@optimize ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

四、设置系统字符集为UTF-8

[root@optimize ~]# vim /etc/locale.conf 
# LANG="zh_CN.UTF-8"                    #==》中文的UTF-8
LANG="en_US.UTF-8"                      #==》英文的UTF-8

五、精简开机自启动服务

#==》NetworkManager是系统图形化介面管理网卡的工具,可以关掉
[root@optimize ~]# systemctl list-unit-files | grep enabled
[root@optimize ~]# systemctl list-unit-files | grep enabled | grep "^NetworkManager" | awk '{print "systemctl","status",$1}'|bash
[root@optimize ~]# systemctl list-unit-files | grep "^NetworkManager"
NetworkManager-dispatcher.service             disabled
NetworkManager-wait-online.service            disabled
NetworkManager.service                       disabled

六、配置优化SSH服务

[root@optimize ~]# vim /etc/ssh/sshd_config
17      #Port 22                        #==》修改默认端口
19      #ListenAddress 0.0.0.0          #==》限制IP地址
38      #PermitRootLogin yes            #==》限制root用户登陆
9       #GSSAPIAuthentication yes       #==》解决SSH远程连接缓慢问题
115     #UseDNS yes                 #==》DNS不解析,解决SSH远程连接速度问题
修改为(本教程只设置以下两项,其它选项可自定义)
GSSAPIAuthentication no
UseDNS no
[root@optimize ~]# systemctl restart sshd

七、Linux系统安全权限最小化原则说明

#==》文件权限644 ,目录权限755
[root@optimize ~]# umask
0022
[root@optimize ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 1066 Aug  7 10:10 /etc/passwd
[root@optimize ~]# ls -ld /etc
drwxr-xr-x. 80 root root 8192 Aug  7 10:14 /etc

八、利用sudo控制用户对系统命令的使用权限

[root@optimize ~]# ls -l /etc/sudoers
-r--r-----. 1 root root 3938 Apr 11  2018 /etc/sudoers
[root@optimize ~]# visudo
91  ## Allow root to run any commands anywhere
92  root    ALL=(ALL)       ALL
93  oldboy  ALL=(ALL)       /usr/sbin/useradd,/usr/sbin/userdel

九、设置Linux服务器时间同步

[root@optimize ~]# yum -y install ntpdate
[root@optimize ~]# crontab -e
#update Linux system date
00 23 * * *  /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>$1
[root@optimize ~]# crontab -l
#update Linux system date
00 23 * * *  /usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>$

十、history历史记录数及用户登录超时环境变量设置

1、临时生效
[root@optimize ~]# export HISTFILESIZE=5        #==》只对/root/.bash_history文件生效
[root@optimize ~]# export HISTSIZE=5            #==》对history命令生效
[root@optimize ~]# export TMOUT=600         #==》用户登录超时,默认单位秒
[root@optimize ~]# exec bash
[root@optimize ~]# cat /root/.bash_history 

2、永久生效
[root@optimize ~]# echo -e "export HISTSIZE=5\nexport HISTFILESIZE=5\n TMOUT=600" >> /etc/profile
[root@optimize ~]# tail -2 /etc/profile
export HISTSIZE=5
export HISTFILESIZE=5
export TMOUT=600
[root@optimize ~]# source /etc/profile

十一、隐藏Linux系统版本信息

#==》用户登录之后提示信息,可以不清除
[root@optimize ~]# ls /etc/motd     
/etc/motd
#==》用户登录之前提示信息,需要清除
[root@optimize ~]# ls /etc/issue{,.net} 
/etc/issue  /etc/issue.net
#==》issue显示系统内核及版本信息
[root@optimize ~]# cat /etc/issue
\S
Kernel \r on an \m
[root@optimize ~]# cat /etc/issue.net 
\S
Kernel \r on an \m
#==》清空文件内容
[root@optimize ~]# >/etc/issue
[root@optimize ~]# >/etc/issue.net

十二、锁定相关文件,防止被提权篡改

[root@optimize ~]# lsattr /etc/{passwd,shadow,group,gshadow}
---------------- /etc/passwd
---------------- /etc/shadow
---------------- /etc/group
---------------- /etc/gshadow
[root@optimize ~]# chattr +i /etc/{passwd,shadow,group,gshadow}
[root@optimize ~]# lsattr /etc/{passwd,shadow,group,gshadow}
----i----------- /etc/passwd
----i----------- /etc/shadow
----i----------- /etc/group
----i----------- /etc/gshadow

十三、清除多余的虚拟账号或无人使用的账号

[root@optimize ~]# cat /etc/passwd
[root@optimize ~]# userdel -r user01

十四、升级具有典型漏洞的软件版本

#==》bash有一个著名的漏洞叫破壳漏洞,bash版本如果是4.3版本以下(包括4.3版本)需升级版本
[root@optimize ~]# rpm -qa openssl openssh bash
openssl-1.0.2k-12.el7.x86_64
bash-4.2.46-30.el7.x86_64
openssh-7.4p1-16.el7.x86_64
[root@optimize ~]# yum -y install openssl openssh bash
[root@optimize ~]# rpm -qa openssl openssh bash
openssl-1.0.2k-16.el7_6.1.x86_64
openssh-7.4p1-16.el7.x86_64
bash-4.2.46-31.el7.x86_64

十五、调整Linux系统文件描述符数量

#==》系统文件描述符默认大小为1024,文件描述符对于高并发的Linux服务器来说,这个默认值是不够的
[root@optimize ~]# ulimit –n    
1024
[root@optimize ~]# echo '*   -   nofile   65535' >> /etc/security/limits.conf 
[root@optimize ~]# tail -1 /etc/security/limits.conf 
*   -   nofile   65535
#==》需要退出用户重新登录即可生效
[root@optimize ~]# ulimit -n
65535

十六、定时清除邮件服务临时目录垃圾文件

#==》Postfix是CentOS 6 和 7版本使用的邮件服务器,主要用于Linux系统收发警告邮件使用,Postfix默认是开启,邮件临时存放的路径/var/spool/postfix/maildrop/
[root@optimize ~]# mkdir -p /server/scripts/
[root@optimize ~]# echo -e "find /var/spool/postfix/maildrop/ -type f | xargs rm -rf" > /server/scripts/postfix_clean.sh
[root@optimize ~]# cat /server/scripts/postfix_clean.sh 
find /var/spool/postfix/maildrop/ -type f | xargs rm -rf
[root@optimize ~]# crontab -e
#clean mail file for postfix
00 01 * * *  /usr/bin/sh /server/scripts/postfix_clean.sh > /dev/null 2>&1
上一篇 下一篇

猜你喜欢

热点阅读