您的位置:首页 > 其它

刚装完系统的简单优化

2016-05-11 18:00 197 查看
第1章安装linux系统后调优及安全设置
1.1 关闭SELinux功能[root@moban /]# sed -i 's/SELLINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config==》修改配置文件可使用高配置永久生效,但必须要重启系统,此步时sed快速修改方法,也可以通过vi编辑修改此文件。[root@moban /]# grep SELINUX=disabled /etc/selinux/configSELINUX=disabled 《===检查替换结果为disabled就表示编辑成功了。回到root ==》vi /etc/selinux/config1.1.1 selinux是什么?安全工具,控制太严格了,生产环节不用它,使用跟其他的安全手段。永久关闭(需要重启系统):vi /etc/selinux/configSELINUX=enforcing改为SELINUX=disabled临时关闭selenlore 0 命令行关闭SELINUXgetenfore 查看命令行是否关闭SELINUX永久关闭(重启系统):vi /etc/selinux/configSELINUX=enforcing改为SELINUX=disabledsed i 's#>SELINUX=enforcing#SELINUX=disabled#g'/etc/selinux/config临时关闭:setenfore 0 命令行关闭SELINUXgetenfore 查看命令行是否关闭SELINUX
1.1.2 命令说明:setenfore:用于命令行管理SELinux的级别,后面的数字表示设置对应的级别。getenforce:查看SELinux当前的级别状态。 提示:修改配置SELINUX后,要想时期生效,必须要重启系统。因此,可配合使用sctenforce 0这个临时相当于使其关闭的命令,这样在重启前后都可以使得SELinux关闭生效了。也就是说无需立刻重启服务器了,在生产场景下Linux机器是不能随意重启的。 1.2 运行级别:linux运行时的一种状态表示,这个标识用于数字表示7中运行级别。0 halt,关机状态1 single user 单用户,找回root密码2 multiuser without nfs.多用户没有NFS网络文件系统3 文本模式(Full multiuser mode ) ***** 工作模式4 unused5 图形、桌面、X116 reboot 重启
1.2.1 如何查看当前系统的运行级别runlevel[root@moban /]# runlevelN(前一次) 3(当前)
1.2.2 更改运行级别init例如:init 6 就表示重启

1.3 精简开机系统启动1.3.1 重要的开机自启动服务 sshd 远程连接Linux服务器是需要用到这个服务程序,所以必须要开启, 否则将无法远程连接Linux服务器。 rsyslog 是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog 将各种信息写到各个日同日志文件中,Centos6以前此服务的名字 为syslog network 系统启动时,若想激活/关闭各个网络接口,则应(必须)考虑开启。 crond 该服务用于周期性地执行系统用户配置的任务计划。有要周期性 执行的任务时,就要开启,此服务几乎是生产场景必须要用的一 个软件。 sysstat sysstat是一个软件包,保护检测系统性能及效率的一组工具, 这些工具对于我们手机系统性能数据很有帮助,比如CPU使用率、 硬盘和网络吞吐数据等,这些数据的手机和分析,有利于判断系 统运行是否正常,所以它是提高系统运行效率、安全运行服务器 的得力助手。 Sysstat软件包集成的主要工具为:iostat工具提供CPU使用率及硬盘吞吐效率的数据;mpstat工具提供与单个或多个处理器相关的数据;sar工具负责收集、报告并存储系统活跃的信息。
提示:上述5个服务是安装完系统后建议保留的开机启动服务,也几乎是一切服务器必须开机保留的自启动服务。将来还可以根据服务器的业务使用个场景调整相应的自启动服务,所谓调整,就是增加其他自启动服务。
1.3.2 设置开启自启动服务的常见方法1)执行命令,然后手动选择处理的方法方法1:执行ntsysv命令然后在弹出的窗口中进行设置。方法2:执行setup->system service,然后在弹出的窗口中进行设置提示:初学者可以选择上述两种方法中的一种来完成配置。
为什么要设置开机自启动?好处:1、节省开机时间,加快启动速度。2、节省资源开销3、减少安全隐患
如何做?第一种setup第二种ntsysv第三种chkconfig

