环境:centos6.8 2.6.32-642.el6.x86_64
一键优化CentOS系统(包含以下1、4、5、6、7、9、10、11、12点)
cp /etc/selinux/config{,.ori} sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config setenforce 0 cp /etc/profile{,.ori} cat >> /etc/profile<<EOF #export HISTSIZE=5 #export HISTFILESIZE=5 export TMOUT=300 EOF source /etc/profile LANG=en chkconfig --list | grep "3:on"|egrep -v "sshd|network|crond|rsyslog|sysstat " |awk '{print "chkconfig", $1 ,"off"}'|bash cp /etc/ssh/sshd_config{,.ori} cat >>/etc/ssh/sshd_config <<EOF #Port 52113 #PermitRootLogin no PermitEmptyPasswords no GSSAPIAuthentication no UseDNS no EOF /etc/init.d/sshd reload echo "* * * * * /usr/sbin/ntpdate 61.160.212.28 &>/dev/null" >>/var/spool/cron/root cp /etc/security/limits.conf{,.ori} echo "* - nofile 65535" >> /etc/security/limits.conf cp /etc/sysctl.conf{,.ori} cat >> /etc/sysctl.conf <<EOF net.ipv4.tcp_max_tw_buckets = 20000 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 262144 net.core.netdev_max_backlog = 30000 net.ipv4.tcp_tw_recycle = 0 fs.file-max = 6815744 EOF sysctl -p >/etc/issue >/etc/issue.net reboot
1、关闭SELinux(重启生效)
cp /etc/selinux/config{,.ori} sed -i “s#SELINUX=enforcing#SELINUX=disabled#g” /etc/selinux/config setenforce 0
2、系统运行级别设定3(最小化安装默认是3)
#runlevel N 3 #vim /etc/inittab id:3:initdefault:
3、设置中文字符集
vim /etc/sysconfig/i18n
默认是LANG=”en_US.UTF-8″
cp /etc/sysconfig/i18n{,.ori}
echo ‘LANG=”zh_CN.UTF-8″‘ > /etc/sysconfig/i18n
source /etc/sysconfig/i18n <=== 使文件立即生效
echo $LANG
4、历史记录及登录超时环境变量设置
/etc/profile 此文件是系统全局变量永久生效的配置文件
~./bash_history 此文件记录当前用户的历史记录
cat >> /etc/profile<<EOF #export HISTSIZE=5 #export HISTFILESIZE=5 export TMOUT=300 EOF source /etc/profile
5、关闭防火墙
/etc/init.d/iptables stop chkcong iptables off /etc/init.d/iptables status
6、精简开机自启动服务
*重要的开机自启动服务:sshd、network、crond、rsyslog、sysstat
除这5个服务开启外其余全部关闭:*
(先全部关闭再开启那5个)
chkconfig –list | egrep -v “sshd|network|crond|rsyslog|sysstat”|bash chkconfig –list | egrep “sshd|rsyslog|network|crond|sysstat”|awk ‘{print”chkconfig”,$1,”on”}’|bash
(默认这5 个服务是开启的,只需关闭其它即可)
chkconfig –list | grep “3:on”|egrep -v “sshd|network|crond|rsyslog|sysstat ” |awk ‘{print “chkconfig”, $1 ,”off”}’|bash
7、更换ssh服务器端远程登录的配置
cp /etc/ssh/sshd_config{,.ori} cat >>/etc/ssh/sshd_config <<EOF Port 52113 PermitRootLogin no PermitEmptyPasswords no GSSAPIAuthentication no UseDNS no EOF /etc/init.d/sshd reload
8、利用sudo控制用户对系统命令的使用权限
visudo 或者 vi /etc/sudoers 编辑
文件内有说明可以参考
对普通用户设置
例如添加:oldboy ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel <===普通用户oldboy可以在机器上运行useradd和userdel命令(注意全路径),使用前命令前面要加sudo
oldboy ALL=(ALL) NOPASSWD:ALL <===拥有完全的系统管理权限
cp /etc/sudoers{,.ori}
echo ” oldboy ALL=(ALL) NOPASSWD:ALL ” >>/etc/sudoers
sudo -l <===查看当前用户被授予的sudo仅限集合
visudo -c <===检查语法
9、时间同步
ntp服务器搭建好后在客户机做个同步时间定时任务即可
crontal -l 查看当前系统有哪些定时任务
crontal -e 编辑定时任务,等价于 编辑/var/spool/cron/root文件
echo “* * * * * /usr/sbin/ntpdate 61.160.212.28 &>/dev/null” >> /var/spool/cron/root
10、调整系统文件描述符的数量
文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,所有打开的文件都是通过文件描述符引用的。一般最大打开文件数会是系统内存的10%(以KB来计算)(称之为系统级限制)
查看文件描述符设置情况(默认1024)
ulimit -n
配置文件/etc/security/limits.conf
echo “* – nofile 65535” >> /etc/security/limits.conf
重新登录才能生效
临时更改文件描述符
ulimit -SHn 65535
11、内核优化
配置文件/etc/sysctl.conf
#该参数设置系统的TIME_WAIT的数量,如果超过默认值则会被立即清除 net.ipv4.tcp_max_tw_buckets = 20000 #定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数 net.core.somaxconn = 65535 #对于还未获得对方确认的连接请求,可保存在队列中的最大数目 net.ipv4.tcp_max_syn_backlog = 262144 #在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 net.core.netdev_max_backlog = 30000 #能够更快地回收TIME-WAIT套接字。此选项会导致处于NAT网络的客户端超时,建议为0 net.ipv4.tcp_tw_recycle = 0 #系统所有进程一共可以打开的文件数量 fs.file-max = 6815744 #防火墙跟踪表的大小。注意:如果防火墙没开则会提示error:”net.netfilter.nf_conntrack_max” is an unknown key,忽略即可 (防火墙没有开放也可以不设置) #net.netfilter.nf_conntrack_max = 2621440 运行 sysctl -p即可生效
一键优化内核
cp /etc/sysctl.conf{,.ori} cat >> /etc/sysctl.conf <<EOF net.ipv4.tcp_max_tw_buckets = 20000 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 262144 net.core.netdev_max_backlog = 30000 net.ipv4.tcp_tw_recycle = 0 fs.file-max = 6815744 EOF sysctl -p
12、隐藏linux版本信息显示
本地登录之前会显示系统版本及内核信息
cat /etc/issue.net CentOS release 6.8 (Final) Kernel /r on an /m
清空即可
>/etc/issue >/etc/issue.net
13、锁定关键系统文件,防止被提权篡改
上锁后所有用户都不能对文件操作
charr +i /etc/passwd /etc/shadow /etc/grop /etc/gshadow /etc/inittab
解锁
charr -i /etc/passwd /etc/shadow /etc/grop /etc/gshadow /etc/inittab