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