#!/bin/bash

# author wangqd

# description:this is a centos6.7 optimization script

# processname:  升级系统,精简服务,安装基本配置,记录bash执行时间,安全配置,su加固,ssh优化,iptables设置,时间同步 系统优化

#检查是否为root用户;

if [ $(id -u) != "0" ];then

echo "运行此脚本需要root权限!"

fi

yum update -y >> /etc/null

if [ $? = "0" ];then

echo "系统暂时无需更新"

fi

#精简服务

# 关闭ipv6防火墙

chkconfig ip6tables off

if [ $? = "0" ];then

echo "设置ipv6防火墙开机不自启成功"

else

echo "设置ipv6防火墙开机不自启成功失败"

fi

# 关闭iscsi服务

chkconfig iscsi off

if [ $? = "0" ];then

echo "设置iscsi服务开机不自启成功"

else

echo "设置iscsi服务开机不自启失败"

fi

# 关闭iscsi相关服务

chkconfig iscsid off

if [ $? = "0" ];then

echo "设置iscsi相关服务开机不自启成功"

else

echo "设置iscsi相关服务开机不自启失败"

fi

# 关闭NFS,smaba和NetWare网络文件系统

chkconfig netfs off

if [ $? = "0" ];then

echo "设置NFS,smaba和NetWare网络文件系统开机不自启成功"

else

echo "设置NFS,smaba和NetWare网络文件系统开机不自启失败"

fi

# linux的审计功能

chkconfig auditd off

if [ -f "/var/lock/subsys/auditd" ];then

echo "linux的审计功能"

else

echo "linux的审计功能未开启"

fi

# 关闭TCP/IP网络共享文件的协议的NFS的文件锁功能

if [ -f "/var/lock/subsys/nfslock" ];then

chkconfig nfslock off

echo "关闭TCP/IP网络共享文件的协议的NFS的文件锁功能"

else

echo "TCP/IP网络共享文件的协议的NFS的文件锁功能未开启"

fi

# 关闭 NFS v4

if [ -f "/var/lock/subsys/rpcgssd" ];then

chkconfig rpcgssd off

echo "关闭 NFS-rpcgssd"

else

echo "NFS-rpcgssd服务未开启"

fi

# 关闭RPC服务

if [ -f "/var/lock/subsys/rpcbind" ];then

chkconfig rpcbind off

echo "关闭RPC rpcbind服务"

else

echo "RPC服务未开启"

fi

# 关闭 NFS v4

if [ -f "/var/lock/subsys/rpcidmapd" ];then

chkconfig rpcidmapd off

echo "关闭 rpcidmapd"

else

echo "rpcidmapd服务未开启"

fi

# 关闭系統对Logical Volume Manager 逻辑磁区的支持

if [ -f "/var/lock/subsys/lvm2-monitor" ];then

chkconfig lvm2-monitor off

echo "关闭系統对Logical Volume Manager 逻辑磁区的支持"

else

echo "系統对Logical Volume Manager 逻辑磁区的支持未开"

fi

# 关闭邻近发现协议

if [ -f "/var/lock/subsys/lldpad" ];then

chkconfig lldpad off

echo "关闭邻近发现协议"

else

echo "邻近发现协议未开启"

fi

#安装基本组件

# setuptool Python的 distutilsde工具的增强工具(py2.3.5以上 64位py2.4)

# ntsysv 设置系统的各种服务

# system-config-firewall-tui 命令行用户接口(TUI)的防火墙客户端

# system-config-network-tui  安装Fedora网络配置的工具

yum install -y setuptool ntsysv system-config-firewall-tui system-config-network-tui cronie wget vim unzip openssh-clients screen rsync ftp telnet >> /etc/null

if [ $? = "0" ];then

echo "基本组件安装完成"

else

echo "基本组件已安装过"

fi

#记录每次bash命令的执行时间

time="HISTTIMEFORMAT=\"%Y-%m-%d\ %H:%M:%S\""

grep "$time" /etc/profile >> /etc/null

if [ $? = "0" ];then

echo "记录每次bash命令的执行时间已经做过"

else

line=$(sed -n "/export\ PATH\ USER/=" /etc/profile| tail -n1)

