免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2505 | 回复: 8
打印 上一主题 下一主题

[学习共享] centos6系统初始化脚本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-20 14:42 |只看该作者 |倒序浏览
centos6系统初始化脚本,仅供交流,高手勿喷!

centos6系统初始化脚本
  1. #!/bin/bash

  2. #written:51clocker
  3. #date:2015-07-18
  4. #email:admin@51clocker.com
  5. #web:http://www.51clocker.com

  6. echo -e "\033[31m 这个是系统初始化脚本,请慎重运行! press ctrl+C to cancel \033[0m"
  7. sleep 5

  8. yum_update(){
  9.     yum -y install wget
  10.     cd /etc/yum.repos.d/
  11.     mkdir bak
  12.     mv ./*.repo bak
  13.     wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
  14.     wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
  15.     yum clean all && yum makecache
  16.     yum -y install vim unzip  openssl-client gcc gcc-c++ ntp
  17. }

  18. # /etc/hosts
  19. #[ "$(hostname -i)" != "127.0.0.1" ] && sed -i "s@^127.0.0.1\(.*\)@127.0.0.1   `hostname` \1@" /etc/hosts

  20. #关闭SEKINUX
  21. selinux(){
  22. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
  23. setenforce 0
  24. }

  25. #修改文件打开数
  26. # /etc/security/limits.conf
  27. limits_config(){
  28. cat >> /etc/security/limits.conf <<EOF
  29. * soft nproc 65535
  30. * hard nproc 65535
  31. * soft nofile 65535
  32. * hard nofile 65535
  33. EOF
  34. echo "ulimit -SH 65535" >> /etc/rc.local
  35. }
  36. #优化内核参数
  37. sysctl_config(){
  38. sed -i 's/net.ipv4.tcp_syncookies.*$/net.ipv4.tcp_syncookies = 1/g' /etc/sysctl.conf
  39. cat >> /etc/sysctl.conf << ENDF
  40. net.ipv4.tcp_max_syn_backlog = 65536
  41. net.core.netdev_max_backlog =  32768
  42. net.core.somaxconn = 32768
  43. net.core.wmem_default = 8388608
  44. net.core.rmem_default = 8388608
  45. net.core.rmem_max = 16777216
  46. net.core.wmem_max = 16777216
  47. net.ipv4.tcp_timestamps = 0
  48. net.ipv4.tcp_synack_retries = 2
  49. net.ipv4.tcp_syn_retries = 2
  50. net.ipv4.tcp_tw_recycle = 1
  51. #net.ipv4.tcp_tw_len = 1
  52. net.ipv4.tcp_tw_reuse = 1
  53. net.ipv4.tcp_mem = 94500000 915000000 927000000
  54. net.ipv4.tcp_max_orphans = 3276800
  55. net.ipv4.ip_local_port_range = 1024  65535
  56. ENDF
  57. sysctl -p
  58. }

  59. #关闭系统不用的服务
  60. stop_server(){
  61. for server in `chkconfig --list |grep 3:on|awk '{ print $1}'`
  62. do
  63.     chkconfig --level 3 $server off
  64. done

  65. for server in crond network rsyslog sshd
  66. do
  67.    chkconfig --level 3 $server on
  68. done
  69. }


  70. #language..
  71. inittab(){
  72. if [ -z "$(cat /etc/redhat-release | grep '6\.')" ];then
  73.     sed -i 's/3:2345:respawn/#3:2345:respawn/g' /etc/inittab
  74.     sed -i 's/4:2345:respawn/#4:2345:respawn/g' /etc/inittab
  75.     sed -i 's/5:2345:respawn/#5:2345:respawn/g' /etc/inittab
  76.     sed -i 's/6:2345:respawn/#6:2345:respawn/g' /etc/inittab
  77.     sed -i 's/ca::ctrlaltdel/#ca::ctrlaltdel/g' /etc/inittab
  78.     sed -i 's@LANG=.*$@LANG="en_US.UTF-8"@g' /etc/sysconfig/i18n
  79. else
  80.     sed -i 's@^ACTIVE_CONSOLES.*@ACTIVE_CONSOLES=/dev/tty[1-2]@' /etc/sysconfig/init
  81.     sed -i 's@^start@#start@' /etc/init/control-alt-delete.conf
  82. fi
  83. /sbin/init q
  84. }
  85. #设置时间时区同步
  86. zone_time(){
  87.     rm -rf /etc/localtime
  88.     ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

  89.     # Update time
  90.     /usr/sbin/ntpdate pool.ntp.org
  91.     echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1' > /var/spool/cron/root;chmod 600 /var/spool/cron/root
  92.     /sbin/service crond restart
  93. }

  94. #配置SSHD
  95. sshd_config(){
  96.     #sed -i '/^#Port/s/#Port 22/Port 65535/g' /etc/ssh/sshd_config
  97.     sed -i '/^#UseDNS/s/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
  98.     #sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
  99.     sed -i 's/#PermitEmptyPasswords no/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
  100.     /etc/init.d/sshd restart
  101. }

  102. # iptables
  103. iptables(){
  104. cat > /etc/sysconfig/iptables << EOF
  105. # Firewall configuration written by system-config-securitylevel
  106. # Manual customization of this file is not recommended.
  107. *filter
  108. :INPUT DROP [0:0]
  109. :FORWARD ACCEPT [0:0]
  110. :OUTPUT ACCEPT [0:0]
  111. :syn-flood - [0:0]
  112. -A INPUT -i lo -j ACCEPT
  113. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  114. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  115. -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
  116. -A INPUT -p icmp -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
  117. -A INPUT -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
  118. -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn-flood
  119. -A INPUT -j REJECT --reject-with icmp-host-prohibited
  120. -A syn-flood -p tcp -m limit --limit 3/sec --limit-burst 6 -j RETURN
  121. -A syn-flood -j REJECT --reject-with icmp-port-unreachable
  122. COMMIT
  123. EOF
  124. /sbin/service iptables restart
  125. source /etc/profile
  126. }
  127. other(){
  128. # initdefault
  129. sed -i 's/^id:.*$/id:3:initdefault:/' /etc/inittab
  130. /sbin/init q
  131. # PS1
  132. echo 'PS1="\[\e[37;40m\][\[\e[32;40m\]\u\[\e[37;40m\]@\h \[\e[35;40m\]\W\[\e[0m\]]\\$ \[\e[33;40m\]"' >> /etc/profile

  133. # Record command
  134. sed -i 's/^HISTSIZE=.*$/HISTSIZE=100/' /etc/profile
  135. echo "export PROMPT_COMMAND='{ msg=\$(history 1 | { read x y; echo \$y; });user=\$(whoami); echo \$(date \"+%Y-%m-%d %H:%M:%S\"):\$user:\`pwd\`/:\$msg ---- \$(who am i); } >> /tmp/\`hostname\`.\`whoami\`.history-timestamp'" >> /root/.bash_profile

  136. # Wrong password five times locked 180s
  137. sed -i '4a auth        required      pam_tally2.so deny=5 unlock_time=180' /etc/pam.d/system-auth
  138. . /etc/profile
  139. }

  140. main(){
  141.     yum_update
  142.     selinux
  143.     limits_config
  144.     sysctl_config
  145.     stop_server
  146.     inittab
  147.     zone_time
  148.     sshd_config
  149. #   iptables
  150.     other
  151. }
  152. main
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
2 [报告]
发表于 2015-07-20 15:22 |只看该作者
sed -i 's/3:2345:respawn/#3:2345:respawn/g' /etc/inittab
sed -i 's/4:2345:respawn/#4:2345:respawn/g' /etc/inittab
sed -i 's/5:2345:respawn/#5:2345:respawn/g' /etc/inittab
sed -i 's/6:2345:respawn/#6:2345:respawn/g' /etc/inittab

可以考虑合并一下:
  1. sed -i 's/[3-6]:2345:respawn/#&/' /etc/inittab
复制代码

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
3 [报告]
发表于 2015-07-20 15:54 |只看该作者
这个脚本首先要满足网络是ok的。。。。。。
然后还有就是sshd你改了端口,iptables你写的不对会把自己墙外边的。。。。。。
另外你是不是觉得你默认都不开iptables那改这些防火墙有啥意义呢????
还有就是你禁止了root,那你还得记住开个普通账号啊。。。。。。否则你拿啥ssh???

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
4 [报告]
发表于 2015-07-20 17:06 |只看该作者
net.ipv4.ip_local_port_range = 1024  65535

又是这卵玩意

你们这乱初始化的到底懂不懂这些参数干什么的?

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
5 [报告]
发表于 2015-07-20 17:19 |只看该作者
回复 4# lolizeppelin


    增加本地可用端口范围,当你的访问量达到一定程度的时候就有用了

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
6 [报告]
发表于 2015-07-20 18:17 |只看该作者
回复 4# lolizeppelin


很有用啊, 例如一些php-fpm, MySQL端口, 建议随机端口设置net.ipv4.ip_local_port_range = 10240   65535
防止10000以下端口冲突..

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2015-07-20 20:47 |只看该作者
回复 4# lolizeppelin


    你给讲解一下给大家扫扫盲吧

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
8 [报告]
发表于 2015-07-20 22:03 |只看该作者
很好,希望大家多分享这样的脚本啊

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:57:09
9 [报告]
发表于 2015-07-21 21:24 |只看该作者
本帖最后由 lolizeppelin 于 2015-07-21 21:34 编辑

这个值系统默认用30000 - 65535

除非你的服务器大量对外访问诸如
大量对外post、get(http服务被访问只会用80回数据根本不需要用到多余端口,mysql一般都有连接池也用不上那么多端口)
proxy_pass或fcgi_pass到127.0.0.1(其实访问本机器更应该用unix socket而不是用127.0.0.1)
否则根本不需要设置这个参数

降低这个参数会带来不必要的麻烦

例如很多程序很多都监听10000-30000端口
你动态端口降低反而用容易占用到需要监听的端口导致程序启动不了

会用到大量端口一般意味着有大量对外访问是短链接的
除了php之类的cgi方式的没法避免
java,libcurl,proxy_pass都支持http1.1,都有办法弄成长链接。



不知道是否有需要就这样设端口范围是非常不可取的,纯粹没事找事。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP