• Linux 基础优化


    1、操作的最小化原则

    1)安装系统最小化

    一般情况下安装OS时,软件安装包组(Package Group)的选择:
    base--------------------------基本环境
    editors-----------------------编辑器
    development librarys------开发库
    development tools---------开发工具
    x software development--图形界面开发软件
    system tools----------------系统工具

    2)开启程序服务最小化原则

    for i in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $i off;done
    for i in crond network syslog sshd;do chkconfig --level 3 $i on;done
    只留:crond network syslog sshd;
    3)登陆最小化原则;平时没有需求不用root登陆,要用普通登陆。
    useradd  tom ; echo 123456 | passwd --stdin tom

    2 、更改ssh服务默认端口及常规配置

    vim /etc/ssh/sshd_config         
    
     #ListenAddress 0.0.0.0                 #监听ip
    Port    52113                   #ssh连接默认的端口
    PermitRootLogin    no                   #禁止root远程登陆。
    PermitEmptyPasswords    no              #禁止空密码登陆
    UseDNS    no                            #不使用DNS
    GSSAPIAuthentication no                 #连接慢时改为no

    3、 Sudo的应用

    让普通用户可以拥有指定root权限功能

    1) 通过visudo配置sudo

     

    注:当给普通用户全部root权限时,可通sudo  su – 命令由当前普通用户切换到root用户环境变量中,而无需知道root的密码,只要知道当前用户密码即可切换成功。

    2) 通过配置文件配置sudo

     

    3) 配置文件的基本解释

    通过visudo直接编辑,配置后可自动检查语法功能;
    
    1)授权(授权组可用%开头)
    Wang         ALL=(ALL)             ALL
    用户     机器=(授权哪个角色的权限)  授权的命令
    %用户组  机器=(授权哪个角色的权限)   授权的命令
     
    别名的意义

    用户或组

    主机(机器)

    授权角色权限

    命令

    Root

    ALL

    (ALL)

    ALL

    User_Alias  Uers=wang, %mikem

    Host_Alias  

    Hostname=lc1,lc2

    Runas_Alias

    OP=root

    Cmnd_Alias

    CMd=/sbin..

    4) 普通用户可通过sudo –l命令查看本身具有sudo的哪些权限

     

    提示:

    用户通过sudo提权时有时要输入的密码,有时不输入,其原因可在配置文件里配置密码超时时间;当通过sudo命令提权时,会先检查/var/db/sudo/目录下是否有相应用户的密码时间戳,如果没超时就直接通过,否则输入自己的密码才能执行。

    5)Sudo配置注意事项

    a)          命令别名下的成员必须是文件或目录的绝对路径
    b)          别名名称是包含大写字母,数字,下划线,如果是字母都要大写
    c)          一个别名下有多个成员,成员与成员之间,通过半角“,”号分隔;成员必须是有效实际存在的。
    d)          别名成员受别名类型Host_Alias,User_Alias,Runas_Alias,Cmnd_Alias制约,定义什么类型的别名,就要有什么类型的成员相配。
    e)          别名规则是每行算一个规则,如果一个别名规则一行容不下时,可以通过“”来续行;
    f)          指定切换的用户要用()括号括起来,如果省略括号,则默认为root用户;如果括号里是ALL,则代表能切换到所有用户
    g)          如果不需要密码直接运行命令的,应该加NOPASSWD:参数。
    h)          禁止某类程序或命令执行,要在命令动作前面加上“!”号,并且放在允许执行命令的后面。
    i)          用户组前面必须加%号。

    4、linux系统登录用户的超时时间

    echo "expert  TMOUT=10"    >>/etc/profile    超时时间
    echo "export HISTSIZE=5"  >>/etc/profile     历史命令数量
    history –c 清空历史记录
    history –d 4 清空指定的记录

    5、系统字符集调整支持显示中文

     

     建议更改字符集 (建议)

     

    注:Source表示重新加载配置文件使其生效

    6  服务器时间同步及更改

    1)    通过date –s命令更改时间并通过hwclock命令将更改的时间更新的bash里

    date -s "2014/10/15"hwclock
    date +%F %T

    2)    通过ntpdate更新服务器时间

    # ntpdate time.nist.gov

    3)    Ntp-sever服务器搭建

    安装ntp-server(系统默认安装),也可通过yum安装。

    rpm -qa ntp

    编辑ntpd.conf配置文件

    restrict 0.0.0.0 mask 0.0.0.0  nomodify notrap noquery  #拒绝所有
    restrict 192.168.166.0 mask 255.255.255.0 nomodify      #只允许该网段更新时间
    restrict 127.0.0.1                                      #本可有所有操作
    server 210.72.145.44 prefer                             #perfer参数是优先到远端Ntpserver更新时间
    server  127.127.1.0   fudge                             #如果远端服务器不能同步时间,则由本地时间提供给客户端
    127.127.1.0 stratum 8
    driftfile /var/lib/ntp/drift
    keys /etc/ntp/keys
    
    1)说明:关于权限设定部分 
    权限的设定主要以 restrict 这个参数来设定,主要的语法为 
    restrict IP地址 mask 子网掩码 参数
    注:其中 IP 可以是IP地址,也可以是 defaultdefault 就是指所有的IP。
    
    2)参数有以下几个:
    ignore :关闭所有的 NTP 联机服务 
    nomodify:客户端不能更改服务端的时间参数,但是客户端可以通过服务端进行网络校时。
    notrust :客户端除非通过认证,否则该客户端来源将被视为不信任子网 
    noquery :不提供客户端的时间查询 
    注意:如果参数没有设定,那就表示该 IP (或子网)没有任何限制!     

    4)    通过cron任务计划定时更新服务器时间

    echo “#time update by server” >>/var/spool/cron/root
    echo “*/5 * * * * /usr/sbin/ntpdate time.nist.gov” >>/var/spool/cron/root

    7、加大服务器文件描述符

     通过编辑ulimit配置文件使文件描述符增加永久生效

    #vim /etc/syscurity/limits.conf
    #ulimit -n
    #ulimit –a           查看所有限制,以及设定参数
    # man limits.conf

     

     

    注:调整的数字不是越大越好,一句话够用就行,logout  (或Ctrl+D)    退出登录(Ctrl+D   = logout)生效

    8、调整内核参数文件/etc/sysctl.conf

    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.tcp_keepalive_probes = 3
    net.ipv4.tcp_keepalive_intvl =15
    net.ipv4.tcp_retries2 = 5
    net.ipv4.tcp_fin_timeout = 2
    net.ipv4.tcp_max_tw_buckets = 36000
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_max_orphans = 32768
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 16384
    net.ipv4.tcp_wmem = 8192 131072 16777216
    net.ipv4.tcp_rmem = 32768 131072 16777216
    net.ipv4.tcp_mem = 786432 1048576 1572864
    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.ip_conntrack_max = 65536
    net.ipv4.netfilter.ip_conntrack_max=65536
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
    net.core.somaxconn = 16384
    net.core.netdev_max_backlog = 16384
    
    # sysctl –p                           ;通过命令使其生效
    

    #vim /etc/sysctl.conf               ; 进入文件后在最后行中添加

    9 、锁定关键系统文件

    通过chattr +i 进行加锁

    # chattr  +i  /etc/passwd  /etc/shadow  /etc/group  /etc/gshadow  /etc/inittab

    10、 lvs/haproxy负载均衡代理内核参数配置

    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.ipv4.ip_conntrack_max = 25000000
    net.ipv4.netfilter.ip_conntrack_max=25000000

    11、 nginx/apache生产内核参数优化案例

    net.ipv4.tcp_max_syn_backlog = 65536
    net.core.netdev_max_backlog = 32768
    net.core.somaxconn = 32768
    
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    
    net.ipv4.tcp_mem = 94500000 915

    12、CDN公司cache服务器内核/etc/sysctl.conf优化案例

    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.tcp_max_tw_buckets = 1800000
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_retries1 = 22
    net.ipv4.tcp_syncookies = 1
    net.ipv4.tcp_max_syn_backlog = 8192
    net.ipv4.tcp_fin_timeout = 10
    net.ipv4.tcp_synack_retries = 3

    13、  删除登录信息

    (不显示内核版本,主机名,发行版本号及一些后台进程的版本号),防止探测。
    cat /dev/null >/etc/issue       本地登录显示linux的版本号
    cat /dev/null >/etc/issue.net    网络登录显示linux的版本号
    cat /dev/null >/etc/motd        登录描述
    #包括应用层 比如隐藏apache ,php等的版本。

    14、设置/etc/hosts.deny、/etc/hosts.allow

    可以控制外部IP对本机服务的访问
    etc/hosts.allow 的设定优先于 /etc/hosts.deny
    
    清除多余的系统虚拟账号(非必须)
    1.关闭/etc/passwd中不必要的用户(可选优化项)
    2.关闭/etc/group中不必要的用户组(可选优化项)

    15、 Linux基础优化小结:

    1)不用root,添加普通用户,通过sudo授权管理
    2)更改默认的远程连接SSH服务端口及禁止root用户远程连接
    3)定时自动更新服务器时间
    4)配置yum更新源,从国内更新源下载安装rpm包
    5)关闭selinux及iptables(暂时关闭,后面学到要开启并优化)
    6)调整文件描述符数量,进程及文件的打开都会消耗文件描述符
    7)定时自动清理/var/spool/clientmquene/目录垃圾文件,防止inodes节点被占满。
    8)精简开机自启动服务
    9)Linux内核参数优化
    10)更改字符集,支持中文,但建议还是用英文字符集,防止乱码问题。
    11)锁定关键系统文件
    12)清空/etc/issue ,去除或更改系统及内核版本登陆前的屏幕显示

    16、linux内核崩溃修复

    1)重新安装系统,选择硬盘,不分区
    2)选择旧分区的/boot,/分区,swap,并重新挂载和格式化
    3)安装好系统后,重新挂载data分区
    
    这样不会丢数据。

     17、centos7优化

    1、关闭selinux
    sed -i 's#SELINUX=.*#SELINUX=disabled#g' /etc/selinux/config
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
    grep SELINUX=disabled /etc/selinux/config
    setenforce 0
    getenforce
    
    2、关闭firewalld防火墙服务
    systemctl stop firewalld
    systemctl disable firewalld
    
    3、设置普通用户提权操作(可选优化)
    useradd test
    echo 123456|passwd --stdin test
    cp /etc/sudoers{,.ori}
    echo "test  ALL=(ALL) NOPASSWD: ALL " >> /etc/sudoers
    tail -1 /etc/sudoers
    visudo -c
    
    4.设置系统中文UTF8字符集
    cat /etc/locale.conf
    LANG="en_US.UTF-8"
    
    cp /etc/locale.conf{,.ori}
    echo 'LANG="zh_CN.UTF-8"' > /etc/locale.conf 
    source /etc/locale.conf
    echo$LANG
    
    localectlset-locale LANG="zh_CN.UTF-8"
    cat/etc/locale.conf
    
    5、时间同步设置
    /usr/sbin/ntpdate  ntp.aliyun.com
    
    echo '#time sync ' >> /var/spool/cron/root
    echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null2>&1" >> /var/spool/cron/root
    crontab -l
    
    6、提升命令行操作安全性(可选优化)
    echo 'export TMOUT=300' >> /etc/profile
    echo 'export HISTSIZE=5' >> /etc/profile
    echo 'export HISTFILESIZE=5' >> /etc/profile
    tail  /etc/profile
    . /etc/profile
    
    7、加大文件描述符
    echo'*    -    nofile    65535 ' >>/etc/security/limits.conf
    tail -1 /etc/security/limits.conf
    
    ulimit -SHn   65535
    ulimit -8、优化系统内核
    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
    
    9、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
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.wmem_max = 16777216
    net.core.rmem_max = 16777216
    
    10、安装系统常用软件
    CentOS6和CentOS7
    yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y
    
    CentOS7
    yum install psmisc net-tools bash-completion vim-enhanced -y
    
    
    11、优化SSH远程连接效率
    cp /etc/ssh/sshd_config{,.ori}
    sed -rn '/#Port/s/#(.*)22/112345/p' /etc/ssh/sshd_config.
    sed -rn '/ListenAddress/s/#(.* )0.*/1192.168.1.2/p' /etc/ssh/sshd_config
    sed -rn '/#PermitRootLogin/s/#(.*)yes/1no/p'      /etc/ssh/sshd_config
    sed -n '/PermitEmptyPasswords/s/^#//p'  /etc/ssh/sshd_config
    sed -rn '/#UseDNS/s/#(.*)yes/1no/p'      /etc/ssh/sshd_config
    sed -n '/GSSAPIAuthentication/s#yes#no#p' /etc/ssh/sshd_config
    
    12、保留yum安装的软件包(可选优化)
    sed -n '/keepcache/s#0#1#p' /etc/yum.conf 
    
    13、 锁定关键系统文件
    /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab
    chattr +i /etc/passwd /etc/shadow /etc/group
    chattr +i /etc/inittab /etc/fstab /etc/sudoers
    lsattr /etc/passwd /etc/shadow /etc/group /etc/inittab /etc/fstab /etc/sudoers
    mv /usr/bin/chattr /opt/root
    cp /usr/bin/xargs /usr/bin/chattr
    
    14、去除登录前的系统及内核版本显示。
    > /etc/issue.net
    > /etc/issue
    
    15、清除多余的系统虚拟用户账号。
    userdel -r adm
    userdel -r lp
    userdel -r games
    userdel -r ftp
    groupdel adm
    groupdel lp
    groupdel games
    groupdel video
    groupdel ftp
    
    16、grub引导菜单加密码
    grub2-setpassword
    cat /boot/grub2/user.cfg
    
    17、禁止主机被ping
    echo "net.ipv4.icmp_echo_ignore_all=1" >>  /etc/sysctl.conf
    sysctl -p
    
    18、打补丁
    yum update
    
    19、精简开机自启动服务
    systemctl list-unit-files | grep enable | egrep -v "sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service" | awk '{print "systemctl disable",$1}' | bash 
    systemctl list-unit-files | grep enable
    
    #保留服务:
    sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance
    
    20、企业生产最小化原则:
    1)安装软件包最小化。
    2)用户权限最小化。
    3)目录文件权限最小化。
    4)自启动服务最小化。
    5)服务运行用户最小化。
  • 相关阅读:
    Delphi 学习笔记
    Extjs 4
    面向对象(OOP)
    Java基础
    Ubantu(乌班图)
    CentOS 6.3操作常识
    英语音标单元音篇
    英语音标双元音篇
    英语音标辅音篇
    Oracle补习班第一天
  • 原文地址:https://www.cnblogs.com/wuhg/p/9430853.html
Copyright © 2020-2023  润新知