安装Linux后需要调整的一些参数Linux调优

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装Linux后需要调整的一些参数Linux调优相关的知识,希望对你有一定的参考价值。

1、关闭SELinux功能.

1、关闭SELinux功能

    修改配置文件(永久生效)

[[email protected] ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#‘ /etc/selinux/config
##用sed命令修改SELinux的状态
[[email protected] ~]# grep SELINUX=disable /etc/selinux/config  ##检查是否修改成功
SELINUX=disabled

    临时关闭SELinux(临时生效)

[[email protected] ~]# setenforce 0  ##[ Enforcing | Permissive | 1 | 0 ]
##数字0表示Permissive,只给出警示,相当于disable
##数字1表示Enforcing,表示开启状态
[[email protected] ~]# getenforce  ##获取当前SELinux的状态
Permissive

        修改SELinux状态过后,如果要使其立即生效,必须重启系统。

2、设定运行级别为3(文本模式)

[[email protected] ~]# grep 3:initdefault /etc/inittab ##表示已经是文本模式
id:3:initdefault:
[[email protected] ~]# runlevel  ##显示当前的运行级别
N 3  
[[email protected] ~]# init 5   ##切换为5运行级别,如果装了桌面程序可用startx

3.优化开机启动项

    1)重要的开机启动服务项

    sshd  远程连接程序

    rsyslog  日志相关软件

    network  网络服务

    sysstat  监测系统性能效率软件包,包含(iostat、mpstat、sar)

    crond  计划任务

    2)手动设置开机启动服务

    A:执行ntsysv命令,然后弹出窗口进行设置;

    B:执行setup --> system service,弹出窗口进行设置;

    3)通过shell脚本设置开机启动服务

[[email protected] ~]# LANG=en
[[email protected] ~]# chkconfig --list |grep 3:on
abrt-ccpp          0:off    1:off    2:off    3:on    4:off    5:on    6:off
abrtd              0:off    1:off    2:off    3:on    4:off    5:on    6:off
acpid              0:off    1:off    2:on    3:on    4:on    5:on    6:off
atd                0:off    1:off    2:off    3:on    4:on    5:on    6:off
auditd             0:off    1:off    2:on    3:on    4:on    5:on    6:off
autofs             0:off    1:off    2:off    3:on    4:on    5:on    6:off
blk-availability    0:off    1:on    2:on    3:on    4:on    5:on    6:off
certmonger         0:off    1:off    2:off    3:on    4:on    5:on    6:off
cpuspeed           0:off    1:on    2:on    3:on    4:on    5:on    6:off
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
cups               0:off    1:off    2:on    3:on    4:on    5:on    6:off
haldaemon          0:off    1:off    2:off    3:on    4:on    5:on    6:off
ip6tables          0:off    1:off    2:on    3:on    4:on    5:on    6:off
iptables           0:off    1:off    2:on    3:on    4:on    5:on    6:off
irqbalance         0:off    1:off    2:off    3:on    4:on    5:on    6:off
kdump              0:off    1:off    2:off    3:on    4:on    5:on    6:off
lvm2-monitor       0:off    1:on    2:on    3:on    4:on    5:on    6:off
mcelogd            0:off    1:off    2:off    3:on    4:off    5:on    6:off
mdmonitor          0:off    1:off    2:on    3:on    4:on    5:on    6:off
messagebus         0:off    1:off    2:on    3:on    4:on    5:on    6:off
netfs              0:off    1:off    2:off    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
nfslock            0:off    1:off    2:off    3:on    4:on    5:on    6:off
portreserve        0:off    1:off    2:on    3:on    4:on    5:on    6:off
postfix            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rpcbind            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rpcgssd            0:off    1:off    2:off    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off
udev-post          0:off    1:on    2:on    3:on    4:on    5:on    6:off

   可以先全部关闭,然后再打开所需要的服务,命令如下:

[[email protected] ~]# for richy in `chkconfig --list |grep 3:on|awk ‘{print $1}‘`;do chkconfig --level 3 $richy off;done
[[email protected] ~]# for richy in crond network rsyslog sshd sysstat ;do chkconfig --level 3 $richy on ;done
[[email protected] ~]# chkconfig --list |grep 3:on
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off

    第二种快速处理方法:一条命令即可实现,(shell循环):

[[email protected] ~]# for richy in `chkconfig --list |grep "3:on"|awk ‘{print $1}‘|grep -vE "crond|network|sshd|rsyslog|sysstat"`;do chkconfig $richy off ;done
[[email protected] ~]# chkconfig --list |grep "3:on"
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off

    第三种快速处理方法:不要shell循环语句也是一条命令:

[[email protected] ~]# chkconfig --list |grep 3:on|grep -vE "crond|sshd|rsyslog|network|sysstat" |awk ‘{print "chkconfig " $1 " off"}‘ |bash
[[email protected] ~]# chkconfig --list |grep "3:on"
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off

    当然第三种方法也等同于下面的方法原理:

[[email protected] ~]# chkconfig --list |grep 3:on|grep -vE "crond|sshd|rsyslog|network|sysstat" |awk ‘{print $1}‘|sed -r ‘s#(.*)#chkconfig \1 off#g‘ |bash
[[email protected] ~]# chkconfig --list |grep "3:on"
crond              0:off    1:off    2:on    3:on    4:on    5:on    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
rsyslog            0:off    1:off    2:on    3:on    4:on    5:on    6:off
sshd               0:off    1:off    2:on    3:on    4:on    5:on    6:off
sysstat            0:off    1:on    2:on    3:on    4:on    5:on    6:off

4、关闭iptables防火墙

    在日常工作中,一般只有配置外网IP的LInux才需要开启防火墙,但即使有外网IP,高并发,高流量的业务服务器仍然不能开启防火墙,因为开启后会有较大的性能损失,导致网站访问速度慢,所以最好使用硬件防火墙了。关闭防火墙的命令如下:

[[email protected] ~]# /etc/init.d/iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
[[email protected] ~]# /etc/init.d/iptables stop  ##重复一遍,确保关闭
[[email protected] ~]# chkconfig iptables off  ##关闭开机自启动命令
[[email protected] ~]# chkconfig --list |grep iptables
iptables           0:off    1:off    2:off    3:off    4:off    5:off    6:off

5、Linux最小化安装原则的好处

    安装Linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装。

    开机自启动服务最小化,即无用的服务不开启

    操作命令最小化。例如 能用"rm -f test.txt" 就不用"rm -fr test.txt"

    登陆Linux用户最小化,平时没有特殊需求不登录root,用普通用户登陆

    普通用户授权最小化,只给用户必需的管理系统的命令

    Linux系统文件及目录的权限设置最小化,禁止随意创建、更改、删除文件

    程序服务运行最小化,即程序服务运行应尽量不用root身份运行

6、更改SSH服务器端远程登录的配置

    Windows远程端口为3389,管理员是administrator,普通用户是guest;Linux管理用户是root,普通用户可以有多个,远程端口默认为22,。为了安全,我们需更改自己的SSH远程端口:

[[email protected] ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
[[email protected] ~]# vim /etc/ssh/sshd_config
####以下为新增加的内容,以替换默认配置####
Port 60022   ##端口范围0-65535,建议大于1024
PermitRootLogin no  ##是否允许密码为空的用户登陆
PermitEmptyPasswords no  ##是否允许root用户登陆,[yes | no | without-password | forced-commands-only]
UseDNS no  ##指定sshd是否应该对远程主机名进行反向解析,已检查此主机名是否与其IP地址真实对应,默认为yes
GSSAPIAuthentication no  ##解决Linux之间使用SSH远程连接慢的问题
####--------END-------####

##重启sshd服务以生效 以下两种重启方法
[[email protected] ~]# /etc/init.d/sshd reload
Reloading sshd:                                            [  OK  ]
[[email protected] ~]# /etc/init.d/sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

    第二种方法使用命令直接修改sshd_config 的内容,本人不建议使用。

[[email protected] ~]# echo  "########修改ssh默认登录端口,禁止root用户登陆#######"> cp /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +"%F%H%M%S"`> sed -i ‘s%#Port 22%Port 60022%‘ /etc/ssh/sshd_config> sed -i ‘s%#PermitRootLogin yes%PermitRootLogin no%‘ /etc/ssh/sshd_config> sed -i ‘s%#PermitEmptyPasswords no%PermitEmptyPasswords no%‘ /etc/ssh/sshd_config> sed -i ‘s%#UseDNS yes%UseDNS no%‘ /etc/ssh/sshd_config> sed -i ‘s%#GSSAPIAuthentication yes%GSSAPIAuthentication no%‘ /etc/ssh/sshd_config> grep "USEDNS |60022|RootLogin|Emptypass|GSSAPIAuthentication" /etc/ssh/sshd_config/etc/init.d/sshd reload

    优化上面的内容:

[[email protected] ~]# sed -ir ‘13 iPort 60022\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no‘ /etc/ssh/sshd_config
[[email protected] ~]# sed -n ‘13,17p‘ /etc/ssh/sshd_config
Port 60022
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
####在第13行插入上述内容###
/etc/init.d/sshd reload

    验证登陆地址及端口

[[email protected] ~]# netstat -an |grep 192.168.0.25
tcp        0      0 192.168.0.62:60022          192.168.0.25:5789           ESTABLISHED 
tcp        0      0 192.168.0.62:22             192.168.0.25:5761           ESTABLISHED 
tcp        0      0 192.168.0.62:22             192.168.0.25:14680          ESTABLISHED

    现在只能通过richy 登陆并且用su - root命令切换到root.

    ----------除了以上SSH介绍以外,还有更高级的SSH安全策略如下:---------

[[email protected] ~]# sed -n ‘13,20p‘ /etc/ssh/sshd_config
Port 60022
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
#Port 22
#AddressFamily any
#ListenAddress 192.168.0.25  ##表示指定监听本机内网的IP地址,防止其他主机登陆

    -------通过防火墙限制仅能使用内网IP连接此服务器,限制命令如下:

[[email protected] ~]# iptables -I INPUT -p tcp --dport 60022 -s 192.168.0.0/24 -j ACCEPT

7、利用sudo控制用户对系统命令的使用权限

    为了安全管理,将需要root权限的普通用户加入sudo管理,这样就可以在普通用户模式下,使用一部分root权限的命令管理服务器了。

[[email protected] ~]# visudo  ##相当于直接编辑/etc/sudoers,使用命令visudo更安全和方便
     98 root    ALL=(ALL)                       ALL
     99 richy   ALL=(ALL)                       /usr/sbin/useradd,/usr/sbin/userdel
        用户    机器=(授权使用哪个角色的权限)   授权的命令

    如果给richy的命令为ALL 则拥有和root一样的权限:

99 richy   ALL=(ALL)           NOPASSWD: ALL   
##结尾的ALL 即相当于完全的系统管理权限
##结尾的NOPASSWORD 表示提权执行命令的时候不需要提示输入密码 
[[email protected] ~]# grep richy /etc/sudoers  ##检查是否配置成功
richy     ALL=(ALL)       NOPASSWD: ALL

    也可以使用三剑客来增加sudo授权(仅限于批量管理的情况):

[[email protected] ~]# cp  /etc/sudoers /etc/sudoers.`date "+%F%H%M%S"`
[[email protected] ~]# echo "richy ALL=(ALL) NOPASSWD: ALL" >>/etc/sudoers
[[email protected] ~]# tail -1 /etc/sudoers
richy ALL=(ALL) NOPASSWD: ALL

    说明richy用户就可以通过sudo ls -l /root 来执行root用户的权限管理命令了;

    --通过sudo授权管理后,所有用户执行授权的特殊权限格式为 "sudo 命令"

    --如果需要切换到root执行相关操作,可以通过“sudo su -”命令,此处的密码为当前用户的密码

    --执行“sudo -l”命令可以查看当前用户被授予的sudo权限集合如下:

[[email protected] ~]$ sudo -l
Matching Defaults entries for richy on this host:
    requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE
    INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
    LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
    XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User richy may run the following commands on this host:
    (ALL) NOPASSWD: ALL

    说明:对于Linux系统的bash内置命令,一般无法进行sudo授权,比如cd命令。

在工作环境中,可以使用ldap统一认证登陆及授权管理的方式(只要一个账号和密码,全公司多个机房系统内都可通行SVN/VPN/SSH)。

8、Linux中文的支持及显示

    在日常工作中,我们会需要用到中文的支持以及显示,所以与之相关的字符集包括GBK 、UTF-8

[[email protected] ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.bak
[[email protected] ~]# echo ‘LANG="ZH_cn.UTF-8"‘ >/etc/sysconfig/i18n
[[email protected] ~]# source /etc/sysconfig/i18n
[[email protected] ~]# echo $LANG
ZH_cn.UTF-8

9、设置Linux服务器时间同步

    手动同步方法:

[[email protected] ~]# /usr/sbin/ntpdate time.nist.gov
 1 Oct 02:52:58 ntpdate[6876]: step time server 128.138.141.172 offset 5471923.694453 sec
[[email protected] ~]# which ntpdate
/usr/sbin/ntpdate

    利用定时任务每5分钟执行一次时间同步:

[[email protected] ~]# echo ‘######NTP Server by richy at 2016-10-1######‘ >> /var/spool/cron/root
[[email protected] ~]# echo ‘*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1‘ >>/var/spool/cron/root
[[email protected] ~]# crontab -l
######NTP Server by richy at 2016-10-1######
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

    以上命令等同于 执行crontab -e 直接编辑。在服务器数量多的时候可以部署时间服务器。

10、历史记录数以及登陆超时环境变量设置

    设置限制账号超时时间的命令如下(临时生效):

[[email protected] ~]# export TMOUT=10
[[email protected] ~]# timed out waiting for input: auto-logout  ##10秒展示超时并退出

    设置Linux的命令行历史记录数,history命令记录文件为~/.bash_histroy

[[email protected] ~]$ export HISTSIZE=1000  ##history 的缓存命令数量

    把上述命令放入配置文件中,可以使其永久生效:

[[email protected] ~]# echo ‘export TMOUT=300‘ >>/etc/profile
[[email protected] ~]# echo ‘export HISTSIZE=1000‘ >>/etc/profile
[[email protected] ~]# echo ‘export HISTFILESIZE=10‘ >>/etc/profile
[[email protected] ~]# tail -3 /etc/profile
export TMOUT=300   ##连接超时时间控制变量
export HISTSIZE=1000  ##命令行的历史记录数量变量
export HISTFILESIZE=10  ##历史记录文件的命令数量变量(~/.bash_history)
[[email protected] ~]# source /etc/profile

    更多的变量可以通过man bash查看。

11、调整Linux系统文件描述符数量

    





本文出自 “Richy的运维日志” 博客,请务必保留此出处http://richylu.blog.51cto.com/1481674/1858244

以上是关于安装Linux后需要调整的一些参数Linux调优的主要内容,如果未能解决你的问题,请参考以下文章

安装Linux后需要调整的一些参数Linux调优

linux内核参数优化调优

通用linux接口服务器参数调优

linux内核优化参数

Redhat 系统相关调优参数注解

Linux基础优化