sed -i "${line}a HISTTIMEFORMAT=\"%Y-%m-%d\ %H:%M:%S\"\nexport\ HISTTIMEFORMAT"  /etc/profile

echo "记录每次bash命令的执行时间已经成功"

fi

#安全配置

grep "^SELINUX=disabled" /etc/selinux/config

if [ $? = "0" ];then

echo "已经做过安全配置"

else

selinux1=$(grep "^SELINUX=enforcing" /etc/selinux/config)

sed -i "s/$selinux1/SELINUX=disabled/" /etc/selinux/config

echo "服务器安全配置已经完成"

fi

#su加固

grep "^auth" /etc/pam.d/su|grep "pam_wheel.so use_uid"

if [ $? = "0"];then

echo "su 已加固"

else

line2=$(sed -n "/^auth/=" /etc/pam.d/su|tail -1 )

sed -i "${line2}a auth\ \ \ \ \ \ required\ \ \ \ pam_wheel.so\ use_uid" /etc/pam.d/su

echo "su加固成功"

fi

#ssh 优化

#port 端口

grep "^Port[[:space:]]" /etc/ssh/sshd_config|grep "58022"

if [ $? = "0" ];then

echo "ssh端口号设置正确修改"

else

check1=$(grep "^#Port" /etc/ssh/sshd_config)

sline1=$(sed -n "/$check1/=" /etc/ssh/sshd_config)

sed  -i "/^Port/d" /etc/ssh/sshd_config

sed  -i "${sline1}a Port\ 58022" /etc/ssh/sshd_config

echo "SSH已改为58022"

fi

#不允许用root进行登录

grep "^PermitRootLogin[[:space:]]" /etc/ssh/sshd_config|grep "no"

if [ $? = "0" ];then

echo "ssh不允许root登录功能已设置"

else

check2=$(grep "^#PermitRootLogin[[:space:]]" /etc/ssh/sshd_config)

sline2=$(sed -n "/$check2/=" /etc/ssh/sshd_config)

sed -i "/^PermitRootLogin/d" /etc/ssh/sshd_config

sed -i "${sline2}a PermitRootLogin\ no" /etc/ssh/sshd_config

echo "不允许root登录ssh设置成功"

fi

#不允许空密码登录

grep "^PermitEmptyPasswords[[:space:]]" /etc/ssh/sshd_config|grep "no"

if [ $? = "0" ];then

echo "请查看ssh不允许空密码登录已被设置"

else

check3=$(grep "^#PermitEmptyPasswords[[:space:]]" /etc/ssh/sshd_config)

sline3=$(sed -n "/$check3/=" /etc/ssh/sshd_config)

sed -i "/^PermitEmptyPasswords/d" /etc/ssh/sshd_config

sed -i "${sline3}a PermitEmptyPasswords\ no" /etc/ssh/sshd_config

echo "ssh不允许空密码登录设置成功"

fi

#禁用DNS

grep "^GSSAPIAuthentication[[:space:]]" /etc/ssh/sshd_config|grep "no"

if [ $? = "0" ];then

echo "禁用DNS已被设置"

else

check4=$(grep "#GSSAPIAuthentication[[:space:]]" /etc/ssh/sshd_config)

sed -i "/^GSSAPIAuthentication/d" /etc/ssh/sshd_config

sline4=$(sed -n "/$check4/=" /etc/ssh/sshd_config)

sed -i "${sline4}c GSSAPIAuthentication\ no" /etc/ssh/sshd_config

echo "禁用DNS设置成功"

fi

#禁用UseDNS

grep "^UseDNS[[:space:]]" /etc/ssh/sshd_config|grep "no"

if [ $? = "0" ];then

echo "禁用UseDNS已被设置"

else

check5=$(grep "^#UseDNS[[:space:]]" /etc/ssh/sshd_config)

sline5=$(sed -n "/$check5/=" /etc/ssh/sshd_config)

sed -i "/^UseDNS/d" /etc/ssh/sshd_config

sed -i "${sline5}a UseDNS\ no" /etc/ssh/sshd_config

echo "禁用UseDNS设置成功"

fi

#AllowUsers

sed -i "/^AllowUsers/d" /etc/ssh/sshd_config

if [ $? = "0" ];then

echo "SSH的其他允许登录的用户已被删除"

else

