标签:centos系统优化脚本
#脚本名称:systemyh.sh
#本脚本中需要配合一个文档来关闭不必要的服务,文档内容为不必要的服务名称
#请斟酌使用本例中的stopservices.txt文档
#脚本内容如下:
#!/bin/bash
#关闭SELinux防火墙
cp /etc/sysconfig/selinux /etc/sysconfig/selinux-`date +"%Y%m%d"`
sed -i ‘s/SELINUX\=enforcing/SELINUX=disabled/‘ /etc/sysconfig/selinux
setenforce 0
#关闭iptables
chkconfig iptables off
service iptables stop
#关闭系统写入文件最后读取时间
cp /etc/fstab /etc/fstab-`date +"%Y%m%d"`
sed -i ‘s/ext3 defaults/ext3 defaults,noatime/‘ /etc/fstab
#关闭不必要的服务
for sv in `cat stopservices.txt`
do
chkconfig $sv off
service $sv stop
done
#注释掉ssh登陆时的GSS认证
cp /etc/ssh/sshd_config /etc/ssh/sshd_config-`date +"%Y%m%d"`
sed -i ‘s/^GSS/\#GSS/g‘ /etc/ssh/sshd_config
sed -i ‘s/\#UseDNS yes/UseDNS no/‘ /etc/ssh/sshd_config
# 增加文件描述符限制
mkdir /var/bak 2>/dev/null
limitfile=/etc/security/limits.conf
cp /etc/security/limits.conf /var/bak/limits.conf-`date +"%Y%m%d"`
cp /etc/rc.local /var/bak/rc.local-`date +"%Y%m%d"`
sed -i ‘/^#/d‘ $limitfile
copylimit(){
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
}
if [ `cat $limitfile | wc -l` -gt 0 ]
then
linec=`egrep ‘^*\shard|^*\ssoft‘ $limitfile | wc -l`
if [ $linec -eq 2 ]
then
sed -i ‘s/[0-9]\+/65535/g‘ $limitfile
else
sed -i ‘/^[\*\ssoft\w+]/d‘ $limitfile
sed -i ‘/^[\*\shard\w+]/d‘ $limitfile
copylimit
fi
else
copylimit
fi
if [ `cat /etc/rc.local | grep ulimit | wc -l` -gt 0 ]
then
sed -i ‘/ulimit/d‘ /etc/rc.local
else
echo ‘ulimit -SHn 65535‘ >> /etc/rc.local
fi
# 优化内核参数
cp /etc/sysctl.conf /etc/sysctl.conf-`date +"%Y%m%d"`
cat >> /etc/sysctl.sh << EOF
#!/bin/sh
modprobe ip_conntrack
sysctl -w net.ipv4.icmp_echo_ignore_all=0 #关闭ICMP回显信息
sysctl -w net.ipv4.tcp_syncookies=1 #应对syn攻击的参数,扩展说明见下文①
sysctl -w net.ipv4.tcp_synack_retries=1 #作用同上,减少syn重试次数
sysctl -w net.ipv4.tcp_ecn=0 #关闭TCP拥塞通告
sysctl -w net.ipv4.tcp_tw_reuse=1 #表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接
sysctl -w net.ipv4.tcp_tw_recycle=1 #表示开启TCP连接中TIME-WAIT sockets的快速回收
sysctl -w net.ipv4.tcp_max_tw_buckets=655360 #表示系统同时保持TIME_WAIT套接字的最大数量
sysctl -w net.ipv4.tcp_keepalive_time=30 #表示当keepalive启用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为30秒
sysctl -w net.ipv4.tcp_keepalive_intvl=15 #keepalive探测包的发送间隔
sysctl -w net.ipv4.tcp_keepalive_probes=3 #如果对方不予应答,探测包的发送次数
sysctl -w net.ipv4.tcp_fin_timeout=10 #表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间
sysctl -w net.ipv4.tcp_mem="1966080 2621440 41943040" #扩展说明见下文②
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608" #与 tcp_wmem 类似,不过它表示的是为自动调优所使用的接收缓冲区的值
sysctl -w net.ipv4.tcp_wmem="4096 87380 8388608" #扩展说明见下文③
sysctl -w net.ipv4.tcp_max_syn_backlog=8192 #表示SYN队列长度,默认1024,改成8192,可以容纳更多等待连接的网络连接数
sysctl -w net.ipv4.ip_local_port_range="5000 65000" #表示用于向外连接的端口范围。缺省很小:32768到61000,改为5000到65000
sysctl -w net.ipv4.route.gc_timeout=100 #路由缓存刷新频率,当一个路由失败后多长时间跳到另一个路由,默认是300。
sysctl -w net.core.rmem_default=65536 #指定了接收套接字缓冲区大小的缺省值(以字节为单位)。
sysctl -w net.core.wmem_default=65536 #定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大。
sysctl -w net.core.wmem_max=8388608 #定义发送窗口的最大大小;对于更大的 BDP 来说,这个大小也应该更大
sysctl -w net.core.rmem_max=8388608 #指定了接收套接字缓冲区大小的最大值(以字节为单位)
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects #关闭ICMP重定向
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route #是否接受含有源路由信息的ip包。安全性角度出发,建议你关闭该功能。
sysctl -w fs.file-max=6553500 #系统可以打开的最大文件数
#以下参数是对iptables防火墙的优化,防火墙不开会有提示,可以忽略不理
#注意:在CentOS6.4以上的版本中,ip_conntrack被换为了nf_conntrack
sysctl -w net.ipv4.netfilter.ip_conntrack_max=200000 #设置系统对最大跟踪的TCP连接数的限制
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=30
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=30
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=30
sysctl -w net.ipv4.netfilter.ip_conntrack_tcp_established=200
EOF
chmod u+x /etc/sysctl.sh
/bin/sh /etc/sysctl.sh
if [ `cat /etc/rc.local | grep sysctl.sh| wc -l` -ge 0 ]
then
sed -i ‘/sysctl.sh/d‘ /etc/rc.local
fi
echo ‘bin/sh /etc/sysctl.sh‘ >> /etc/rc.local
#附件为自己写的stopservices.txt文件,并将该文件放到与脚本同一目录下即可
标签:centos系统优化脚本
原文地址:http://4878151.blog.51cto.com/4868151/1707097