centos7系统优化

Posted mr-ding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7系统优化相关的知识,希望对你有一定的参考价值。

优化说明:

 1 一.关闭selinux
 2 二.更改为阿里yum源
 3 三.提权dm用户可以使用sudo
 4 四.优化ssh远程登录配置
 5 五.设置中文字符集
 6 六.设置时间同步
 7 七.历史记录数及登录超时环境变量设置
 8 八.调整linux描述符
 9 九.定时清理邮件服务临时目录垃圾文件
10 十.锁定关键系统文件,防止被提权篡改
11 十一.ssh限制ip登录
12 十二.为grub菜单加密
13 十三.优化开机自启服务
14 十四.内核优化
15 十四.更新系统到最新

一.关闭selinux

 1 #修改配置文件可使配置文件生效,但必须要重启系统,此步骤是sed快速修改方法,也可以通过vim编辑/etc/selinux/config来修改此文件.
 2 sed -i /^SELINUX/s/enforcing/disabled/g /etc/selinux/config
 3 
 4 检查替换结果为disabled就表示成功了.
 5 grep SELINUX=disabled /etc/selinux/config 
 6 SELINUX=disabled
 7 
 8 #临时关闭
 9 setenforce 
10 usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
11 0表示Permissive,即给出警告,但不会阻止操作,相当于disabled.
12 1表示Enforcing,即表示SELinux为开启状态.
13 setenforce 0    #临时将SELinux调为Permissive状态.
14 getenforce    #查看SELinux当前状态.

二.更改为阿里yum源

1 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3 yum makecache

 三.提权dm用户可以使用sudo

 1 备份/etc/sudoers文件
 2 cp /etc/sudoers /etc/sudoers.2018-08-20.bak
 3 
 4 sudo提权配置说明    
 5 用户或组        机器=授权角色        可以执行的命令
 6 user            MACHINA=        COMMANDS
 7 dm            ALL=(ALL)        /usr/sbin/useradd,/usr/sbin/userdel
 8 
 9 useradd dm
10 echo 123456|passwd --stdin dm
11 echo "dm  ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers    #结尾的ALL表示dm可拥有完全的系统管理权限,NOPASSSWD表示提权执行命令时不提示密码;
12 grep dm /etc/sudoers
13 visudo -c &>/dev/null

四.优化ssh远程登录配置

 1 备份/etc/ssh/sshd_conf
 2 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.2018-08-20.bak
3 不允许基于GSSAPI的用户认证 4 sed -i s/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/ /etc/ssh/sshd_config
5 不允许sshd对远程主机名进行反向解析 6 sed -i s/#UseDNS yes/UseDNS no/ /etc/ssh/sshd_config
7 禁止root用户登录 8 sed -i s%#PermitRootLogin yes%PermitRootLogin no% /etc/ssh/sshd_config
9 不允许空密码登录 10 sed -i s%#PermitEmptyPasswords no%PermitEmptyPasswords no% /etc/ssh/sshd_config
11 systemctl restart sshd

五.设置中文字符集

1 localectl set-locale LANG=zh_CN.UTF-8
2 localectl status

六.设置时间同步

 1 检查是否安装ntpdate
 2 rpm -qa|grep ntpdate 
 3 ntpdate-4.2.6p5-28.el7.centos.x86_64
 4 
 5 如果没有安装,则使用yum安装
 6 yum install -y ntpdate
 7 
 8 添加计划任务,每5分钟同步一次时间;
 9 echo #time sync by dm at 2018-8-20 >>/var/spool/cron/root
10 echo */5 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null 2>$1 >>/var/spool/cron/root
11 crontab -l

七.历史记录数及登录超时环境变量设置

 1 设置闲置超时时间为300s
 2 echo export TMOUT=300 >>/etc/profile
 3 
 4 设置历史记录文件的命令数量为100
 5 echo export HISTFILESIZE=100 >>/etc/profile
 6 
 7 设置命令行的历史记录数量
 8 echo export HISTSIZE=100 >>/etc/profile
 9 
10 格式化输出历史记录(以年月日分时秒的格式输出)
11 echo export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S" >>/etc/profile
12 
13 source /etc/profile
14 tail -4 /etc/profile

