作為運維人員,經常會初始化系統,系統在安裝過程中基本都會選擇最小化安裝,這樣安裝好的系統裡會缺少很多環境。
下面分享一個系統安裝後的初始化腳本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<code>#!/bin/bash</code>
<code>#系統時最小化安裝的,這裡要安裝系統的軟體庫</code>
<code>yum groupinstall -y </code><code>"development tools"</code>
<code>#建立目錄</code>
<code>[ ! -d </code><code>/server/tools</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/server/tools</code>
<code>[ ! -d </code><code>/application</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/application</code>
<code>[ ! -d </code><code>/data</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/data</code>
<code>[ ! -d </code><code>/app/logs</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/app/logs</code>
<code>[ ! -d </code><code>/server/backup</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/server/backup</code>
<code>[ ! -d </code><code>/delete</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/delete</code>
<code>#每周六淩晨1點0分更新伺服器系統時間</code>
<code>echo</code> <code>"############### auto update time ###############"</code> <code>>> </code><code>/var/spool/cron/root</code>
<code>echo</code> <code>"00 01 * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1"</code> <code>>> </code><code>/var/spool/cron/root</code>
<code>[ `</code><code>grep</code> <code>ntpdate </code><code>/var/spool/cron/root</code> <code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] && action </code><code>"uptime set"</code> <code>/bin/true</code> <code>|| action </code><code>"uptime set"</code> <code>/bin/false</code>
<code>#配置yum源</code>
<code>wget -P </code><code>/etc/yum</code><code>.repos.d/ http:</code><code>//mirrors</code><code>.163.com/.help</code><code>/CentOS6-Base-163</code><code>.repo </code><code>#下載下傳配置檔案</code>
<code>/bin/mv</code> <code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo.bak</code>
<code>/bin/cp</code> <code>/etc/yum</code><code>.repos.d</code><code>/CentOS6-Base-163</code><code>.repo </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo</code>
<code>[ `</code><code>grep</code> <code>163.com </code><code>/etc/yum</code><code>.repos.d</code><code>/CentOS-Base</code><code>.repo | </code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] && action </code><code>"yum set"</code> <code>/bin/true</code> <code>|| action </code><code>"yum set"</code> <code>/bin/false</code>
<code>#關閉SELINUX及iptables</code>
<code>/bin/cp</code> <code>/etc/selinux/config</code> <code>/etc/selinux/config</code><code>.bak</code>
<code>sed</code> <code>-i </code><code>'s/SELINUX=enforcing/SELINUX=disabled/'</code> <code>/etc/selinux/config</code> <code>2>&1</code>
<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop ></code><code>/dev/null</code>
<code>chkconfig iptables off ></code><code>/dev/null</code>
<code>[ `chkconfig --list |</code><code>grep</code> <code>iptables|</code><code>grep</code> <code>3:on|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 -a `</code><code>grep</code> <code>"SELINUX=enforcing"</code> <code>/etc/selinux/config</code><code>|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ] && action </code><code>"iptables and selinux close"</code> <code>/bin/true</code> <code>|| action </code><code>"iptables and selinux close"</code> <code>/bin/false</code>
<code>#調整檔案描述符數量</code>
<code>/bin/cp</code> <code>/etc/security/limits</code><code>.conf </code><code>/etc/security/limits</code><code>.conf.bak</code>
<code>echo</code> <code>'* - nofile 65535'</code><code>>></code><code>/etc/security/limits</code><code>.conf</code>
<code>[ `</code><code>tail</code> <code>-1 </code><code>/etc/security/limits</code><code>.conf|</code><code>grep</code> <code>65535|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>1 ] && action </code><code>"limit set"</code> <code>/bin/true</code> <code>|| action </code><code>"limit set"</code> <code>/bin/false</code>
<code>#更改字元集</code>
<code>/bin/cp</code> <code>/etc/sysconfig/i18n</code> <code>/etc/sysconfig/i18n</code><code>.bak</code>
<code>echo</code> <code>'LANG="en_US.UTF-8"'</code> <code>></code><code>/etc/sysconfig/i18n</code>
<code>#定時清理/var/spool/clientmqueue/目錄下的垃圾檔案,防止inodes節點被占滿</code>
<code>##建立腳本目錄</code>
<code>[ ! -d </code><code>/server/scripts</code> <code>] && </code><code>mkdir</code> <code>-p </code><code>/server/scripts</code>
<code>if</code> <code>[ `rpm -qa sendmail |</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ];</code><code>then</code>
<code>##建立查找删除腳本</code>
<code>echo</code> <code>></code><code>/server/scripts/del</code><code>.sh<<EOF</code>
<code>find</code> <code>/var/spool/clientmqueue/</code> <code>-</code><code>type</code> <code>f|</code><code>xargs</code> <code>rm</code> <code>-f ></code><code>/dev/null</code> <code>2>&1</code>
<code>EOF</code>
<code>##添加到定時任務,每周一淩晨0點0分執行</code>
<code>echo</code> <code>'################ clean /var/spool/clientmqueue/ ################'</code><code> >></code><code>/var/spool/cron/root</code>
<code>echo</code> <code>'00 00 * * 1 /bin/sh /server/scripts/del.sh >/dev/null 2>&1'</code> <code>>></code><code>/var/spool/cron/root</code>
<code>[ </code><code>"$?"</code> <code>-</code><code>eq</code> <code>0 ] && action </code><code>"clean /var/spool/clientmqueue/ set"</code> <code>/bin/true</code> <code>|| action </code><code>"clean /var/spool/clientmqueue/ set"</code> <code>/bin/false</code>
<code>else</code>
<code>action </code><code>"service sendmail is not installed,do not need set"</code> <code>/bin/false</code>
<code>fi</code>
<code>#精簡開機自啟動服務(隻啟動crond,sshd,network,syslog)</code>
<code>##篩選出所有在運作級别3自啟動的服務并關閉自啟動</code>
<code>for</code> <code>cgt </code><code>in</code> <code>`chkconfig --list | </code><code>grep</code> <code>3:on | </code><code>awk</code> <code>'{print $1}'</code><code>`;</code><code>do</code> <code>chkconfig --level 3 $cgt off;</code><code>done</code>
<code>##僅設定crond,sshd,network,syslog自啟動</code>
<code>for</code> <code>cgt </code><code>in</code> <code>{crond,sshd,network,rsyslog};</code><code>do</code> <code>chkconfig --level 3 $cgt on;</code><code>done</code>
<code>flag=0</code>
<code>[ `chkconfig --list|</code><code>grep</code> <code>3:on|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>4 ] && action </code><code>"auto_start services set"</code> <code>/bin/true</code> <code>|| action </code><code>"auto_start services set"</code> <code>/bin/false</code>
<code>#核心參數優化</code>
<code>[ -f </code><code>/etc/sysctl</code><code>.conf.bak ] && </code><code>/bin/cp</code> <code>/etc/sysctl</code><code>.conf.bak </code><code>/etc/sysctl</code><code>.conf.bak.$(</code><code>date</code> <code>+%F-%H%M%S) ||</code><code>/bin/cp</code> <code>/etc/sysctl</code><code>.conf </code><code>/etc/sysctl</code><code>.conf.bak</code>
<code>cat</code> <code>>> </code><code>/etc/sysctl</code><code>.conf <<EOF</code>
<code>net.ipv4.tcp_fin_timeout = 2</code>
<code>net.ipv4.tcp_tw_reuse = 1</code>
<code>net.ipv4.tcp_tw_recycle = 1</code>
<code>net.ipv4.tcp_syncookies = 1</code>
<code>net.ipv4.tcp_keepalive_time = 600</code>
<code>net.ipv4.ip_local_port_range = 4000 65000</code>
<code>net.ipv4.tcp_max_syn_backlog = 16384</code>
<code>net.ipv4.tcp_max_tw_buckets = 36000</code>
<code>net.ipv4.route.gc_timeout = 100</code>
<code>net.ipv4.tcp_syn_retries = 1</code>
<code>net.ipv4.tcp_synack_retries = 1</code>
<code>net.core.somaxconn = 16384</code>
<code>net.core.netdev_max_backlog = 16384</code>
<code>net.ipv4.tcp_max_orphans = 16384</code>
<code>#以下參數是對iptables防火牆的優化,防火牆不開會提示,可以忽略不理。</code>
<code>#net.ipv4.ip_conntrack_max = 25000000</code>
<code>#net.ipv4.netfilter.ip_conntrack_max=25000000</code>
<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180</code>
<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120</code>
<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60</code>
<code>#net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120</code>
<code>#net.netfilter.nf_conntrack_max = 25000000</code>
<code>#net.netfilter.nf_conntrack_tcp_timeout_established = 180</code>
<code>#net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120</code>
<code>#net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60</code>
<code>#net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120'</code>
<code>sysctl -p ></code><code>/dev/null</code> <code>2>&1</code>
<code>[ `</code><code>grep</code> <code>"net.ipv4.tcp_max_orphans = 16384"</code> <code>/etc/sysctl</code><code>.conf|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] && action </code><code>"kernel set"</code> <code>/bin/true</code> <code>|| action </code><code>"kernel set"</code> <code>/bin/false</code>
<code>#更改預設的ssh服務端口,禁止root使用者遠端連接配接,禁止空密碼連接配接</code>
<code>/bin/cp</code> <code>/etc/ssh/sshd_config</code> <code>/etc/ssh/sshd_config</code><code>.bak</code>
<code>#sed -i 's/\#Port 22/Port 52113/' /etc/ssh/sshd_config</code>
<code>sed</code> <code>-i </code><code>'s/\#PermitRootLogin yes/PermitRootLogin no/'</code> <code>/etc/ssh/sshd_config</code>
<code>sed</code> <code>-i </code><code>'s/\#PermitEmptyPasswords no/PermitEmptyPasswords no/'</code> <code>/etc/ssh/sshd_config</code>
<code>sed</code> <code>-i </code><code>'s/\#UseDNS yes/UseDNS no/'</code> <code>/etc/ssh/sshd_config</code>
<code>#[ `grep "Port 52113" /etc/ssh/sshd_config |wc -l` -ne 0 -a `grep "PermitRootLogin no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "PermitEmptyPasswords no" /etc/ssh/sshd_config|wc -l` -ne 0 -a `grep "UseDNS no" /etc/ssh/sshd_config|wc -l` -ne 0 ] &&action "ssh set" /bin/true || action "ssh set" /bin/false</code>
<code>[ `</code><code>grep</code> <code>"PermitRootLogin no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 -a `</code><code>grep</code> <code>"PermitEmptyPasswords no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 -a `</code><code>grep</code> <code>"UseDNS no"</code> <code>/etc/ssh/sshd_config</code><code>|</code><code>wc</code> <code>-l` -</code><code>ne</code> <code>0 ] &&action </code><code>"ssh set"</code> <code>/bin/true</code> <code>|| action </code><code>"ssh set"</code> <code>/bin/false</code>
<code>#鎖定關鍵系統檔案</code>
<code>chattr +ai </code><code>/etc/passwd</code>
<code>chattr +ai </code><code>/etc/shadow</code>
<code>chattr +ai </code><code>/etc/group</code>
<code>chattr +ai </code><code>/etc/gshadow</code>
<code>chattr +ai </code><code>/etc/inittab</code>
<code>#清空/etc/issue,去除系統及核心版本登陸前的螢幕顯示</code>
<code>/bin/cp</code> <code>/etc/issue</code> <code>/etc/issue</code><code>.bak</code>
<code>></code><code>/etc/issue</code>
<code>[ `</code><code>cat</code> <code>/etc/issue</code><code>|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>0 ] && action </code><code>"/etc/issue set"</code> <code>/bin/true</code> <code>|| action </code><code>"/etc/issue set"</code> <code>/bin/false</code>
自己整理的伺服器安裝後的初始化腳本:
提取密碼:nifa
***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************
本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5897424.html,如需轉載請自行聯系原作者