sed 后向引用sed -r 's#(.*)(.*)#\1 \2#g'
1.4 关闭iptables防火墙关闭防火墙的目的是为了让初学者更方便,将来在学了iptables技术后可再统一开启。在企业环境中,一般只有外网IP的服务器才需要开启防火墙,但即使是外网IP,对于高并发流量的业务服务器仍是不能开的,因为会有较大性能损失,导致网站访问很慢,这种情况下只能在前段加更好的硬件防火墙了。关闭防火墙的具体操作过程如下:[root@moban /]# /etc/init.d/iptables stop[root@moban /]# /etc/init.d/iptables stop==service iptables stop

1.5 Linux系统安全最小原则说明最小化原则对linux系统安全来说极其重要:即多一事不如少一事。具体包括如下几个方面:1)安装linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装。2)开机自启动服务最小化,即无用的服务不开启3)操作命令最小化。例如:能用“rm -f tets.txt”就不用“rm -fr test.txt”.4)登陆Linux用户最小化。平时没有特殊需求不登录root,用普通用户登录即可。5)普通用户授权权限最小化,即只给用户必须的管理系统的命令,不能啥都可以干。
1.6 更改SSH服务端远程登陆的配置windows服务器的默认远程管理端口是3389,管理员用户是administrator,普通用户是guest。linux的管理用户是root,普通用户默认有很多个,远程连接默认端口port 22这些通常搞IT人都知道。那么黑客是否也知道呢?他们当然知道,甚至比我们更清楚,所以,为了系统安全要隐藏或更改上述默认的配置才行。[root@moban /]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori更改配置前进行备份,是系统管理员的一个良好的习惯。[root@moban /]# vi /etc/ssh/sshd_config #-》编辑sshd_config###by moban#2016-03-10##Prot 52113PermitrootLogin noPermitEmptypasswords noUseDNS noGSSAPIAuthentication no### moban#2016-03-10##执行如下命令重启sshd,是的修改的配置生效:[root@moban /]# /etc/init.d/sshd reload重新载入sshd [确定]或者/etc/init.d/sshd restart提示:reload为平滑重启,不影响正在SSH连接的其他用户,因此要好于restart。

1.7 利用sudo控制用户对系统命令的使用权限 为了安全及管理的方便,可将需要root权限的普通用户加入sudo管理,这样用户就可以通过自己的普通账户登录实现利用root的权限来管理系统了,当然也就不需要有root账号及密码了。 执行如下visudo命令,即可打开sudo的配置文件进行编辑。[root@moban ~]# visudo #相当于直接编辑/etc/sudoers,单用命令方式更安全,推荐 在/etc/sudoers文件的大约第98行下面添加需要提升为root权限的普通用户名及对应权限。1.7.1 优化注意的几个方面:安装linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装。开机自启动服务最小化,即无用的服务不开启。操作命令最小化。例如:能用“rm -f test.txt”就不用“rm -fr test.txt”登录linux用户最小化。平时没有特殊需求不登录root,用普通用户登录即可。普通用户授权权限最小化,即只给用户必须的管理系统的命令,不能啥都可以干。linux系统文件及目录的权限设置最小化,禁止随意创建、更改、删除文件
普通用户与皇帝root普通用户当皇帝的办法有两种:第一种是 su - root ,执行su - 或su - root相当于农民起义,推翻皇帝,改朝换代了。需要输入root密码才能登陆。第二种是sudo ,sudo touch /etc/test.txt让普通人做只有皇帝能做的事情,需要皇帝事先授权(sudoers文件)sudo su - root 功高盖主了,也可以改朝换代,最大化授权sudo后果。
sudo设全对于bash的内置命令处理,十个难题,因为内置命令没有实体文件和路径,不过一般都有解决方法例如希望sudo cd 用sudo ls 替代,有的网友使用sudo bash后再使用内置命令,这是很危险的,不推荐。
1.8 linux中文显示设置 此项优化为可选项,即调整linux系统的字符集设置,那么。什么是字符集呢?简单的说,字符集就是一套文字符号及其编码。目前linux下常用的字符集有:GBK:定长,双字节,不是国际标准,支持的系统不少,实际企业用的不多UTF-8:费定长,1~4字节,广泛支持,MYSQL也是用UTF-8,企业广泛使用。可通过快捷的命令方式在/etc/sysconfig/i18n中添加如下内容,使其支持中文显示:[root@moban ~]# cat /etc/sysconfig/i18nLANG="en_US.UTF-8"SYSFONT="latarcyrheb-sun16"source /etc/sysconfig/i18n启动设置查看字符集设置的结果。[root@moban ~]# cat /etc/sysconfig/i18nLANG="zh_CN.UTF-8"SYSFONT="latarcyrheb-sun16"登录linux系统查看中文字符正常显示的步骤如下:1)将服务器端字符集(/etc/sysconfig/i18n)改为LANG="zh_CN.UTF-8"。2)将客户端字符集(CRT)调整为UTF-8.3)命令执行setup命令看到原来中文乱码的窗口不乱了,正确显示中文字符了。
提示:注意"zh_CN.UTF-8"的大小写字母。这个中文显示配置要跟你自己的SSH客户端的配置一致。默认情况下就是老男孩演示的配置。调整SSH客户端CAT的字符集,使其和linux服务端一致(UTF-8)。

