当前位置: 主页 > 性能调优 >

线上使用的服务器优化Shell脚本(安全+优化)

时间:2013-03-28 23:05来源:linux系统运维 作者:小编1000 点击:
可放心在线上使用
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


下载脚本wget http://www.linuxyw.com/scripts/system.sh
本脚本在CentOS 5.8 和6.2版本完美使用
本脚本可放心在线上服务器使用,建议在安装好系统后,就使用此脚本进行优化,优化完后,重启下服务器后无问题再进行其它服务安装
脚本有些优化可能不适合你的业务,可进行适当修改,如内核优化那
注意,使用了本脚本后,SSH端口已变为2233,请在优化先,修改脚本中的SSH端口为自己想设置的

#!/bin/bash

#############################################
#name:drfdai
#email:63780668@qq.com
#date:2012-09-15
#############################################


#以下是设置服务器每3小时同步一次
yum -y install ntp
echo '0 */3 * * * /usr/sbin/ntpdate time.windows.com >/dev/null 2>&1' >>/var/spool/cron/root
service crond restart

#以下设置服务器打开文件数量(文件描述符)为:65535
echo "ulimit -SHn 102400" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
*           soft   nofile       65535
*           hard   nofile       65535
EOF
 
#优化内核
cp /etc/sysctl.conf /etc/sysctl.conf-$(date +%F).bak
true > /etc/sysctl.conf
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
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 915000000 927000000
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 1024 65535
#net.ipv4.icmp_echo_ignore_all = 1  #禁ping,如果有nagios监控,这步可省去
EOF
/sbin/sysctl -p
echo "sysctl set OK!!"


#禁止CTRL+ALT+DEL关机
sed -i "s/ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/#ca::ctrlaltdel:\/sbin\/shutdown -t3 -r now/" /etc/inittab

#在无用的系统帐号前加上#号,使帐号无效,这步也可以不做,如果有某些服务无法启动,可能跟这些被注释掉的帐号有关,去掉#号再重新服务即可
cp /etc/passwd /etc/passwd-$(date +%F).bak
for i in xfs news nscd dbus vcsa games nobody avahi haldaemon gopher ftp mailnull pcap mail shutdown halt uucp operator sync adm lp
do
sed -i "s/^${i}/#${i}/" /etc/passwd
echo "${i} done.."
done

#使历史记录只保留100条最近的,超过300秒无动作退出ssh连接
cp /etc/profile /etc/profile-$(date +%F).bak
#echo "TMOUT=300" >> /etc/profile
sed -i '/^HISTSIZE=/cHISTSIZE=100' /etc/profile
source /etc/profile

#去掉登陆后显示的欢迎信息等
cat /dev/null >/etc/issue 
cat /dev/null >/etc/issue.net 
cat /dev/null >/etc/motd

#安装系统优化工具
yum install -y sysstat

#对bash_history加锁
#chattr +a /root/.bash_history
#chattr +i /root/.bash_history

#优化系统重要文件的权限
chmod -R 700 /etc/rc.d/init.d/*
chmod 700 /bin/rpm
chmod 664 /etc/hosts
chmod 644 /etc/passwd
chmod 644 /etc/exports
chmod 644 /etc/issue
chmod 664 /var/log/wtmp
chmod 664 /var/log/btmp
chmod 644 /etc/services
chmod 644 /etc/shadow
chmod 600 /etc/login.defs
#chmod 600 /etc/hosts.allow  #这个文件如没必要可不修改,如果某些服务启动不了可能与这文件有关。
#chmod 600 /etc/hosts.deny   ##这个文件如没必要可不修改,如果某些服务启动不了可能与这文件有关。

chmod 600 /etc/securetty
chmod 600 /etc/security
chmod 600 /etc/ssh/ssh_host_key
chmod 600 /etc/ssh/sshd_config
chmod 600 /var/log/lastlog
chmod 600 /var/log/messages
chmod 700 /bin/ping
chmod 700 /usr/bin/vim
chmod 700 /bin/netstat
chmod 700 /usr/bin/less
chmod 700 /usr/bin/tail
chmod 700 /usr/bin/head
chmod 700 /bin/cat
chmod 700 /bin/uname
chmod 500 /bin/ps

#对重要的文件加锁,使安全性高一些,但会造成无法添加信息进去,可能在安装软件等的时候,造成无法启动,帐号创建不了。
#for file in /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/services /etc/inittab /etc/rc.local 
#do 
#chattr +i $file 
#done

#关闭IPV6
cat << EOF
+--------------------------------------------------------------+
|         === Welcome to Disable IPV6 ===                      |
+--------------------------------------------------------------+
EOF
echo "alias net-pf-10 off" >> /etc/modprobe.conf
echo "alias ipv6 off" >> /etc/modprobe.conf
/sbin/chkconfig --level 35 ip6tables off
echo "ipv6 is disabled!"

#关闭SELINUX
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 
echo "selinux is disabled,you must reboot!"


sed -i "8 s/^/alias vi='vim'/" /root/.bashrc
echo 'syntax on' > /root/.vimrc

#优化SSH配置文件,更改SSH登陆商品为2233
cp /etc/ssh/sshd_config /etc/ssh/sshd_config-$(date +%F).bak
ssh_cf="/etc/ssh/sshd_config" 
sed -i -e '74 s/^/#/' -i -e '76 s/^/#/' $ssh_cf
sed -i "s/#Port 22/Port 2233/" $ssh_cf
sed -i "s/#UseDNS yes/UseDNS no/" $ssh_cf
sed -i '/#PermitEmptyPasswords no/cPermitEmptyPasswords yes' $ssh_cf   
#client
sed -i -e '44 s/^/#/' -i -e '48 s/^/#/' $ssh_cf
service sshd restart
echo "ssh is init is ok.............."
#chkser

#关闭不必要的服务,如果有你需要的服务,在优化完后,再打开,可用setup选择打开,也可以用chkconfig打开
#--------------------------------------------------------------------------------
cat << EOF
+--------------------------------------------------------------+
|         === Welcome to Tunoff services ===                   |
+--------------------------------------------------------------+
EOF
#---------------------------------------------------------------------------------
for i in `ls /etc/rc3.d/S*`
do
              CURSRV=`echo $i|cut -c 15-`
echo $CURSRV
case $CURSRV in
          crond | irqbalance | microcode_ctl | lvm2-monitor | network | random | sshd | syslog  )
      echo "Base services, Skip!"
      ;;
      *)
          echo "change $CURSRV to off"
          chkconfig --level 235 $CURSRV off
          service $CURSRV stop
      ;;
esac
done
echo "service is init is ok.............."

 

本文来自linux系统运维http://www.linuxyw.com/linux/tiaoyou/20130328/2.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片