欢迎您, 来到 宁时修博客.^_^

Linux系统基础知识 --- 系统基础优化 01

2019/08/06 林木立 Linux 446
Linux系统基本知识 --- 系统基础优化

    注意:操作时做好记录或备份


    1、关闭SElinux

    修改配置文件,需要重启系统才能生效:

$ cp /etc/selinux/config /etc/selinux/config.bak
$ sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/config

    命令行设置,临时生效,重启失效:

$ setenforce 0 (将enforcing改为permissive)
$ getenforce (查看修改结果)


    2、关闭防火墙或者设置防火墙允许相关端口和IP放行

    CentOS 7以上:

systemctl stop firewalld (关闭firewalld防火墙)
systemctl disable firewalld (关闭开机自启动)


    CentOS 7以下:

/etc/init.d/iptables stop (关闭iptables防火墙)
chkconfig iptables off (关闭开机自启动)


    3、安装一些必要的软件包

yum install -y lrzsz tree vim iftop iotop sysstat wget curl


    4、更改yum源,在国内就用国内的镜像,速度快

    先备份:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup


    CentOS 6:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo


    CentOS 7:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清除旧缓存:yum clean all
生成新缓存:yum makecache


    非阿里云ECS用户会出现 Couldn't resolve host 'mirrors.cloud.aliyuncs.com' 信息,不影响使用。用户也可自行修改相关配置: eg:

sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo


    配置epel源:

    先备份(如有配置其他epel源):

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/CentOS-Epel.repo /etc/yum.repos.d/CentOS-Epel.repo.backup


    下载epel源:

epel(RHEL 7):wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6):wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
epel(RHEL 5):wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo


    5、更新系统,修复漏洞

yum -y update :升级所有包,改变软件设置和系统设置,系统版本内核都升级
yum -y upgrade :升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变


    6、优化文件描述符

    调整文件描述符数最大值

    临时增大文件描述符数命令:

ulimit -HSn 65535

 

    永久更改文件描述符最大数,在 /etc/security/limits.conf 文件最后加入如下两行:

* soft nofile 65535
* hard nofile 65535


    7、去除系统及内核版本登录前的屏幕显示

    先备份,再清空/etc/issue、/etc/issue.net文件


    8、定时自动清理邮件临时目录垃圾文件,防止磁盘的inode数被小文件占满

    注意CentOS 5/6/7要清除的目录不同

CentOS 5 : /var/spool/clientmqueue/
CentOS 6 : /var/spool/postfix/maildrop/
CentOS 7 : /var/spool/postfix/maildrop/


    9、定时更新服务器时间,使其和互联网时间同步。

echo "*/5 * * * * /usr/bin/ntpdate ntp1.aliyun.com >>/dev/null 2>&1" >>/var/spool/cron/root


    国内一般以阿里云时间服务器为基准,以下地址可自己选择:

ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com


    10、SSH连接在线超时时间,命令行操作历史记录数

echo "export TMOUT=300" >>/etc/profile
# 连接超时时间控制变量,300秒无操作自动退出

echo "export HISTSIZE=50">>/etc/profile
# 命令行历史记录数量,history命令显示的条数

echo "export HISTFILESIZE=10">>/etc/profile
# 命令行命令的历史记录文件中命令记录数,这样之后再 cat ~/.bash_history 就只能显示最多10条记录


    11、清楚多余的系统虚拟用户账号,建立普通用户,并做sudo提权


    12、优化系统内核参数

#关闭IPv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

#开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1

#关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

#处理无源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

#关闭sysrq功能
kernel.sysrq = 0

#core文件名中添加pid作为扩展名
kernel.core_uses_pid = 1

#开启SYN洪水攻击保护
net.ipv4.tcp_syncookies = 1

#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536

#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

#timewait的数量,默认180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 16384 4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

#该选项默认值是128,这个参数用于调节系统同时发起的TCP连接数,在高并发的请求中,默认的值可能会导致链接超时或重传,因此,需要结合并发请求数来调节此值
net.core.somaxconn = 32768

#每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 262144

#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans = 3276800

#表示SYN队列的长度,默认为1024,建议加大队列的长度,为8182或更多,这样可以容纳更多等待链接的网络连接数,该参数为服务器端用于记录那些尚未收到客户端确认信息的链接请求的最大值
net.ipv4.tcp_max_syn_backlog = 32768
net.ipv4.tcp_timestamps = 0

#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries = 1

#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries = 1

#不启用timewait 快速回收,tcp_tw_recycle 的机制是维护时间戳,发现时间戳后退的包直接丢掉,会导致服务器可能会丢失 NAT 模式下运行的客户端连接
net.ipv4.tcp_tw_recycle = 0

#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP 连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1

#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
#系统默认(7200s,9,75s)
#net.ipv4.tcp_keepalive_time = 7200  设置连接上如果没有数据发送的话,多久后发送keepalive探测分组,单位是秒
#net.ipv4.tcp_keepalive_probes = 9   关闭一个非活跃连接之前的最大重试次数
#net.ipv4.tcp_keepalive_intvl = 75  前后两次探测之间的时间间隔,单位是秒
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 30


#允许系统打开的端口范围
net.ipv4.ip_local_port_range = 10240  65000

#系统级别的能够打开的文件句柄的数量,ulimit 是进程级别的
#ulimit -n 265535
#可在/etc/profile中设置
fs.file-max = 265535


#修改防火墙表大小,默认65536。没用防火墙就注释
#net.nf_conntrack_max = 655350
#net.netfilter.nf_conntrack_max = 655350
#net.netfilter.nf_conntrack_tcp_timeout_established = 180
#net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
#net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
#net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

vm.overcommit_memory = 1


    13、命令行显示调整

    默认:

    63551.png


    修改/etc/bashrc  第41行(系统不同,可能不同行)

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

    改成以下:

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\H \t \w]\\$ "

    1.png

[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\e[34;1m\u@\H\e[0m \e[32;1m\t\e[0m \e[31;1m\w\e[0m]\\$ "

    2.png


    也可以通过全局变量配置文件/etc/profile来调整。

    变量:

\d     日期,格式 weekday month date,Tue Aug 06
\H     完整的主机名
\h     仅取完整主机名的第一段,以 "." 号分隔
\t     显示时间格式:24小时,HH:MM:SS
\T     显示时间格式:12小时
\A     显示时间格式:24小时,HH:MM
\u     当前用户的账户名
\v     BASH的版本信息
\w     完整的工作路径,家目录显示 ~
\W     利用basename 取得工作目录名,列出的最后一个目录
\#     下达的第几个命令
\$     提示字符,root账户为:#,普通用户为:$


点赞
说说你的看法

所有评论: (3)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群