1.9 设置linux服务器时间同步手动同步系统时间[root@moban ~]# /usr/sbin/ntpdate time.nist.gov31 Mar 22:35:56 ntpdate[10098]: step time server 24.56.178.140 offset 82739.057723 sec利用定时任务crond把上述的手动命令没5分钟自动执行一次:[root@moban ~]# crontab -l*/5 * * * * /usr/sbin/ntpdate time.nist.gov >dev/null 2>&1
1.10 linux系统变量优化1.10.1 设置闲置账号超时时间设置闲置账号超时时间示例命令如下,注意此处的配置仅临时生效。[root@moban ~]# export TMOUT=10[root@moban ~]# timed out waiting for input: auto-logout #10秒提示超时1.10.2 设置linux的命令行历史记录数设置linux的命令行历史记录数命令如下,注意此处的配置仅临时生效。[root@moban ~]# export HISTSIZE=5[root@moban ~]# history 914 date 915 /usr/sbin/ntpdate time.nist.gov 916 crontab -l 917 export HISTSIZE=5 918 history1.10.3 设定用户的命令行历史记录文件设定用户的命令行历史记录文件(~/.bash_history)记录指定命令如下,注意此处的配置仅临时生效。[root@moban ~]# export HISTFILESIZE=5[root@moban ~]# cat ~/.bash_history/usr/sbin/ntpdate time.nist.govcrontab -lexport HISTSIZE=5historyexport TMOUT=10[root@moban ~]#把上述命令放入配置文件,使其可以永久生效。配置文件:/etc/profilesource /etc/profile #使得配置文件生效在上述命令中,涉及的系统控制变量说明如下:export TMOUT=10 :连接的超时时间控制变量export HISTSIZE=5 :命令行的历史记录数量变量export HISTFILESIZE=5 :历史记录文件的命令数量变量(~/.bash_history)。提示:实际工作中类似的变量还有不少,大家可以根据企业需求选择使用,最好执行前加上export命令,更多linux系统的环境变量,大家可以执行manbash查询。

