#!/bin/bash
#安装系统需要的基本应用工具
yum -y install ntp yum-plugin* nmap telnet lrzsz gcc*
#系统内核参数优化,适用于高并发服务如nginx\varnish\lvs
sysctl(){ cat /dev/null >/etc/sysctl.conf cat >> /etc/sysctl.conf <<eof # Kernel sysctl configuration file for Red Hat Linux # # For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and # sysctl.conf(5) for more details. # 不开启路由转发功能 net.ipv4.ip_forward = 0 # Controls source route verification net.ipv4.conf.default.rp_filter = 1 # Do not accept source routing net.ipv4.conf.default.accept_source_route = 0 # Controls the System Request debugging functionality of the kernel kernel.sysrq = 0 # Controls whether core dumps will append the PID to the core filename. # Useful for debugging multi-threaded applications. kernel.core_uses_pid = 1 # Controls the use of TCP syncookies net.ipv4.tcp_syncookies = 1 # Disable netfilter on bridges. #net.bridge.bridge-nf-call-ip6tables = 0 #net.bridge.bridge-nf-call-iptables = 0 #net.bridge.bridge-nf-call-arptables = 0 # Controls the default maxmimum size of a mesage queue kernel.msgmnb = 65536 # Controls the maximum size of a message, in bytes kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes kernel.shmmax = 68719476736 # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296 #开启重复使用,允许TIME-WAIT socket重新用于tcp连接 net.ipv4.tcp_tw_reuse = 1 #开启TIME-WAIT连接的快速回收 net.ipv4.tcp_tw_recycle = 1 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间 net.ipv4.tcp_fin_timeout = 30 #内核放弃建立连接之前发送SYN包的数量 net.ipv4.tcp_syn_retries = 2 #当keepalive启用时,tcp发送keepalive的频度 net.ipv4.tcp_keepalive_time = 1200 #本端试图关闭TCP连接之前重试多少次 net.ipv4.tcp_orphan_retries = 3 #该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 net.core.netdev_max_backlog = 3000 # 为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK,也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量 net.ipv4.tcp_synack_retries = 2 #文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量 fs.file-max=65535 #网络连接可以使用的端口范围 net.ipv4.ip_local_port_range = 1024 65535 #网络连接可以等待的队列数 net.ipv4.tcp_max_syn_backlog = 8192 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息 net.ipv4.tcp_max_tw_buckets = 6000 #接收套接字缓冲区大小的最大值单位字节 net.core.rmem_max = 8388608 #接收套接字缓冲区大小的缺省值单位字节 net.core.rmem_default = 65536 #发送套接字缓存区大小的最大值单位字节 net.core.wmem_max = 8388608 #发送套接字缓冲区大小的缺省值单位字节 net.core.wmem_default = 65536 #低于net.ipv4.tcp_mem[0]值,TCP没有内存压力. #低于net.ipv4.tcp_mem[1]值,进入内存压力阶段. #高于net.ipv4.tcp_mem[2]值,TCP拒绝分配socket. net.ipv4.tcp_mem = 16777216 16777216 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 #此值调整使用物理内存和交换空间的概率,越小使用交换空间的概率越小,若是内存对内存有强烈依赖的服务可设为0 如mysql\redis vm.swappiness=20 EOF /sbin/sysctl -p }
#以3级别启动系统,注销ctl+alt+del重启功能
initab(){ sed -i 's/id:5:initdefault:/id:3:initdefault:/' /etc/initab sed -i 's/start on control-alt-delete/#start on control-alt-delete/' /etc/init/control-alt-delete.conf }
#重要文件加不可操作权限
purview(){ chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow chattr +i /etc/inittab #将chattr命令隐藏 mv /usr/bin/chattr /usr/bin/bdmlcha }
#关闭selinux
selinux(){ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config }
#校正系统时间
ntpdate(){ echo "0 4 * * * /usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1" >>/var/spool/cron/root clock -w }
#进程可打开文件数限制
ulimit(){ echo "* - nofile 102400" >> /etc/security/limits.conf echo "ulimit -SHn 102400" }
#调整语系、字符集支持
lang(){ sed-i 's/LANG="en_US.UTF-8"/LANG="zh_CN.GB18030/' /etc/sysconfig/i18n source/etc/sysconfig/i18n }
#ssh 设置
ssh(){ #不允许空密码登陆 sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/' /etc/ssh/sshd_config #不允许root远程登陆 sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config #不适用dns反向解析 sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config #修该端口号 sed -i 's/#Port 22/Port 32168/' /etc/ssh/sshd_config service sshd restart }
#关闭不必要的tty端口
tty(){ sed -i 's/6\]/2\]/' /etc/init/start-ttys.conf }
#优化系统开启服务管理
services(){ for SERVER in `chkconfig --list | awk '{print $1}'` do chkconfig $SERVER off done for SERVER in sshd messagebus rngd network crond rsyslog irqbalance lvm2-monitor do chkconfig --level 35 $SERVER on done } sysctl initab purview ntpdate ulimit ssh lang tty services