zoukankan      html  css  js  c++  java
  • 购买一台阿里云云主机(CentOS)后

    系统的优化
    优化之前,首先查看版本信息

    cat /etc/redhat-release
    CentOS release 6.9 (Final)

    查看内核版本

    uname -a
    Linux iZwz98akt9dh26btcaud2zZ 2.6.32-696.10.1.el6.x86_64 #1 SMP Tue Aug 22 18:51:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

    基础优化与安全重点小结

    • 1 不用root登录管理系统,而以普通用户登录通过sudo授权管理
    • 2 更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改SSH服务只监听内网IP
    • 3 定时自动更新服务器时间,使其和互联网同步
    • 4 配置yum更新源,从国内更新源下载安装软件包
    • 5 关闭SELinux
    • 6 定时自动清理临时目录日志,防止磁盘inodes数被小文件占满
    • 7 调整文件描述符的数量,进程及文件的打开都会消耗文件描述符的数量
    • 8 精简并保留必要的开机启动服务
    • 9 Linux内核参数优化/etc/sysctl.config,执行sysetl –p生效
    • 10 更改系统字符集, 为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。
    • 11 锁定关键文件,如: passwd、/etc/shadow/、/etc/group/、/etc/gshadow、/etc/inittab,处理以上内容后把chattr、lsattr、改名为root,转移走,这样就安全多了。
    • 12 清空/etc/issue /etcissue.net,去除系统及内核版本登录前的屏幕显示
    • 13 禁止主机被ping
    • 14 打补丁并升级有已知漏洞的软件


    1.禁用root用户登陆管理系统
    添加用户设置密码

    useradd user
    passwd user
    #修改配置文件
    vi /etc/ssh/sshd_config
    #找到“PermitRootLogin yes”把注释去掉 保存,然后重启sshd服务

    利用sudo控制用户的使用权限
    为了方便管理,可以给用户授权,过程:
    输入vi sudoers找到98行,在下面放入如下内容:

    user   ALL=(ALL)   NOPASSWD: ALL     <--all表示完全的系统权限,NOPASSWD表示提示权限命令时不需要密码
    #配置完成后要进行检查,命令如下:
    grep root /etc/sudoers
    oldboy    ALL=(ALL)   NOPASSWD: ALL

    此时再以user用户登录系统时,就可以通过执行sudo ls –l /root (sudo后面跟正常命令)的命令以root用户的权限管理系统了,如下:

    ls /root/
    ls: cannot open directory /root/: Permission denied
    sudo ls /root/
    HostKeyDB.txt       test.txt      12345                         install.log         woaini

    2.修改ssh端口

    sed -i 's/#Port 22/Port 2121/' /etc/ssh/sshd_config
    #示例中将22端口改为2121此处记得开放防火墙端口
    /sbin/iptables -I INPUT -p tcp --dport 2121 -j ACCEPT
    /etc/rc.d/init.d/iptables save
    sed -i "/A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT/d" /etc/sysconfig/iptables
    service iptables restart


    3.设置服务器时间同步

    ntpdate time.nist.gov<--时间同步
    ntpdate ntp1.aliyun.com<--国内阿里云时间同步服务器


    利用定时任务crond把上述命令每5分钟自动执行一次,命令如下:

    echo '#time sync by root at 2017-11-03' >>/var/spool/cron/root
    echo '0 2 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
    crontab –l
    #time sync by root at 2017-11-03
    0 2 * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1


    4.配置yum更新源并增加epel源

    mv /etc/yum.repos.d/CentOS-Base.repo{,.$(date +%F_%T).backup} 
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum makecache


    5.关闭selinux

    sed -i 's#SELINUX=enforcing#SELINUX=disabled#' /etc/selinux/config


    6.定时清理日志缓存文件,清理日志脚本delOldLogs.sh:

    vim /data/sh/cleanlog/delOldLogs.sh
    #!/bin/sh
    #删除输入路径下的修改时间在45天以前的日志文件
    find $1 -mtime +45 -name "*log*" -exec rm -f {} ;

    指定清理哪些路径的日志的脚本

    del_all_OldLogs.sh:
    vim /data/sh/cleanlog/del_all_OldLogs.sh
    #!/bin/bash
    /data/sh/cleanlog/delOldLogs.sh “/home/usr/ewp/logs”
    /data/sh/cleanlog/delOldLogs.sh “/home/usr/h5/logs”
    /data/sh/cleanlog/delOldLogs.sh “/home/usr/Payment/logs”


    给脚本添加执行权限:

    chmod a+x /data/sh/cleanlog/del*.sh


    添加定时任务:

    vim /var/spool/cron/root
    
    #添加以下内容:
    
    10 0 * * 6 /data/sh/cleanlog/del_all_OldLogs.sh

    注:
    1.为了防止出现权限不够的情况,因此这里设置了一个root用户的定时任务
    2.这句代码的意思是:在每周6的0:10执行/data/sh/cleanlog/del_all_OldLogs.sh 这个脚本
    查看定时任务:

    crontab -l

    7.加大文件描述

    cp /etc/security/limits.conf{,.$(date +%F_%T).backup}
    echo '*               -    nofile            65535' >> /etc/security/limits.conf
    tail -1 /etc/security/limits.conf 
    # 重启生效
    ulimit -n

    8.精简并保留必要的软件启动(如cron、network、sshd、rsyslog、sysstat)

    chkconfig --list|egrep -v  "crond|ssh|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash
    chkconfig --list|grep "3:on"

    9.内核优化

    cp /etc/sysctl.conf{,.$(date +%F_%T).backup}
    cat >>/etc/sysctl.conf<<EOF
    net.ipv4.tcp_fin_timeout = 2
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.ip_local_port_range = 4000    65000
    net.ipv4.tcp_max_syn_backlog = 16384
    net.ipv4.tcp_max_tw_buckets = 36000
    net.ipv4.route.gc_timeout = 100
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_synack_retries = 1
    net.core.somaxconn = 16384
    net.core.netdev_max_backlog = 16384
    net.ipv4.tcp_max_orphans =16384
    # 以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理
    net.nf_conntrack_max = 25000000
    net.netfilter.nf_conntrack_max = 25000000
    net.netfilter.nf_conntrack_tcp_timeout_established = 180
    net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_close-wait = 60
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    EOF
    # 让内核配置文件中的参数生效
    sysctl -p  

    10.更改系统字符集, 为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。

    vim ~/.bash_profile
    #添加
    LANG="zh_CN.UTF-8"
    export LANG

    11.锁定关键文件,如: passwd、/etc/shadow/、/etc/group/、/etc/gshadow、/etc/inittab,处理以上内容后把chattr、lsattr、改名为root,转移走,这样就安全多了。

    chattr +a /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
    mv /usr/bin/chattr ~/.pki/root
    mv /usr/bin/lsattr ~/.pki/toor

    12.清空/etc/issue /etcissue.net,去除系统及内核版本登录前的屏幕显示

    echo > /etc/issue 
    echo > /etc/issue.net

    13.禁止Linux系统被ping

    # 禁止ping
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    # 允许ping
    # echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • 相关阅读:
    懒加载 和 json
    [iOS]用instancetype代替id作返回类型有什么好处?
    (转)Objective-C语法之KVC使用
    UITableView 展示数据
    shopee
    防火墙
    vue项目开发技巧
    文件流
    vant
    node 使用
  • 原文地址:https://www.cnblogs.com/linuxde/p/8719662.html
Copyright © 2011-2022 走看看