1. 程式人生 > >Centos 7初始化腳本

Centos 7初始化腳本

lin sshd limits The face cloc 目錄 tin 通用

今天跟大家分享一個我自己寫的Linux初始化腳本,自認為寫的不是很好。希望看到這篇文章的你,能暫時停留下你的腳步,給些修改意見,或者有什麽需要補充的地方都可以提出來,大家共同進步,謝謝!
此腳本主要功能:1、關閉一些用不到的服務;2、關閉selinux;3、創建分區、格式化、掛載;4、設置一個ip命令別名;5、創建一個普通用戶,並禁止root用戶登陸;6、修改limit參數;7、配置時間同步;8、修改ssh端口號;9、初始化firewalld防火墻。

#!/bin/bash
#modify some service demeon   # 關閉不需要用到的一些服務
systemctl disable acpid
systemctl disable ip6tables
systemctl disable mcelogd
systemctl disable mdmonitor
systemctl disable netfs
systemctl disable nfslock
systemctl disable openct
systemctl disable postfix 
systemctl disable rpcbind
systemctl disable rpcgssd
systemctl disable rpcidmapd
systemctl disable auditd
systemctl disable haldaemon
systemctl disable lldpad
systemctl disable atd
systemctl disable kdump

#Close selinux  # 關閉selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
sed -i ‘s/SELINUXTYPE=targeted/#&/‘ /etc/selinux/config
setenforce 0

#Create new partitions   # 創建分區,並格式化及掛載
NEWDISK="/dev/xvdb"
FDK=`fdisk -l $NEWDISK | grep $NEWDISK | wc -l`
if [ $FDK -eq 0 ] ; then
  echo "沒有$NEWDISK設備,無法創建分區!"
elif [ $FDK -eq 1 ] ; then
  fdisk $NEWDISK << EOF
n
p
1

w
EOF
  partprobe
  sleep 2
  file ${NEWDISK}1
  if [ $? -eq 0 ] ; then
    mkfs -t ext4 ${NEWDISK}1
    if [ $? -eq 0 ] && [ ! -d /data ] ; then
      mkdir /data
      mount ${NEWDISK}1 /data
      FST=`cat /etc/fstab | grep ${NEWDISK}1 | wc -l`
      if [ $FST -eq 0 ] ; then
        echo "${NEWDISK}1 /data ext4 defaults 0 0" >> /etc/fstab
        echo "成功創建${NEWDISK}1分區,已成功格式化,並已掛載至/data下,已添加至/etc/fstab開機掛載!"
      else
        echo "成功創建${NEWDISK}1分區,已成功格式化,並已掛載至/data下,請檢查/etc/fstab文件是否已添加開機掛載!"
      fi
    else
      echo "格式化${NEWDISK}1失敗;或者/data目錄已存在,掛載失敗!"
    fi
  else
    echo "沒有找到${NEWDISK}1分區,未格式化!"
  fi
else
  echo "${NEWDISK}1分區已存在,無須再創建!"
fi

#modify bashrc   # 設置一個ip命令別名,用於查看本地IP地址
cat << EOF >>/etc/bashrc
alias ip=‘/sbin/ifconfig | grep ‘\‘‘inet ‘\‘‘ | awk ‘\‘‘{print $2}‘\‘‘ | sed -e ‘\‘‘/127\.0\.0\.1/d‘\‘‘‘
EOF

#Create an ordinary user   # 創建一個xuad用戶,並允許其用sudo命令時不需要輸入密碼,並禁止root用戶登陸
NEWUSER="xuad"
PASS="JKbL*u#E%317Y8c"
id $NEWUSER
if [ $? -eq 0 ] ; then
  echo "$NEWUSER賬戶已存在,無法創建!"
else
  useradd $NEWUSER
  echo $PASS | passwd --stdin $NEWUSER
  if [ $? -eq 0 ] ; then
    echo "$NEWUSER賬戶創建成功!"
    sed -i "/^root/a\$NEWUSER\tALL=(ALL)\tNOPASSWD: ALL" /etc/sudoers
    sed -i ‘/^PermitRootLogin/s/^/#/g‘ /etc/ssh/sshd_config
    sed -i ‘/PermitRootLogin/a\PermitRootLogin no‘ /etc/ssh/sshd_config
  else
    echo "$NEWUSER賬戶創建失敗!"
  fi
fi

#system settings   # 修改limit參數
cat << EOF >>/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
EOF

#設置開機自動同步時間
cat << EOF >>/etc/rc.d/rc.local
/usr/sbin/ntpdate ntp.xuadup.net && hwclock -w
EOF

#modify ntp server   # 每天早上6點自動同步時間
echo "00 */6 * * * /usr/sbin/ntpdate ntp.xuadup.net && hwclock -w">/tmp/ntpcron.txt;crontab /tmp/ntpcron.txt

#modify ssh port   # 修改ssh端口號
sed -i ‘/Port 22/s/^/#/g‘ /etc/ssh/sshd_config
sed -i ‘/Port 22/a\Port 5210‘ /etc/ssh/sshd_config
sed -i ‘/^GSSAPI/s/^/#/g‘ /etc/ssh/sshd_config
sed -i ‘/GSSAPI options/a\GSSAPIAuthentication no‘ /etc/ssh/sshd_config

#service sshd restart   # 重啟sshd服務,並執行防火墻策略
if [ $? -eq 0 ] ; then
  systemctl restart sshd
  sh ./firewalld_linux
  echo "sshd服務重啟成功,遠程登陸端口已設置為55210"
else
  echo "sshd服務配置有問題,請檢查!"
fi

firewalld防火墻腳本如下:

#!/bin/bash
systemctl stop firewalld
\cp -p /usr/lib/firewalld/zones/drop.xml /etc/firewalld/zones/
systemctl start firewalld
firewall-cmd --set-default-zone=drop
firewall-cmd --permanent --zone=drop --change-interface=eth0
firewall-cmd --permanent --zone=drop --add-protocol=icmp
firewall-cmd --permanent --zone=drop --add-masquerade
firewall-cmd --permanent --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" port protocol="tcp" port="5210" accept"
firewall-cmd --permanent --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.206" port protocol="tcp" port="5210" accept"
firewall-cmd --permanent --zone=drop --add-rich-rule="rule family="ipv4" source address="116.226.230.115" port protocol="tcp" port="8023" accept"
firewall-cmd --reload

Centos 7初始化腳本