1.11 调整linux系统文件描述符数量 文件描述符是由无符号整数表示的句柄,进程使用它来表示打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称为文件的上下文。文件描述符的有效范围是0到OPEN_MAX. 对于内核而言,所有打开的文件都是通过文件描述符引用的。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读或写一个文件是,使用open或creat返回的文件描述符标识改文件,并将其作为参数传递给read或write。[root@moban ~]# ulimit -n1024 文字描述符数量 对于高并发的业务linux服务器来说,这个默认的设备值是不够的,需要调整。1.11.1 调整方法1: 执行vim /etc/security/limits.conf命令,在文件结尾加上如下一行。* - nofile 65535 或者直接执行命令追加到文件尾部/etc/security/limits.conf配置完成后,需重新登陆才可以生效,用ulimit -n 命令查看。1.11.2 调整方法2 直接把ulimit-SHn65535命令加入到/etc/rc.local,然后每次开机启动的时候生效。
[root@moban ~]# cat >>/etc/rc.local<<EOF
1.12 linux服务器内核参数优化 所谓linux服务器内核参数优化,主要是指在linux系统中针对业务服务应用而进行的系统内核参数调整,优化并无一定的标准,下面生产环境下linux常见的内核优化为例进行讲解,仅供大家参考。 优化方法是,执行vi /etc/sysctl.conf命令道文件结尾,然后拷贝如下内容并保存。 sysctl -p 是的加载的参数生效 网络状态说明及优化命令和优化细节参考资料请看:http://oldboy.blog.51cto.com/2561410/1336488/article/6918057.html
1.13 定时清理邮件服务临时目录垃圾文件 centos5系列的系统会默认安装sendmail服务,因此邮件临时存放地点的路径为/var/spool/clientmqueue/。 centos6默认情况下没有安装sendmail服务,而是改装了postfix服务,因此邮件临时存放点的路径为/var/spool/postfix/maildrop 以上两个目录很容易被垃圾文件填满导致系统的inode数量不够用,从而导致无法存放文件。 手动清理的方法如下:[root@moban ~]# find /var/spool/clientmqueue/ -type f |xargs rm -f #centos5
[root@moban ~]# find /var/spool/postfix/maildrop/ -type f |xargs rm -f #centos6 定期清理的方法为:将上述命令携程脚本,然后做成定时任务,每天晚上0点执行一次。[root@moban ~]#echo "find /var/spool/postfix/maildrop/ -type f|xargs rm -f">/server/scripts/del_file.sh[root@moban ~]# crontab -e00 00 * * * /bin/sh /server/scripts/del_file.sh >dev/null 2>&1
1.14 隐藏linux版本信息显示 在登录到linux主机本地(非CRT连接)前,会显示系统的版本和内核[root@moban ~]# cat /etc/issue CentOS release 6.7 (Final)Kernel \r on an \m
[root@moban ~]# cat /etc/issue.netCentOS release 6.7 (Final)Kernel \r on an \m[root@moban ~]#
执行如下命令清除linux系统版本及内核信息[root@moban ~]# > /etc/issue[root@moban ~]# > /etc/issue.net
1.15 锁定关键系统文件,防止提权被篡改 要锁定关键系统文件,必须对账号密码文件及启动文件加锁,防止被篡改。上锁命令如下:[root@moban ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab提示:上锁后,所用该用户都不能对文件修改删除 解锁的命令如下[root@moban ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab提示:上锁后,如需临时错做,可以解锁后对文件进行修改,之后再上锁。

1.16 清除多余的系统虚拟账号 操作前要先根据公司系统提供的服务确定哪些账号不需要使用,如果不确定就不要操作了,一般情况下,一个规范的系统提供的服务都比较少,因此,系统中默认的绝大多数虚拟用户都是可以删除的。例如: bin/adm/lp/halt/mail/uncp/operator/games/gopher/ftp/dbus/vcsa/abrt/ntp/saslauth/postfix/tcpdump等,这些用户本身也是无法登陆的,因此,此项优化不是必须的。

1.17 为grub菜单加密码 为grub菜单加密码的目的是防止他人修改grub做内核等启动设置,以及用单用户模式启动破解root密码等操作。实际上此步可以在安装系统的过程中设定,安装系统后的具体设定步骤如下:1)先用/sbin/grub-md5-crypt产生一个MD5密码串,如下[root@moban ~]# /sbin/grub-md5-cryptPassword: Retype password: $1$vS9Bj$UKnQYq/V4Z2HIds8FVPJL.2)修改grub.conf文件,命令如下:[root@moban ~]# vi /etc/grub.conf
1 # grub.conf generated by anaconda 2 # 3 # Note that you do not have to rerun grub after making changes to this file 4 # NOTICE: You have a /boot partition. This means that 5 # all kernel and initrd paths are relative to /boot/, eg. 6 # root (hd0,0) 7 # kernel /vmlinuz-version ro root=/dev/sda3 12 splashimage=(hd0,0)/grub/splash.xpm.gz 1 # grub.conf generated by anaconda 2 # 3 # Note that you do not have to rerun grub after making changes to this file 4 # NOTICE: You have a /boot partition. This means that 5 # all kernel and initrd paths are relative to /boot/, eg. 6 # root (hd0,0) 7 # kernel /vmlinuz-version ro root=/dev/sda3 8 # initrd /initrd-[generic-]version.img 13 hiddenmenu 14 password --md5 $1$vS9Bj$UKnQYq/V4Z2HIds8FVPJL#注意:password 要加载splashimage和title之间这段,否则可能不生效 15 title CentOS 6 (2.6.32-573.el6.x86_64) 16 root (hd0,0) 17 kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=c511f78f-2713-4ca d-8dcc-756dab643fc1 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=l atarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet 18 initrd /initramfs-2.6.32-573.el6.x86_64.img 设置完成后,下次开机需要管理grub时就会提示输入密码。

1.18 禁止linux系统被ping 此项优化不是必须的,而且又是我们自己也会通过ping来检查服务器是否异常,对于要求很高的中小企业服务器,设置禁止ping也是可以的。从安全角度来说,禁止ping还是会增加系统安全的。禁止png的命令如下:[root@moban ~]# echo "net.ipv4.icmp_echo_ignore_all=1">> /etc/sysctl.con[root@moban ~]#tail -1 /etc/sysctl.confnet.ipv4.icmp_echo_ignore_all=1[root@moban ~]#sysctl -p #启动 其实这个禁ping的方法还不是好的额策略,因为禁止ping后,我们自己也无法通过ping检查了,比较好的策略是通过iptables设置让特定的IP可以ping,例如:让内网用户ping其他外部用户不能ping。例如:在默认策略为drop的情况下,可以执行如下命令,为10.0.0.0/24网段允许pingiptables -t filter -I INPUT -p icmp --icmp -type 8 -i eth0 -s 10.0.0.0/24 -j ACCEPT
工作中防火墙处理还原禁ping删除/etc/sysctl.conf中的net.ipv4.icmp_echo_ignore_all=1并执行如下命令etho 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

1.19 升级具有典型漏洞的软件版本 openssl openssh bash爆出很多软件漏洞,在企业场景需要进行修复漏洞操作,步骤如下:1)首先检查相关软件的版本号[root@moban ~]# rpm -qa openssl openssh bashbash-4.1.2-33.el6.x86_64openssh-5.3p1-111.el6.x86_64openssl-1.0.1e-42.el6.x86_642)执行升级已知漏洞的软件版本到最新,命令如下[root@moban ~]# yum install openssl openssh bash -y

