安装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调优的主要内容,如果未能解决你的问题,请参考以下文章