Linux系统初始化配置项(centos7)
主机刚安装完系统,会做一些配置上的优化。
修改时区
通过命令将时区设置为亚洲/上海。
timedatectl set-timezone Asia/Shanghai
#centos7 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#centos6
关闭seLinux
修改配置文件
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0
关闭防火墙
生产环境中网络层面会做出一些限制,所以主机基本上不会设置防火墙策略。
systemctl stop firewalld
systemctl disable firewalld
禁止IPV6登陆与修改网卡名称eth0
修改网卡文件名,
mv /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-eth0
修改系统grub参数,
vim /etc/default/grub
#修改以下参数
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0 ipv6.disable=1"
crashkernel=auto:为kdump预留的内存,
net.ifnames=0 biosdevname=0:修改网卡为eth0
ipv6.disable=1:禁止IPV6
grub2-mkconfig -o /boot/grub2/grub.cfg
#重新生成GRUB配置并更新内核,重启后才能生效
重启后ip a查看,网卡名已变为eht0
用户登陆密码设置
vim /etc/login.defs
#修改以下参数
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_MIN_LEN 15
PASS_WARN_AGE 15
添加密码强度策略
vim /etc/pam.d/system-auth
#添加以下策略
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=15 lcredit=-2 ucredit=-2 dcredit=-2 ocredit=-2
retry=3设置新密码时,有三次机会输入;minlen最小长度,lcredit小写字母,ucredit大写字母,dcredit数字,ocredit特殊字符,-2不少于两位。
限制普通用户su权限
vim /etc/pam.d/su
#添加以下策略
auth required pam_wheel.so use_uid
只允许wheel组的用户可以使用su命令,可以把允许使用su的用户的附加组指定为wheel。
密码错误锁定
vim /etc/pam.d/sshd
#添加以下策略
auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=300
普通用户登陆密码错误5次,则用户锁定600秒;root用户则锁定300秒。
设置会话超时时间
vim /etc/profile
#添加以下策略
export TMOUT=1800
优化ssh服务
vim /etc/ssh/sshd_config
#修改以下参数
Port 22
Port 1022 #添加备用端口
PermitRootLogin no #禁止Root直接登陆
MaxAuthTries 6 #可以限制密码暴力破解攻击
GSSAPIAuthentication no
UseDNS no #禁止DNS解析主机名 #修改完重启服务
systemctl restart sshd
禁止热键关机
删除配置文件/usr/lib/systemd/system/ctrl-alt-del.target即可
rm -f /usr/lib/systemd/system/ctrl-alt-del.target
禁止yum 升级内核参数
内核升级有时候会出现不可意料的错误,一般情况不建议升级内核;
vim /etc/yum.conf
#添加以下策略
exclude=kernel*
优化ulimit
limits.conf文件是pam_limits.so的配置文件,对系统访问资源做出保护性限制,限制用户最大文件和进程数;
编辑配置文件
vim /etc/security/limits.conf
#添加一下内容
* soft nofile 655350
* hard nofile 655350
* soft nproc 655360
* hard nproc 655360
zf soft nofile 655350
zf hard nofile 655350
zf soft nproc 655360
zf hard nproc 655360
优化内核参数
sysctl -p 重新加载系统参数
vim /etc/sysctl.conf
#添加以下内容
net.ipv4.tcp_max_tw_buckets = 6000
#允许TIME-WAIT套接字数量的最大值。超过些数字,TIME-WAIT套接字将立刻被清除同时打印警告信息。默认是180000,过多的TIME-WAIT套接字会使webserver变慢 net.core.netdev_max_backlog = 65535
#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数目 net.core.somaxconn = 65535
#该参数用于调节系统同时发起的TCP连接数,该默认值较小,肯那个导致连接超时或重传问题 net.ipv4.tcp_timestamps = 0
#该参数用于设置时间戳,可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种“异常”的数据包 net.ipv4.tcp_synack_retries = 1
#该参数用于设置内核放弃TCP连接之前向客户端发送SYN+ACK包的数量。 net.ipv4.tcp_syn_retries = 1
#该参数的作用与上一个参数类似,设置内核放弃建立连接之前发送SYN包的数量 net.ipv4.tcp_tw_reuse = 1
#1代表允许将状态为TIME-WAIT状态的socket连接重新用于新的连接。 net.ipv4.tcp_fin_timeout = 15
#当服务器主动关闭链接时,socket保持FN-WAIT-2状态的最大时间 net.ipv4.tcp_keepalive_time = 30
#当keepalive启用时,TCP发送keepalive消息的频率。默认是2个小时。将其调小一些,可以更快的清除无用的连接 net.ipv4.ip_local_port_range = 10240 65000
#UDP和TCP连接中本地端口(不包括连接的远端)的取值范围 net.ipv4.tcp_tw_recycle = 1
#允许将TIME-WAIT sockets重新用于新的TCP连接 net.ipv4.tcp_max_tw_buckets = 20000
#容纳TIME_WAIT状态的连接数,如果超过,则立即销毁TIME_WAIT套接字
初始化脚本
此脚本只能用于centos7,测试机器为centos7.4最小化安装,脚本没有问题,但如使用需要对time_zone、ssh_conf等模块根据实际修改。
#!/bin/bash
#
### system release ###
system_check(){
RELEASE=`cat /etc/redhat-release |awk '{print $(NF-1)}' | awk -F\. '{print $1}'`
USER=`whoami`
if [ $RELEASE -eq ];then
echo -e "\033[34m system check completed \033[0m"
else
echo -e "\033[31m this script only support centos7 system \033[0m"
exit
fi
if [ $USER != 'root' ];then
echo -e "\033[31m the current user is not \"root\" \033[0m"
exit
fi
}
### install package ###
yum_install(){
PACKAGE="ntpdate wget bc vim gcc gcc-c++ openssl openssl-devel lrzsz pcre-devel sysstat iftop lsof tcpdump telnet nmap traceroute net-tools"
yum install -y $PACKAGE >/dev/null >&
echo -e "\033[34m package install completed \033[0m"
}
### time zone ###
time_zone(){
NTP_PATH=`which ntpdate`
if [ `date +%z` != '+0800' ];then
timedatectl set-timezone Asia/Shanghai
if [ `date +%z` == '+0800' ];then
echo -e "\033[34m timezone set completed \033[0m"
else
echo -e "\033[31m timezone set failed \033[0m"
fi
fi
grep ntpserver /etc/hosts || echo "X.X.X.X ntpserver">>/etc/hosts
grep ntpserver /var/spool/cron/root || echo "10 * * * * ${NTP_PATH} ntpserver" >>/var/spool/cron/root
$NTP_PATH ntpserver &> /dev/null && echo -e "\033[34m time sync completed \033[0m" || echo -e "\033[31m time sync failed \033[0m"
} ### disable selinux ###
disable_selinux(){
FILE="/etc/selinux/config"
BACKUP="/etc/selinux/config.$DATE"
if [ ! -f $BACKUP ];then
cp $FILE $BACKUP
fi
setenforce
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' $FILE
grep 'SELINUX=disabled' $FILE && echo -e "\033[34m disable selinux completed \033[0m" || echo -e "\033[31m disable selinux failed \033[0m"
}
### disable firewalld ###
disable_firewalld(){
systemctl stop firewalld
systemctl disable firewalld &>/dev/null
if [ `systemctl is-enabled firewalld` == 'disabled' ];then
echo -e "\033[34m disable firewalld completed \033[0m"
else
echo -e "\033[31m disable firewalld failed \033[0m"
fi
}
### ban ipv6 and modify eth0 ###
#modify_grub(){
# FILE="/etc/default/grub"
# BACKUP="/tmp/grub.$DATE"
# DEFUALT_PARAMS=`grep "GRUB_CMDLINE_LINUX" $FILE | awk -F\" '{print $2}'`
# REPLACE_PARAMS="GRUB_CMDLINE_LINUX=\"$DEFUALT_PARAMS crashkernel=auto net.ifnames=0 biosdevname=0 ipv6.disable=1\""
# cp $FILE $BACKUP
# sed -i 's/GRUB_CMDLINE_LINUX.*/'$REPLACE_PARAMS'/g' $FILE
# grep 'net.ifnames=0 biosdevname=0 ipv6.disable=1' $FILE && echo -e "\033[34m modify grub completed \033[0m" || echo -e "\033[31m modify grub failed \033[0m"
# grub2-mkconfig -o /boot/grub2/grub.cfg &>dev/null
# mv /etc/sysconfig/network-scripts/ifcfg-ens* /etc/sysconfig/network-scripts/ifcfg-eth0
#}
### password expiry ###
passwd_expiry(){
FILE="/etc/login.defs"
BACKUP="/etc/login.defs.$DATE"
cp $FILE $BACKUP
sed -i 's/PASS_MAX_DAYS.*/PASS_MAX_DAYS 90/g' $FILE
sed -i 's/PASS_MIN_DAYS.*/PASS_MIN_DAYS 0/g' $FILE
sed -i 's/PASS_MIN_LEN.*/PASS_MIN_LEN 15/g' $FILE
sed -i 's/PASS_WARN_AGE.*/PASS_WARN_AGE 15/g' $FILE
echo -e "\033[34m passwd expiry modify completed \033[0m"
}
### password complex ###
paawd_complex(){
FILE="/etc/pam.d/system-auth"
BACKUP="/etc/pam.d/system-auth.$DATE"
cp $FILE $BACKUP
sed -i 's/.*pam_pwquality.so.*try_first_pass.*/password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=15 lcredit=-2 ucredit=-2 dcredit=-2 ocredit=-2/g' $FILE
echo -e "\033[34m passwd complex set completed \033[0m"
}
### password lock ###
passwd_lock(){
FILE="/etc/pam.d/sshd"
BACKUP="/etc/pam.d/sshd.$DATE"
cp $FILE $BACKUP
sed -i '1a\auth required pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=300' $FILE
grep 'pam_tally2.so' $FILE && echo -e "\033[34m passwd lock set completed \033[0m" || echo -e "\033[31m passwd lock set failed \033[0m"
}
### ban user su ###
user_su(){
FILE="/etc/pam.d/su"
BACKUP="/etc/pam.d/su.$DATE"
cp $FILE $BACKUP
sed -i 's#/sbin:/bin:/usr/sbin:/usr/bin#/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin#' /etc/sudoers
sed -i 's/^%wheel\tALL=(ALL).*/%wheel\tALL=(ALL)\tNOPASSWD: ALL/g' /etc/sudoers
sed -i '/pam_wheel.so use_uid/a\auth\t\trequired\tpam_wheel.so use_uid' $FILE
grep '^auth.*use_uid' $FILE && echo -e "\033[34m ban su set completed \033[0m" || echo -e "\033[31m ban su set failed \033[0m"
}
### timeout time ###
timeout(){
FILE="/etc/profile"
echo "export TMOUT=1800" >> $FILE
source $FILE
grep "TMOUT=1800" $FILE && echo -e "\033[34m timeout set completed \033[0m" || echo -e "\033[31m timeout set failed \033[0m"
}
### set ssh ###
ssh_conf(){
FILE="/etc/ssh/sshd_config"
BACKUP="/etc/ssh/sshd_config.$DATE"
cp $FILE $BACKUP
sed -i '/^#Port 22/a\Port 22\nPort 1022' $FILE
sed -i '/^#PermitRootLogin.*/a\PermitRootLogin no' $FILE
sed -i 's/^GSSAPIAuthentication.*/GSSAPIAuthentication no/g' $FILE
sed -i '/^#UseDNS/a\UseDNS no' $FILE
systemctl reload sshd
echo -e "\033[34m ssh set completed \033[0m"
}
### hotkey reboot ###
hotkey_reboot(){
FILE="/usr/lib/systemd/system/ctrl-alt-del.target"
BACKUP="/usr/lib/systemd/system/ctrl-alt-del.target.default"
mv $FILE $BACKUP
ls /usr/lib/systemd/system/ctrl-alt-del.target &>/dev/null && echo -e "\033[31m hotkey set failed \033[0m" || echo -e "\033[34m hotkey set completed \033[0m"
}
### ban kernel update ###
kernel_update(){
FILE="/etc/yum.conf"
BACKUP="/etc/yum.conf.$DATE"
cp $FILE $BACKUP
sed -i '/\[main\]/a\exclude=kernel*' $FILE
grep 'exclude=kernel' $FILE && echo -e "\033[34m ban kernel update completed \033[0m" || echo -e "\033[31m ban kernel update failed \033[0m"
}
### set ulimit ###
set_ulimit(){
FILE="/etc/security/limits.conf"
BACKUP="/etc/security/limits.conf.default"
mv $FILE $BACKUP
cat >> $FILE << EOF
* soft nofile
* hard nofile
* soft nproc
* hard nproc
zf soft nofile
zf hard nofile
zf soft nproc
zf hard nproc
EOF
egrep -v "^#|^$" $FILE
echo -e "\033[34m unlimit set completed \033[0m"
}
### kernel params ###
kernel_params(){
FILE="/etc/sysctl.conf"
BACKUP="/etc/sysctl.conf.default"
cp $FILE $BACKUP
cat >> $FILE <<EOF
net.ipv4.tcp_max_tw_buckets =
net.core.netdev_max_backlog =
net.core.somaxconn =
net.ipv4.tcp_timestamps =
net.ipv4.tcp_synack_retries =
net.ipv4.tcp_syn_retries =
net.ipv4.tcp_tw_reuse =
net.ipv4.tcp_fin_timeout =
net.ipv4.tcp_keepalive_time =
net.ipv4.ip_local_port_range =
###增加回收机制
net.ipv4.tcp_tw_recycle =
net.ipv4.tcp_max_tw_buckets =
EOF
egrep -v "^#|^$" $FILE
echo -e "\033[34m kernel params set completed \033[0m"
}
### host user ###
user_create(){
useradd -G wheel sadmin
echo "" | passwd sadmin --stdin
useradd zf
echo "" | passwd zf --stdin
chage -M sadmin
}
main(){
system_check
yum_install
time_zone
disable_selinux
disable_firewalld
passwd_expiry
paawd_complex
passwd_lock
user_su
timeout
ssh_conf
hotkey_reboot
kernel_update
set_ulimit
kernel_params
user_create
}
### excute mian ###
DATE=`date +%F`
main
Linux系统初始化配置项(centos7)的更多相关文章
- Linux系统初始化过程及运行级别简介
Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进 ...
- linux系统初始化——文件系统初始化步骤
linux文件系统初始化步骤 System V init启动过程 概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式. 1) BSD system init 2) System V in ...
- Linux 系统初始化和服务
系统的初始化和服务 1. Linux 系统启动流程 打开计算机,从主板 BIOS(Basic Input/Out System)读取其中所存储的程序,引导你找到存储系统的硬件(如光盘.硬盘等) 接下来 ...
- KALI LINUX系统初始化配置
1.Kali Linux安装VirtualBox增强功能 VirtualBox增强功能介绍:物理机与虚拟机之间的文件共享.物理机与虚拟机之间的剪切板共享.虚拟机的direct3D支持,这样虚拟机窗口就 ...
- Linux系统初始化流程
POST-->BIOS(Boot Sequence)-->MBR(bootloader)-->Kernel(initrd)-->/sbin/init(/etc/inittab) ...
- Linux系统之路Centos7.2——安装QQ 的一些问题(附VMware的安装)
1.首先安装wine 可以通过源码安装,注意在编译的时候加参数,编译64位(如果你的系统是64位哦!) 但是我建议直接rpm安装. 安装网络源: rpm -ivh epel-release-6-8.n ...
- linux系统初始化——sysinit文件写法详解
sysinit文件写法详解 sysinit文件是linux初始化文件系统时执行的第一个脚本文件.它主要做在各个运行级别中进行初始化工作,包括: 启动交换分区;检查磁盘;设置主机名;检查并挂载文件系统; ...
- linux系统,在centos7环境下安装jdk步骤
记录一下安装jdk1.8版本的出错过程: 按照这个博客内容安装的,以及修改文件权限博客 [Linux]CentOS7下安装JDK详细过程 [Linux]目录文件权限的查看和修改[转] 1.安装的jdk ...
- linux系统初始化——启动脚本是如何工作的
启动脚本是如何工作的 Linux 使用的是基于 运行级(run-levels) 概念的称为 SysVinit 的专用启动工具.它在不同的系统上可能是完全不一样的,所以不能认为一个脚本在某个 Linux ...
随机推荐
- matlab练习程序(对应点集配准的四元数法)
这个算是ICP算法中的一个关键步骤,单独拿出来看一下. 算法流程如下: 1.首先得到同名点集P和X. 2.计算P和X的均值up和ux. 3.由P和X构造协方差矩阵sigma. 4.由协方差矩阵sigm ...
- [Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- TinScrapy-简化的Scrapy原码-查看爬虫的执行流程
学习了自定义的TinyScrapy框架,整理出以下定注释的代码 from twisted.web.client import getPage,defer from twisted.internet i ...
- 【原】Java学习笔记001 - JAVA开发环境搭建
1.JDK下载并安装,以jdk-7u45-windows-i586.exe为例(注意JDK的安装和JRE的安装是分开的) 2.“我的电脑”右键属性,找到“高级系统设置”,找到“高级”tab下的“环境变 ...
- Visual Studio 2017的安装与使用
Visual Studio 2017的安装与使用 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. 下载Visual Studio 2017 在官网 ...
- UVALive - 4287 - Proving Equivalences(强连通分量)
Problem UVALive - 4287 - Proving Equivalences Time Limit: 3000 mSec Problem Description Input Outp ...
- ESP8266远程OTA升级
https://blog.csdn.net/xh870189248/article/details/80095139 https://www.wandianshenme.com/play/arduin ...
- 字符串匹配KMP算法详解
1. 引言 以前看过很多次KMP算法,一直觉得很有用,但都没有搞明白,一方面是网上很少有比较详细的通俗易懂的讲解,另一方面也怪自己没有沉下心来研究.最近在leetcode上又遇见字符串匹配的题目,以此 ...
- UIGestureRecognizer - BNR
继续上篇UITouch - BNR.该篇将实现线条选择.移动和删除操作. UIGestureRecognizer有一系列子类,每一个子类都用于识别特定的手势.当识别出一个手势时,手势识别器会拦截视图的 ...
- Sqlserver查询死锁及杀死死锁的方法
-- 查询死锁 select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sy ...