当前位置:首页 > 建站学院 > 服务器 >  centos7系统优化

centos7系统优化

服务器   发布日期:2025年05月14日   浏览次数:270

优化说明:

  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. 检查替换结果为disabled就表示成功了.
  4. grep SELINUX=disabled /etc/selinux/config
  5. SELINUX=disabled
  6. #临时关闭
  7. setenforce
  8. usage: setenforce [ Enforcing | Permissive | | ]
  9. 0表示Permissive,即给出警告,但不会阻止操作,相当于disabled.
  10. 1表示Enforcing,即表示SELinux为开启状态.
  11. setenforce #临时将SELinux调为Permissive状态.
  12. 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.--.bak
  3. sudo提权配置说明
  4. 用户或组 机器=授权角色 可以执行的命令
  5. user MACHINA= COMMANDS
  6. dm ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel
  7. useradd dm
  8. echo |passwd --stdin dm
  9. echo "dm ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers #结尾的ALL表示dm可拥有完全的系统管理权限,NOPASSSWD表示提权执行命令时不提示密码;
  10. grep dm /etc/sudoers
  11. visudo -c &>/dev/null

四.优化ssh远程登录配置

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

五.设置中文字符集

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

六.设置时间同步

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

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

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

八.调整linux描述符

  1. 文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件.文件描述符与包括相关信息(如文件的打开模式,文件的位置类型,文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文.文件描述符的有效范围是0OPEN_MAX.
  2. 对于内核而言,所有打开的文件都是通过文件的描述符引用的.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符,当读或写一个文件时,使用opencreate返回的文件描述符标识该文件,并将其作为参数传递给readwrite.
  3. 查看系统文件描述符设置的情况可以使用下面的命令,文件描述符大小默认是1024.
  4. ulimit -n
  5. 对于高并发的业务Linux服务器来说,这个默认的设置值是不够的,需要调整.
  6. 调整方法一:
  7. 调整系统文件描述符为65535
  8. echo '* - nofile 65535' >>/etc/security/limits.conf
  9. tail -l /etc/security/limits.conf
  10. 调整方法二:
  11. 直接把ulimit -SHn 65535命令加入/etc/rc.d/rc.local,用以设置每次开机启动时配置生效,命令如下:
  12. echo " ulimit -HSn 65535" >>/etc/rc.d/rc.local
  13. 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
    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. chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
  6. lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
  7. 如果想要更加安全,可以把chattr改名转移,防止被黑客利用.
  8. mv /usr/bin/chattr /usr/bin/dm1

十一.ssh限制ip登录

  1. 方法一:
  2. 只允许指定用户进行登录(白名单):
  3. /etc/ssh/sshd_config 配置文件中设置 AllowUsers 选项,(配置完成需要重启 SSHD 服务)格式如下:
  4. AllowUsers root@192.168.1.1
  5. # 允许 IP 192.168.1.1 登录root 通过帐户登录系统。
  6. 只拒绝指定用户进行登录(黑名单):
  7. 在/etc/ssh/sshd_config配置文件中设置DenyUsers选项,(配置完成需要重启SSHD服务)格式如下:
  8. DenyUsers root@192.168.1.10 #Linux系统账户
  9. # 拒绝 IP 192.168.1.10 登录root 通过帐户登录系统。
  10. 方法二:
  11. #允许192.168.200.0段的IP登录
  12. echo "sshd:192.168.200.0/24:allow" >>/etc/hosts.allow
  13. #禁止所有的其他IP段的IP登录
  14. echo "sshd:all:deny" >>/etc/hosts.deny
  15. hosts.allow hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,按照此方法设置后服务器只允许 192.168.200.0/24这个段的 IP 地址的 ssh 登录,其它的 IP 都会拒绝。
  16. 方法三:
  17. 允许192.168.100.10登录ssh
  18. firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.100.10 service name=ssh accept'
  19. 拒绝192.168.200./24登录ssh
  20. firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.200.0/24 service name=ssh reject'
  21. firewall-cmd --reload

 

十二.为grub菜单加密

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

    设置密码:
  3. grub2-setpassword
  4. 查看设置的密码:
  5. 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 =
  6. net.ipv6.conf.default.disable_ipv6 =
  7. # 避免放大攻击
  8. net.ipv4.icmp_echo_ignore_broadcasts =
  9. # 开启恶意icmp错误消息保护
  10. net.ipv4.icmp_ignore_bogus_error_responses =
  11. #关闭路由转发
  12. #net.ipv4.ip_forward =
  13. #net.ipv4.conf.all.send_redirects =
  14. #net.ipv4.conf.default.send_redirects =
  15. #开启反向路径过滤
  16. net.ipv4.conf.all.rp_filter =
  17. net.ipv4.conf.default.rp_filter =
  18. #处理无源路由的包
  19. net.ipv4.conf.all.accept_source_route =
  20. net.ipv4.conf.default.accept_source_route =
  21. #关闭sysrq功能
  22. kernel.sysrq =
  23. #core文件名中添加pid作为扩展名
  24. kernel.core_uses_pid =
  25. # 开启SYN洪水攻击保护
  26. net.ipv4.tcp_syncookies =
  27. #修改消息队列长度
  28. kernel.msgmnb =
  29. kernel.msgmax =
  30. #设置最大内存共享段大小bytes
  31. kernel.shmmax =
  32. kernel.shmall =
  33. #timewait的数量,默认180000
  34. net.ipv4.tcp_max_tw_buckets =
  35. net.ipv4.tcp_sack =
  36. net.ipv4.tcp_window_scaling =
  37. net.ipv4.tcp_rmem =
  38. net.ipv4.tcp_wmem =
  39. net.core.wmem_default =
  40. net.core.rmem_default =
  41. net.core.rmem_max =
  42. net.core.wmem_max =
  43. #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
  44. net.core.netdev_max_backlog =
  45. #限制仅仅是为了防止简单的DoS 攻击
  46. net.ipv4.tcp_max_orphans =
  47. #未收到客户端确认信息的连接请求的最大值
  48. net.ipv4.tcp_max_syn_backlog =
  49. net.ipv4.tcp_timestamps =
  50. #内核放弃建立连接之前发送SYNACK 包的数量
  51. net.ipv4.tcp_synack_retries =
  52. #内核放弃建立连接之前发送SYN 包的数量
  53. net.ipv4.tcp_syn_retries =
  54. #启用timewait 快速回收
  55. net.ipv4.tcp_tw_recycle =
  56. #开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接
  57. net.ipv4.tcp_tw_reuse =
  58. net.ipv4.tcp_mem =
  59. net.ipv4.tcp_fin_timeout =
  60. #当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
  61. net.ipv4.tcp_keepalive_time =
  62. #允许系统打开的端口范围
  63. net.ipv4.ip_local_port_range =
  64. #修改防火墙表大小,默认65536
  65. #net.netfilter.nf_conntrack_max=
  66. #net.netfilter.nf_conntrack_tcp_timeout_established=
  67. # 确保无人能修改路由表
  68. #net.ipv4.conf.all.accept_redirects =
  69. #net.ipv4.conf.default.accept_redirects =
  70. #net.ipv4.conf.all.secure_redirects =
  71. #net.ipv4.conf.default.secure_redirects =
  72. EOF
  73. /sbin/sysctl -p

十四.更新系统到最新

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

 

以上就是centos7系统优化的详细内容,更多关于centos7系统优化的资料请关注九品源码其它相关文章!