芒雪博客

芒雪嗖嗖嗖的小破站

一键优化CentOS系统

默认分类 0 评

环境: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
mwget 多线程版本wget下载工具
发表评论
撰写评论