八.调整linux描述符

 1 文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件.文件描述符与包括相关信息(如文件的打开模式,文件的位置类型,文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文.文件描述符的有效范围是0到OPEN_MAX.
 2 对于内核而言,所有打开的文件都是通过文件的描述符引用的.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符,当读或写一个文件时,使用open或create返回的文件描述符标识该文件,并将其作为参数传递给read或write.

 4 查看系统文件描述符设置的情况可以使用下面的命令,文件描述符大小默认是1024.
 5 ulimit -n
 6 对于高并发的业务Linux服务器来说,这个默认的设置值是不够的,需要调整.

 8 调整方法一:
 9 调整系统文件描述符为65535
10 echo *        -    nofile    65535 >>/etc/security/limits.conf
11 tail -l /etc/security/limits.conf

13 调整方法二:
14 直接把ulimit -SHn 65535命令加入/etc/rc.d/rc.local,用以设置每次开机启动时配置生效,命令如下:
15 echo " ulimit -HSn 65535" >>/etc/rc.d/rc.local
16 echo " ulimit -s 65535" >>/etc/rc.d/rc.local

九.定时清理邮件服务临时目录垃圾文件

1 centos7默认是安装了Postfix邮件服务的,因此邮件临时存放地点的路径为/var/spool/postfix/maildrop,为了防止目录被垃圾文件填满,导致系统额inode数量不够用,需要定期清理.
2 定时清理的方法为:将清理命令写成脚本,然后做成定时任务,每日凌晨0点执行一次.

#创建存放脚本的目录
3 [ -d /server/scripts/shell ] && echo "directory already exists." || mkdir /server/scripts/shell -p

#编写脚本文件
4 echo find /var/spool/postfix/maildrop/ -type f|xargs rm -f >/server/scripts/shell/del_mail_file.sh

#查看 5 cat /server/scripts/shell/del_mail_file.sh

#加入计划任务 6 echo "00 00 * * * /bin/bash /server/scripts/shell/del_mail_file.sh >/dev/null &1" >>/var/spool/cron/root
7 crontab -l

十.锁定关键系统文件,防止被提权篡改

 1 要锁定关键系统文件,必须对账号密码我那件及启动文件加锁,防止被篡改,加锁命令如下:
 2 chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 3 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 4 
 5 上锁后,所有用户都不能对文件进行修改删除.如果需要修改,可以执行下面的命令解锁后,再进行修改.
 6 chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 7 lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
 8 
 9 如果想要更加安全,可以把chattr改名转移,防止被黑客利用.
10 mv /usr/bin/chattr /usr/bin/dm1

十一.ssh限制ip登录

1 #允许192.168.200.0段的IP登录
2 echo "sshd:192.168.200.0/24:allow"    >>/etc/hosts.allow    
3 
4 #禁止所有的其他IP段的IP登录
5 echo "sshd:all:deny"    >>/etc/hosts.allow
6 tail -2 /etc/hosts.allow

十二.为grub菜单加密

1 为grub菜单加密的目的是防止他人修改grub进行内核等启动设置,以及用单用户模式启动进行破解root密码等操作,实际上此步骤可以在安装系统的过程中设定.
2 安装系统后的具体设定步骤如下: 

设置密码: 5 grub2-setpassword 6 7 查看设置的密码: 8 cat /boot/grub2/user.cfg

#在/etc/grub.d/01_users文件中可以看到grub用户名为root,然后通过grub2-setpassword来设置grub的密码,密码设置成功后会生成/boot/grub2/user.cfg文件,可以通过/boot/grub2/user.cfg文件查看设置的密码,查看到的密码为加密的密码。

十三.优化开机自启服务

 

十四.内核优化

 1 Linux服务器内核参数优化,主要是指在Linux系统中针对业务服务应用而进行的系统内核参数调整,优化并无一定的标准.下面是生产环境下Linux常见的内核优化:
2 cat >>/etc/sysctl.conf<<EOF 3 #kernel_flag 4 #关闭ipv6 5 net.ipv6.conf.all.disable_ipv6 = 1 6 net.ipv6.conf.default.disable_ipv6 = 1 7 #决定检查过期多久邻居条目 8 net.ipv4.neigh.default.gc_stale_time=120 9 #使用arp_announce / arp_ignore解决ARP映射问题 10 net.ipv4.conf.default.arp_announce = 2 11 net.ipv4.conf.all.arp_announce=2 12 net.ipv4.conf.lo.arp_announce=2 13 # 避免放大攻击 14 net.ipv4.icmp_echo_ignore_broadcasts = 1 15 # 开启恶意icmp错误消息保护 16 net.ipv4.icmp_ignore_bogus_error_responses = 1 17 #关闭路由转发 18 #net.ipv4.ip_forward = 0 19 #net.ipv4.conf.all.send_redirects = 0 20 #net.ipv4.conf.default.send_redirects = 0 21 #开启反向路径过滤 22 net.ipv4.conf.all.rp_filter = 1 23 net.ipv4.conf.default.rp_filter = 1 24 #处理无源路由的包 25 net.ipv4.conf.all.accept_source_route = 0 26 net.ipv4.conf.default.accept_source_route = 0 27 #关闭sysrq功能 28 kernel.sysrq = 0 29 #core文件名中添加pid作为扩展名 30 kernel.core_uses_pid = 1 31 # 开启SYN洪水攻击保护 32 net.ipv4.tcp_syncookies = 1 33 #定义了系统中每一个端口最大的监听队列的长度,对于一个经常处理新连接的高负载web服务环境来说,默认的128太小了。 34 net.core.somaxconn=1280 35 #修改消息队列长度 36 kernel.msgmnb = 65536 37 kernel.msgmax = 65536 38 #设置最大内存共享段大小bytes 39 kernel.shmmax = 68719476736 40 kernel.shmall = 4294967296 41 #timewait的数量,默认180000 42 net.ipv4.tcp_max_tw_buckets = 6000 43 net.ipv4.tcp_sack = 1 44 net.ipv4.tcp_window_scaling = 1 45 net.ipv4.tcp_rmem = 4096 87380 4194304 46 net.ipv4.tcp_wmem = 4096 16384 4194304 47 net.core.wmem_default = 8388608 48 net.core.rmem_default = 8388608 49 net.core.rmem_max = 16777216 50 net.core.wmem_max = 16777216 51 #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 52 net.core.netdev_max_backlog = 262144 53 #限制仅仅是为了防止简单的DoS 攻击 54 net.ipv4.tcp_max_orphans = 3276800 55 #未收到客户端确认信息的连接请求的最大值 56 net.ipv4.tcp_max_syn_backlog = 262144 57 net.ipv4.tcp_timestamps = 0 58 #内核放弃建立连接之前发送SYNACK 包的数量 59 net.ipv4.tcp_synack_retries = 1 60 #内核放弃建立连接之前发送SYN 包的数量 61 net.ipv4.tcp_syn_retries = 1 62 #启用timewait 快速回收 63 net.ipv4.tcp_tw_recycle = 1 64 #开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接 65 net.ipv4.tcp_tw_reuse = 1 66 net.ipv4.tcp_mem = 94500000 915000000 927000000 67 net.ipv4.tcp_fin_timeout = 1 68 #当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时 69 net.ipv4.tcp_keepalive_time = 30 70 #允许系统打开的端口范围 71 net.ipv4.ip_local_port_range = 1024 65000 72 #修改防火墙表大小,默认65536 73 #net.netfilter.nf_conntrack_max=655350 74 #net.netfilter.nf_conntrack_tcp_timeout_established=1200 75 # 确保无人能修改路由表 76 #net.ipv4.conf.all.accept_redirects = 0 77 #net.ipv4.conf.default.accept_redirects = 0 78 #net.ipv4.conf.all.secure_redirects = 0 79 #net.ipv4.conf.default.secure_redirects = 0 80 EOF 81 /sbin/sysctl -p

十四.更新系统到最新

1 #更新补丁并升级系统版本
2 yum update  -y 
3 
4 #只更新安全补丁,不升级系统版本
5 yum --security check-update        #检查是否有安全补丁
6 yum   update --security        #更新安全补丁

 





















以上是关于centos7系统优化的主要内容,如果未能解决你的问题,请参考以下文章

CentOS7系统优化

基于CentOS7上的nginx系统优化

centos7系统优化

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

如何优化C ++代码的以下片段 - 卷中的零交叉

CentOS7一键安全加固及系统优化脚本