简单优化 ,未涉及安全优化,如有需求请自行修改脚本实现

  1 #!/bin/bash
2 SysVer=`cat /etc/redhat-release | awk -F'release' '{print $2}' | awk -F'[ .]+' '{print $2}'`
3 NetCnf=`ls /etc/sysconfig/network-scripts/ | grep if | head -1`
4 NetName=`ls /etc/sysconfig/network-scripts/ | grep if | head -1 | awk -F'-' '{print $2}'`
5 NetPath="/etc/sysconfig/network-scripts/"
6 clear
7 echo "#####################################"
8 echo "###### 1、配置网络 ######"
9 echo "###### 2、优化系统 ######"
10 echo "###### 3、命令审计 ######"
11 echo "###### 4、其他功能 ######"
12 echo "#####################################"
13 read -p "Please Input Number (1/2/3) :" Nmb
14 if [ ! $Nmb == 1 ] && [ ! $Nmb == 2 ] && [ ! $Nmb == 3 ]
15 then
16 echo -e "\033[41;33;5m Input ERROR,you Can only enter 1 or 2 or 3 \033[0m"
17 exit 110
18 fi
19
20 Jdt(){
21 echo "准备中..."
22 i=0
23 str=""
24 arr=("|" "/" "-" "\\")
25 while [ $i -le 20 ]
26 do
27 let index=i%4
28 let indexcolor=i%8
29 let color=30+indexcolor
30 let NUmbER=$i*5
31 printf "\e[0;$color;1m[%-20s][%d%%]%c\r" "$str" "$NUmbER" "${arr[$index]}"
32 sleep 0.1
33 let i++
34 str+='+'
35 done
36 printf "\n"
37 echo "正在执行...稍候!"
38 }
39
40 PanDuan(){
41 if [ ! $? -eq 0 ]
42 then
43 echo -e "\033[41;33;5m ERROR,Please To Check \033[0m"
44 exit 110
45 fi
46 }
47
48 C6NetWork(){
49 cat > $NetPath$NetCnf << END
50 DEVICE=$NetName
51 TYPE=Ethernet
52 ONBOOT=yes
53 NM_CONTROLLED=yes
54 BOOTPROTO=static
55 IPADDR=$Ipa
56 NETMASK=$Ntm
57 GATEWAY=$Gtw
58 DNS1=114.114.114.114
59 DNS2=223.5.5.5
60
61 END
62
63 service NetworkManager stop >/dev/null 2>&1
64 chkconfig NetworkManager off >/dev/null 2>&1
65 chkconfig network on >/dev/null 2>&1
66 Jdt
67 echo -e "\033[46;35;5m[ ## Network configuration succeeded ## ]\033[0m"
68 echo -e "\033[46;35;5m[ ##### Please restart the server ##### ]\033[0m"
69 }
70
71 C7NetWork(){
72 cat > $NetPath$NetCnf << EOF
73 TYPE=Ethernet
74 PROXY_METHOD=none
75 BROWSER_ONLY=no
76 BOOTPROTO=static
77 DEFROUTE=yes
78 IPV4_FAILURE_FATAL=no
79 NAME=$NetName
80 DEVICE=$NetName
81 ONBOOT=yes
82 IPADDR=$Ipa
83 NETMASK=$Ntm
84 GATEWAY=$Gtw
85 DNS1=223.5.5.5
86 DNS2=114.114.114.114
87
88 EOF
89
90 systemctl stop NetworkManager >/dev/null 2>&1
91 systemctl disable NetworkManager >/dev/null 2>&1
92 systemctl enable network.service >/dev/null 2>&1
93 Jdt
94 echo -e "\033[40;35;5m[ ## Network configuration succeeded ## ]\033[0m"
95 echo -e "\033[40;35;5m[ ##### Please restart the server ##### ]\033[0m"
96 }
97
98 OptSSH(){
99 echo "#########################################################"
100 echo -e "\033[40;34;5m[ 配置SSH 端口 关闭DNS 反向解析 ]\033[0m"
101 echo -e "\033[40;34;5m[ 关闭此终端后 请使用新SSH端口:$Pt 进行登陆 原端口失效 ]\033[0m"
102 read -p "Please enter the SSH port :" Pt
103 Jdt
104 sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
105 sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
106 sed -i "s/#Port 22/Port $Pt/" /etc/ssh/sshd_config
107 sed -i "s/^Port.*/Port $Pt/g" /etc/ssh/sshd_config
108 sed -i 's/#PrintMotd yes/PrintMotd yes/' /etc/ssh/sshd_config
109 case $SysVer in
110 6)
111 service sshd restart >/dev/null 2>&1
112 PanDuan
113 ;;
114 7)
115 systemctl restart sshd >/dev/null 2>&1
116 PanDuan
117 ;;
118 *)
119 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
120 exit 110
121 ;;
122 esac
123 }
124
125
126 OffIPv6(){
127 clear
128 echo "####################################"
129 echo -e "\033[46;34;5m[ Shutdown IpV6 关闭IPv6 ]\033[0m"
130 Jdt
131 sed -i '/.*net-pf-10.*/d' /etc/modprobe.conf
132 sed -i '/.*ipv6.*/d' /etc/modprobe.conf
133 echo "alias net-pf-10 off" >> /etc/modprobe.conf
134 echo "alias ipv6 off" >> /etc/modprobe.conf
135 }
136
137
138 OffSE(){
139 clear
140 echo "####################################"
141 echo -e "\033[40;34;5m[ Shutdown selinux ]\033[0m"
142 Jdt
143 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
144 setenforce 0 >/dev/null 2>&1
145 }
146
147
148 OFFfirewalld(){
149 clear
150 echo "####################################"
151 echo -e "\033[40;34;5m[ Shutdown Firewalld ]\033[0m"
152 Jdt
153
154 case $SysVer in
155 6)
156 service iptables stop >/dev/null 2>&1
157 chkconfig iptables off >/dev/null 2>&1
158 ;;
159 7)
160 systemctl stop firewalld >/dev/null 2>&1
161 systemctl disable firewalld >/dev/null 2>&1
162 ;;
163 *)
164 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
165 exit 110
166 ;;
167 esac
168 }
169
170
171 TimeLock(){
172 clear
173 echo "####################################"
174 echo -e "\033[40;34;5m[ Configure TimeLock ]\033[0m"
175 Jdt
176 sed -i '/.*ntpdate.*/d' /var/spool/cron/root
177 echo "*/5 * * * * /usr/sbin/ntpdate 202.112.31.197 > /dev/null 2>&1" >> /var/spool/cron/root
178 case $SysVer in
179 6)
180 service crond restart >/dev/null 2>&1
181 ;;
182 7)
183 systemctl restart crond >/dev/null 2>&1
184 ;;
185 *)
186 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
187 exit 110
188 ;;
189 esac
190 }
191
192
193 FileLimitsConf(){
194 cat >> /etc/security/limits.conf << COMMENTBLOCK
195 * soft nofile 102400
196 * hard nofile 102400
197 * soft nproc 102400
198 * hard nproc 102400
199 COMMENTBLOCK
200 }
201
202 LimitsFile(){
203 clear
204 echo "#####################################"
205 echo -e "\033[40;34;5m[ Configure LimitNumber ]\033[0m"
206 Jdt
207 shu1=`cat /etc/rc.local | grep ulimit | wc -l`
208 shu2=`cat /etc/security/limits.conf | grep nofile | wc -l`
209 if [ $shu1 -lt 1 ]
210 then
211 echo "ulimit -SHn 102400" >> /etc/rc.local
212 fi
213
214 if [ $shu2 -lt 2 ]
215 then
216 FileLimitsConf
217 fi
218
219 case $SysVer in
220 6)
221 sed -i 's/1024$/102400/' /etc/security/limits.d/20-nproc.conf
222 ;;
223 7)
224 sed -i 's/4096$/20480/' /etc/security/limits.d/20-nproc.conf
225 sed -i 's/^#DefaultLimitNOFILE=.*/DefaultLimitNOFILE=100000/g' /etc/systemd/system.conf
226 sed -i 's/^#DefaultLimitNPROC=.*/DefaultLimitNPROC=100000/g' /etc/systemd/system.conf
227 ;;
228 *)
229 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
230 exit 110
231 ;;
232 esac
233
234 }
235
236
237 KernelFile(){
238 clear
239 echo "#####################################"
240 echo -e "\033[40;34;5m[ Optimize Kernel ]\033[0m"
241 Jdt
242 true > /etc/sysctl.conf
243 cat >> /etc/sysctl.conf << EIZ
244 net.ipv4.ip_forward = 0
245 net.ipv4.conf.default.rp_filter = 1
246 net.ipv4.conf.default.accept_source_route = 0
247 net.ipv4.conf.all.secure_redirects = 0
248 kernel.sysrq = 0
249 kernel.core_uses_pid = 1
250 net.ipv4.tcp_syncookies = 1
251 kernel.msgmnb = 65536
252 kernel.msgmax = 65536
253 kernel.shmmax = 68719476736
254 kernel.shmall = 4294967296
255 net.ipv4.tcp_max_tw_buckets = 6000
256 net.ipv4.tcp_sack = 1
257 net.ipv4.tcp_window_scaling = 1
258 net.ipv4.tcp_rmem = 4096 87380 4194304
259 net.ipv4.tcp_wmem = 4096 16384 4194304
260 net.core.wmem_default = 8388608
261 net.core.rmem_default = 8388608
262 net.core.rmem_max = 16777216
263 net.core.wmem_max = 16777216
264 net.core.netdev_max_backlog = 262144
265 net.core.somaxconn = 20480
266 net.ipv4.tcp_max_orphans = 3276800
267 net.ipv4.tcp_max_syn_backlog = 262144
268 net.ipv4.tcp_timestamps = 0
269 net.ipv4.tcp_synack_retries = 2
270 net.ipv4.tcp_syn_retries = 2
271 net.ipv4.tcp_tw_recycle = 0
272 net.ipv4.tcp_tw_reuse = 1
273 net.ipv4.tcp_mem = 94500000 915000000 927000000
274 net.ipv4.tcp_fin_timeout = 1
275 net.ipv4.tcp_keepalive_time = 30
276 net.ipv4.tcp_keepalive_probes=3
277 net.ipv4.tcp_orphan_retries=3
278 net.ipv4.ip_local_port_range = 1024 65500
279
280 EIZ
281
282 /sbin/sysctl -p
283 echo "内核优化的具体参数见上 如需修改请自行修改/etc/sysctl.conf文件"
284 echo "内核优化的具体参数见上 如需修改请自行修改/etc/sysctl.conf文件"
285 echo "内核优化的具体参数见上 如需修改请自行修改/etc/sysctl.conf文件"
286
287 }
288
289
290 RootEmail(){
291 clear
292 echo "#######################################################"
293 echo -e "\033[40;34;5m[ 禁止 You have new mail in /var/spool/mail/root 提示 ]\033[0m"
294 Jdt
295 sed -i '/.*MAILCHECK/d' /etc/profile
296 echo "unset MAILCHECK">> /etc/profile
297 source /etc/profile
298 }
299
300
301 #BieMing(){
302 #
303 #}
304
305 HisTory(){
306 #history modify
307 file_path="/var/log/Command"
308 file_name="Command.log"
309 ProFile=`cat /etc/profile | grep HISTORY_FILE | wc -l`
310 ComMand=`cat /var/spool/cron/root | grep history.sh | wc -l`
311
312 Group1(){
313 touch $file_path/$file_name
314 chown -R nobody:nobody $file_path
315 chmod 001 $file_path
316 chmod 002 $file_path/$file_name
317 chattr +a $file_path/$file_name
318 }
319 Group2(){
320 cat >> /etc/profile << EPP
321 export HISTORY_FILE=$file_path/$file_name
322 export PROMPT_COMMAND='{ date "+%y-%m-%d %T ## \$(who am i |awk "{print \\\$1,\\\$2,\\\$5}") ## \$(whoami) ## \$(history 1 | { read x cmd; echo "\$cmd"; })"; } >>\$HISTORY_FILE'
323 EPP
324 }
325
326 if [ ! -d $file_path ]
327 then
328 mkdir -p $file_path
329 Group1
330 else
331 if [ ! -f $file_path/$file_name ]
332 then
333 Group1
334 fi
335 fi
336 if [ $ProFile -lt 1 ]
337 then
338 Group2
339 else
340 sed -i '/.*HISTORY_FILE.*/d' /etc/profile
341 Group2
342 fi
343 if [ ! -f $file_path/history.sh ]
344 then
345 cat >> $file_path/history.sh << EOF
346 #!/bin/bash
347
348 #Time=\`date +%Y%m%d%H -d '-1 hours'\`
349 Time=\`date +%Y%m%d%H\`
350 logs_path="$file_path/"
351 logs_name="$file_name"
352 new_file="\$logs_path\$logs_name-\$Time"
353 old_file=\`find \$logs_path -mtime +30 -type f -name "Command.*"\`
354 chattr -a \$logs_path\$logs_name
355 mv \$logs_path\$logs_name \$new_file
356 chattr +a \$new_file
357 touch \$logs_path\$logs_name
358 chown -R nobody:nobody \$logs_path\$logs_name
359 chmod -R 002 \$logs_path\$logs_name
360 chattr +a \$logs_path\$logs_name
361 if [ ! -z \$old_file ]
362 then
363 echo "delet \$old_file \$Time" >> /var/log/messages
364 chattr -a \$old_file
365 rm -rf \$old_file
366 fi
367 EOF
368 chmod 100 $file_path/history.sh
369 fi
370 if [ $ComMand -lt 1 ]
371 then
372 echo "30 10 * * 6 /bin/bash $file_path/history.sh > /dev/null 2>&1" >> /var/spool/cron/root
373 fi
374 case $SysVer in
375 6)
376 service crond restart >/dev/null 2>&1
377 ;;
378 7)
379 systemctl restart crond >/dev/null 2>&1
380 ;;
381 *)
382 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
383 exit 110
384 ;;
385 esac
386 source /etc/profile
387 if [ $? -eq 0 ]
388 then
389 echo "###########################################"
390 echo -e "\033[40;31;5m 配置完成 命令审计文件位于:/var/log/Command/Command.log \033[0m"
391 else
392 echo -e "\033[41;33;5m ERROR,Please To Check \033[0m"
393 exit 110
394 fi
395 }
396
397 case $Nmb in
398 1)
399 rm -rf /etc/udev/rules.d/70-persistent-net.rules >/dev/null 2>&1
400 echo "###########################################"
401 read -p "Please Input IPAddress :" Ipa
402 read -p "Please Input Netmask :" Ntm
403 read -p "Please Input Gateway :" Gtw
404 echo -e "\033[40;34;5m[ 配置中请稍候... 完成后请使用新地址 $Ipa 进行SSH登陆 ]\033[0m"
405 echo "###########################################"
406 case $SysVer in
407 6)
408 C6NetWork
409 ;;
410 7)
411 C7NetWork
412 ;;
413 *)
414 echo -e "\033[41;33;5m System Version Error,Scripts only apply to Centos 6 and 7 versions \033[0m"
415 exit 110
416 ;;
417 esac
418 ;;
419 2)
420 echo -e "\033[40;31;5m以下配置均可在进度条处 有10秒时间 按Ctrl+C结束 请按需优化\033[0m"
421 OptSSH
422 PanDuan
423 OffIPv6
424 PanDuan
425 OffSE
426 OFFfirewalld
427 PanDuan
428 TimeLock
429 PanDuan
430 LimitsFile
431 PanDuan
432 RootEmail
433 PanDuan
434 KernelFile
435 PanDuan
436 echo " #####################################"
437 echo " #####################################"
438 echo " 优化已完成 本次优化内容有:"
439 echo " 1、优化SSH服务"
440 echo " 2、关闭IPv6服务"
441 echo " 3、关闭Selinux 机制"
442 echo " 4、关闭iptables/firewalld"
443 echo " 5、设置时间同步"
444 echo " 6、优化内核参数"
445 echo " 7、关闭邮件提示"
446 ;;
447 3)
448 echo -e "\033[46;31;5m 此审计会记录30天内所有终端执行过的所有命令 \033[0m"
449 Jdt
450 HisTory
451 ;;
452 *)
453 echo -e "\033[41;33;5m Error, please check the first line variable \033[0m"
454 exit 110
455 ;;
456 esac

最新文章

  1. [转]SpringMVC拦截器简单教程
  2. ios-自定义alertView提示框
  3. linux strace
  4. So easy Webservice 7.CXF 发布WebService
  5. Nutch配置:nutch-default.xml详解
  6. PDO操作mysql数据库(一)
  7. ASP 调用dll(VB)及封装dll实例
  8. 关于slideup和slidedown 鼠标多次滑过累积的动画效果
  9. 克鲁斯卡尔(Kruskal)算法
  10. Git客户端(Windows系统)的使用(Putty)(转)
  11. Salesforce使用truncate清空数据库
  12. C++Primer学习——各种运算符
  13. haproxy快速安装
  14. [Swift]LeetCode163. 缺失区间 $ Missing Ranges
  15. Mac上一条命令搭建web服务器
  16. python调用数据返回字典dict数据的现象2
  17. 数组去重--ES5和ES6
  18. 【BZOJ2242】计算器(BSGS,快速幂)
  19. 快速做ssh免密钥登陆
  20. UICollectionView的常用方法

热门文章

  1. ThreadPoolExecutor(线程池)的参数
  2. Docker创建Docker-Registry-私服
  3. 解析和遍历一个HTML文档
  4. [SWMM]出现问题及解决
  5. java字符串(String和StringBuilder)
  6. jQuery中ajax请求的六种方法(三、四):$.getJSON()方法
  7. ES6扩展——数值扩展
  8. 类的基础语法阅读【Python3.8官网文档】
  9. (三)羽夏看C语言——进制
  10. 记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知