echo "ssh 无其他允许登录的用户"

fi

AU=$(sed -n "/^#/=" /etc/ssh/sshd_config|tail -1)

sed -i "${AU}a AllowUsers\ $1" /etc/ssh/sshd_config

if [ $? = "0" ];then

echo "AllowUsers已设置用户成功"

else

echo "AllowUsers设置用户失败"

fi

#设置防火墙

iptab="-A\ INPUT\ -m\ state\ --state\ NEW\ -m\ tcp\ -p\ tcp\ --dport\ 58022\ -j\ ACCEPT"

grep "58022" /etc/sysconfig/iptables

if [ $? != 0 ];then

line8=$(sed -n "/22/=" /etc/sysconfig/iptables|head -1)

sed -i "${line8}a $iptab" /etc/sysconfig/iptables

echo "添加58022端口成功"

#line9=$(sed -n "/lo/=" /etc/sysconfig/iptables|head -1)

#sed -i "${line9}a $iptab" /etc/sysconfig/iptables

else

echo "58022 已被设置请查看"

fi

/etc/init.d/sshd restart

if [ $? = "0" ];then

echo "sshd已重启"

fi

/etc/init.d/iptables restart

if [ $? = "0" ];then

echo "iptables"

fi

#时间同步

yum install ntp -y >> /etc/null

if [ $? = "0" ];then

echo "ntp服务已被安装"

fi

/usr/sbin/ntpdate time.nist.gov

if [ $? = "0" ];then

echo "本地时间一同步时间服务器"

fi

/sbin/hwclock --systohc

if [ $? = "0" ];then

echo "系统时间已同步到硬件"

fi

#将时间同步写入计划日志

line10=$(sed -n "/^#/=" /etc/crontab|tail -1)

sed -i "${line10}a 5\ */6\ *\ *\ *\ /usr/sbin/ntpdate time.nist.gov\ >\ /dev/null\ 2>&1" /etc/crontab

if [ $? = "0" ];then

echo "时间同步已写入计划日志"

fi

#优化内核参数

line11=$(sed -n "/^#/=" /etc/sysctl.conf|tail -1)

sed -i "${line11}a net.ipv4.tcp_max_syn_backlog\ =\ 65536\nnet.core.netdev_max_backlog\ =\ 32768\nnet.core.somaxconn\ =\ 32768\nnet.core.wmem_default\ =\ 8388608\nnet.core.rmem_default\ =\ 8388608\nnet.core.rmem_max\ =\ 16777216\nnet.core.wmem_max\ =\ 16777216net.ipv4.tcp_timestamps\ =\ 0\nnet.ipv4.tcp_synack_retries\ =\ 2\nnet.ipv4.tcp_syn_retries\ =\ 2\nnet.ipv4.tcp_tw_recycle\ =\ 1\n#net.ipv4.tcp_tw_len\ =\ 1\nnet.ipv4.tcp_tw_reuse\ =\ 1\nnet.ipv4.tcp_mem\ =\ 94500000\ 915000000\ 927000000\nnet.ipv4.tcp_max_orphans\ =\ 3276800\nnet.ipv4.ip_local_port_range\ =\ 1024\ 65535" /etc/sysctl.conf

if [ $? = "0" ];then

echo "系统已经优化完成"

fi

#创建wheel用户

useradd -G wheel $1

echo "$2" | passwd $1 --stdin > /dev/null 2>&1

if [ $? = "0" ];then

echo "user is created!"

fi

echo "SU_WHEEL_ONLY yes" >> /etc/login.defs

#只允许wheel用户su到root

if [ $? = "0" ];then

echo "只允许wheel用户su到root执行成功"

else

echo "只允许wheel用户su到root执行失败请查看"

fi

init 6

转载于:https://blog.51cto.com/9267277/1702462

CentOS6.7系统优化加强牢固脚本相关推荐

  1. 一键系统优化15项脚本

    一键系统优化15项脚本,适用于Centos6.x 按 Ctrl+C 复制代码 #!/bin/sh ################################################ #A ...

  2. CENTOS6 X64 LAMP+GD SHELL脚本

    客户生产环境是centos6.5 x64位操作系统,需要往上面部署php网站,并开启GD库功能.为此,自己写了一个脚本,提高工作效率. 安装过程中,最为诡异的还是php.ini文件,编译完成后将php ...

  3. linux卸载zabbix数据库,结合宝塔linux面板 centos6 7一键zabbix安装脚本!

    zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.铁网维就不做过多的介绍,详情可以百度了解! 本次铁网维结合宝塔linux面板的环境来安装zabbix3.0. ...

  4. Centos6.5下通过shell脚本快速安装samba服务器

    使用方法如下: 上传脚本到linux服务器授权 脚本如下: #!/bin/sh yum -y install samba samba-client echo -e "thinkive\nth ...

  5. CentOS7.2最小化安装后系统优化

    系统初始化技术的演变 1.sysvinit技术 (1)Linux系统的第一个进程(pid=1)为init: Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 b ...

  6. 查看Linux服务器网卡流量小脚本shell和Python各一例

    有时我们需要较为实时的查看服务器上的网卡流量,这里我写了两个小脚本,一个用shell(先写的,一次只能查看一个网卡),另一个用Python(后写的,一次可查看多个网卡).脚本中都用了while tru ...

  7. Linux Shell脚本_关闭防火墙

    ① 脚本编写 创建脚本 vim closeFirewall.sh 添加脚本内容如下: if egrep "7.[0-9]" /etc/redhat-release &> ...

  8. Linux Shell脚本专栏_服务器系统配置初始化脚本_01

    文章目录 一.服务器系统配置初始化 1. 设置时区并同步时间 ① 脚本编写 ②脚本说明 2. 禁用selinux ① 脚本编写 ②脚本说明 3. 关闭防火墙 ① 脚本编写 ②脚本说明 4. 历史命令显 ...

  9. 自建DHCP TFTP服务 用PXE启动实现无人值守安装Centos6

    下面是自己制作的PXE安装Centos6的环境已经配置脚本 #!/bin/bash ########################################################## ...

  10. Centos安装Open***自动化安装脚本

    Centos 安装Open***脚本实现内网跳转 请注意:脚本环境需求 系统:centos 6 -7 环境:两块网卡 ,一块内网,一块外网 操作脚本时需注意 系统 环境 环境 Centos7 内网外网 ...

最新文章

  1. PAT(甲级)2021年春季考试 7-1 Arithmetic Progression of Primes
  2. request.getRemoteAddr()和request.getRemoteHost()
  3. python爬虫毕业设计题目-Python爬虫面试题170道:2019版【1】
  4. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】
  5. Apache Camel简介
  6. 前端学习(1782):前端调试之canvas简介
  7. python 创建一个空向量_Python之Django系列-创建第一个应用-5
  8. 和feign的区别_Feign的传参研究
  9. rec删除xposed_Xposed框架对应各系统版本的下载与卸载
  10. 60V降压芯片|60V转5V-12伏POE电源芯片
  11. win10安装wget,从此可以更快的下载文件 and windows10 下 zip命令行参数详解
  12. win8用分区助手开不了机处理
  13. 剪切caspase3_Caspase-3活性检测
  14. 鸿蒙os手机评测视频,鸿蒙OS正式发布:荣耀智慧屏首发,一起来体验鸿蒙OS吧
  15. 纽约州立大学环境与林业学院计算机科学专业,纽约州立大学环境科学与林业学院...
  16. 小队pkc++_骑士小队2人金属第一印象
  17. eclipse 不提示错误
  18. 3D建模教程:3DMAX打造下雨的场景!
  19. 中国智能牙刷产业运行态势分析及前景规模调研报告2022-2027年
  20. 【具体到每一步】uniapp打包app生成apk包

热门文章

  1. Android 常用的adb命令
  2. 实现鼠标放上高亮显示,鼠标移出显示原来的颜色
  3. hibernate 批量插入数据
  4. 编写安全代码:小心使用浮点数
  5. Oracle 11g Release 1 (11.1)——自动存储管理(Automatic Storage Management,ASM)
  6. 手机验证码免费10条\java、C#、html....
  7. [Spark]-结构化数据查询之自定义UDAF
  8. 分模块开发创建service子模块——(八)
  9. SPendidCRM:给HK的ImageInfoEntryEditView增加一个checkbox,用于判断特殊类型的PODS记录...
  10. leetcode136只出现一次的数字