Linux系统优化小结

1)不用root登录管理系统,而以普通用户登录通过sudo授权管理。
    例如:
      useradd oldboy
      id oldboy
      echo "oldboy    ALL=(ALL)     NOPASSWD: ALL" >>    /etc/sudoers
2)更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至要更改SSH服务只监听内网IP。
    [root@lb ~]# vim /etc/ssh/sshd_config
    Port 51898       ##监听端口,端口范围(0-65535,最好是大于1024的端口)
    ListenAddress 192.168.1.128           ##监听地址,为了安全起见,监听在内网之上
    Protocol 2                      ##使用协议
    PermitEmptyPasswords no            ##禁止空密码登录系统,默认是禁止
    UseDNS no                       ##禁止DNS反解析,加速登录ssh
    PermitRootLogin no                 ##禁止root远程登录
    GSSAPIAuthentication no             ##加速登录ssh
        
3)定时自动更新服务器的时间,使其和互联网时间同步。
   ntpdate time-a.nist.gov
4)配置yum更新源,从国内更新源下载安装软件包。
   wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
5)关闭SELinux及iptables(在工作场景中,如果有外部IP一般要打开iptables,高并发高流量的服务器可能无法开启)。
    #关闭SElinux
     sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    cat /etc/selinux/config |grep  SELINUX=disabled    

    setenforce 0
     getenforce
    
    #关闭iptables
    /etc/init.d/iptables stop
    chkconfig iptables off
6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符数量。
    #系统默认1024
    ulimit -n   
    ##临时设置
    ulimit -SHn 65535   
    #检查临时设置是否成功
    ulimit -n   
    ##永久设置
    vim /etc/security/limits.conf   
    ##*                soft    nofile          65535
    ##*                hard    nofile          65535
    
7)定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满(注意Centos6和Centos5要清除的目录不同)。
    
    
8)精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、sysstat)。
    方法一:
    for name in `chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|crond|iptables|network|rsyslog|sshd|sysstat"`;do chkconfig $name off;done
    方法二:
    chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|crond|iptables|network|rsyslog|sshd|sysstat" | sed -r 's#(.*)#chkconfig \1 off#g' | bash
    方法三:
    chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "crond|iptables|network|rsyslog|sshd|sysstat" | awk '{print "chkconfig"" "$1" " "off"}' | bash
9)Linux内核参数优化/etc/sysctl.conf,执行sysctl -p生效。
vim /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    

10)更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。
    sed -i 's#en_US.UTF-8#zh_CN.UTF-8#g' /etc/sysconfig/i18n
    source /etc/sysconfig/i18n
11)锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab, 处理以上内容后把chattr、lsattr改名为oldboy,转移走,这样就安全多了。
    chattr +i /etc/passwd
    chattr +i /etc/shadow
    chattr +i /etc/group
    chattr +i /etc/gshadow
    chattr +i /etc/inittab
    chattr +i /etc/passwd
    #临时创建别名
    alias chattr='cha'
    alias lsattr='lsa'
    永久创建别名
    echo alias chattr='cha' >>/root/.bashrc
    echo alias lsattr='lsa' >>/root/.bashrc
12)清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。
    >/etc/issue
    >/etc/issue.net
13)清除多余的系统虚拟用户账号。

14)为grub引导菜单加密码。
#执行/sbin/grub-md5-crypt会随机生成一段字符串
/sbin/grub-md5-crypt
将字符串添加在/boot/grub/grub.conf中
echo "passwd --md5 $1$fkb6n$K3EUy32pHkR2MLpN9RJPa0" >>/boot/grub/grub.conf
    
15)禁止主机被ping。
    #修改内核参数
    echo "net.ipv4.icmp_echo_ignore_all=1" >> /etc/sysctl.conf  
    #立即生效
    sysctl -p
16)打补丁并升级有已知漏洞的软件。