1.20 linux基础优化与安全重点小结1)不用root登录管理系统,而以普通用户登录通过sudo授权管理2)更改默认的远程连接SSH服务端口,禁止root用户远程连接,甚至更改SSH服务只监听内网IP。3)定时自动更新服务器的时间,使其和互联网时间同步。4)配置yum更新源,从国内看更新源下载安装软件包5)管理SELinux及iptables(在工作场景中,如果有外部IP一般要打开iptables,高并发高流量的服务器可能无法开启)。6)调整文件描述符的数量,进程及文件的打开都会消耗文件描述符数量。7)定时自动清理邮件临时目录垃圾文件,防止磁盘的inodes数被小文件占满(注意cetos6和centos5要清除的目录不同)8)精简并保留必要的开机自启动服务(如crond、sshd、network、rsyslog、sysstat)9)linux内核参数优化/etc/sysctl.conf,执行sysctl -p 生效。10)更改系统字符集为“zh_CN.UTF-8”,使其支持中文,防止出现乱码问题。11)锁定关键系统文件如(/etc/passwd./etc/shadow./etc/group./etc/gshadow /etc/inittab)处理以上内容后把chattr、lsattr改名为olboy,转移走,这样就安全多了。12)清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。13)清除多余的系统虚拟用户账号。14)为grub引导菜单加密码
提示:上述仅为安装linux后的一些基础优化,更多针对不同业务服务器的优化思路见:http://oldboy.blog.51cto.com/2561410/1336488/article/6918057.html 本文出自 “wtlinux” 博客,请务必保留此出处/article/7533809.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: