Linux运维二:CentOS6.6系统安装后的基本配置与优化
CentOS6.6系统安装完成后还需要做一些配置与优化:
一:Linux内核版本号介绍
查看内核版本:
[root@Gin scripts]# uname -r
2.6.32-504.el6.x86_64
2 表示主版本号,有结构性变化才会更改
6 表示次版本号,新增功能时才变化,一般奇数表示测试版,偶数表示开发版
32 表示对次版本的修订次数或补丁包数
504 代表编译的次数,每次编译可对少数程序优化或修改
el6 用来表示版本的特殊信息,有较大的随意性
e1 代表企业版linux;pp代表测试版;fc代表fedora core;rc代表候选版本;
x86_64表示64位
二:安装系统补装工具
[root@Gin scripts]# yum install tree nmap sysstat lrzsz dos2unix -y
如果需要更新补丁则执行(更新所有软件到最新版本):yum update
注:不要轻易做,线上如非必要尽量不做,除非有已知的安全漏洞,会升级内核!简单介绍下yum update 与 yum upgrade的区别:
yum -y update:升级所有包,改变软件设置和系统设置,系统版本内核都升级
yum -y upgrade:升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变
上面5个工具的简单介绍:
tree:以树状图列出目录的内容
nmap:Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具。Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口!详细使用文章:http://os.51cto.com/art/201401/428152.htm
sysstat:Sysstat是一个非常方便的工具,它带有众多的系统资源监控工具,用于监控系统的性能和使用情况!详细介绍文章:https://linux.cn/article-4025-1.html
lrzsz:在SecureCRT这样的ssh登录软件里, 通过在Linux界面里输入rz/sz命令来上传/下载文件
dos2unix:dos2unix命令用来将DOS格式的文本文件转换成UNIX格式
三:配置网络
通过setup命令简单配置网络
[root@Gin scripts]# setup
调出设置面板:
前面三项默认即可,配置Primary DNS Server为:8.8.8.8;Secondary DNS Server为:202.106.0.20;然后保存退出!
修改配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0中的(上面的配置实质是在修改该文件)
ONBOOT=yes #开机启动
重启网卡:
[root@Gin scripts]# ifup eth0
或者:
[root@Gin scripts]# /etc/init.d/network start
网卡重启后应该就可以连网!笔者虚拟机上使用的是NAT方式!
四:关闭防火墙
查看防火墙的状态:
[root@Gin scripts]# /etc/init.d/iptables status
临时关闭防火墙:
[root@Gin scripts]# /etc/init.d/iptables stop
关闭防火墙后,再次查看防火墙的状态:
[root@Gin scripts]# /etc/init.d/iptables status
iptables: Firewall is not running.
设置开机不启动,此方法在后面介绍!
五:关闭selinux
SELinux (Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里考虑还是先把它关闭,至于安全问题,后面通过其他手段来解决。
查看SELinux状态命令:
/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
SELinux status: enabled
##也可以用这个命令检查
getenforce
临时关闭selinux:
[root@Gin scripts]# setenforce 0
setenforce: SELinux is disabled
永久关闭selinux:
修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled;或直接命令行修改:
[root@Gin scripts]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
生产场景中是不允许重启机器的,上面已经修改了配置文件,但需要重启机器才能生效!我们可以使用临时关闭与永久关闭的方法,来使系统既临时生效,机器重启后也生效,这样就能达到不要重启系统就能使配置生效
设置开机不启动,后文会介绍!
六:添加一个普通账号
[root@Gin scripts]# useradd gin
[root@Gin scripts]# echo '123456'|passwd --stdin gin
Changing password for user gin.
passwd: all authentication tokens updated successfully.
七:将gin普通账户加入到sudo管理
[root@gin ~]# visudo
root ALL=(ALL) ALL //在这一行的下面添加下面的这行内容
gin ALL=(ALL) ALL
给gin用户加入root环境路径:
[root@Gin scripts]$ vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/sbin:/sbin:/usr/sbin
[root@Gin scripts]$ source ~/.bash_profile //重新读取.bash_profile文件里的配置
[root@Gin scripts]$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/poe/bin:/home/poe/bin:/usr/local/sbin:/sbin:/usr/sbin
这样,用gin账号登录时就不会出现命令找不到的情况
visudo命令的作用与用法,请关注本博客!
八:配置国内yum源
这里介绍两种配置方法:
配置前先备份/etc/yum.repos.d/CentOS-Base.repo文件
[root@Gin scripts]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.gin.20170125
1:手动配置!直接编辑/etc/yum.repos.d/CentOS-Base.repo文件
[root@gin ~]# vim /etc/yum.repos.d/CentOS-Base.repo
将该文件中以“mirrorlist=”开头的都注释掉,将baseurl开头的都取消注释,并把主域名修改为“http://mirror.sohu.com”,(也可以改成163,sina等域名),其他的不动
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
baseurl=http://mirror.sohu.com/centos/$releasever/contrib/$basearch/
2:直接下载国内其它的yum源(本例以淘宝的yum源为例)
打开网址:http://mirrors.aliyun.com/,找到centos后面的help,点击进去后就会看到CentOS各个版本,如图
由于前面已经备份过CentOS-Base.repo文件,这里就可以直接使用上面提供的命令,选择CentOS6下面的命令,复制执行即可
[root@Gin scripts]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
补充:
wget:下载命令
参数-O --output-document=FILE 下载并以不同的文件名保存
wget命令详细用法见:http://www.cnblogs.com/ginvip/p/6350189.html
yum下载文件的存放位置:默认的存放路径是:/var/cache/yum
也可以在/etc/yum.conf文件中指定:
cachedir=/var/cache/yum/$basearch/$releasever ## 存放目录,可自定义
keepcache=0 ## 0为不保存下载的文件,1为保存
metadata_expire=1800 ## 过期时间
九:清理开机自启动的服务
首先通过下面的脚本命令关闭所有的开机自启动的服务:
[root@gin ~]# for poe in `chkconfig --list|grep 3:on|awk '{print $1}'`;do chkconfig --level 3 $poe off;done
再执行如下命令开启需要开机自启的服务:
[root@gin ~]# for poe in crond network syslog sshd; do chkconfig --level 3 $poe on;done
一条命令直接搞定上面两步:
[root@ClientA ~]# chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"|sed -r 's#(.*)#chkconfig \1 off#g'|bash
补充:
|bash前面的命令主要就是拼接字符串,拼接成的形式是:chkconfig mysqld off;前面的命令的主要作用就是排除sshd,network,syslog,crond,sysstat这5个服务,其它的服务都拼接成 chkconfig xxxx off的形式。这里拼接出来的都是字符串,要想让字符串当成命令被执行,就需要交给操作系统的解释器来执行,也就是最后面的bash的作用!
sed 后面的 -r 参数的意义就是后面的正则不需要做转义,不加-r参数的话后面的括号,都需要加 \ 来做转义
生产环境一般刚装完系统的自启动服务期望的处理结果就是如下内容(5个):
[root@gin ~]# 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
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#远程连接,必须开启,否则将无法连接linux服务器
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#syslog是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog将各种信息......
sysstat 0:off 1:off 2:off 3:on 4:off 5:off 6:off
十:更改ssh登陆配置
[root@gin ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ori //备份ssh配置文件
[root@gin ~]# vim /etc/ssh/sshd_config
//修改内容如下:
Port 52113 //ssh默认的连接端口必须要修改
PermitRootLogin no //root用户黑客都知道,禁止它远程登陆
PermitEmptyPasswords no //禁止空密码登陆
UseDNS no //不使用DNS
当然,测试环境这步也就无所谓了!
十一:服务器时间同步
[root@poe poe]# /usr/sbin/ntpdate time.nist.gov #公认的时间服务器
25 Jan 11:01:56 ntpdate[1358]: step time server 216.229.0.179 offset -50.291883 sec
上面的命令只同步一次,生产场景中服务器需要每隔5-10分钟就要同步一下时间:
[root@poe poe]# echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1" >>/var/spool/cron/root
[root@poe poe]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
补充:
/dev/null :空设备,位桶,黑洞
下面的3种写法是等价的:
1>/dev/null 2>/dev/null ****** 1>/dev/null 2>&1 & >/dev/null
生产场景中一般利用一台服务器去同步公认的时间服务器,其他机器都同步前面已经同步到公认时间服务器的服务器!
十二:加大服务器文件描述符
有关文件描述符的详细介绍:http://www.cnblogs.com/ginvip/p/6350222.html
文件描述符概念:
- 表示形式为整数数字,一般使用(0-65535)范围
- 进程使用的时候会占用文件描述符(标识打开的文件)
查看默认文件描述符:
[root@Gin scripts]# ulimit -n
1024
临时修改文件描述符:
[root@Gin scripts]# ulimit -SHn 65535
[root@Gin scripts]# ulimit -n
65535
永久修改文件描述符:
[root@poe ~]# echo '* - nofile 65535' >>/etc/security/limits.conf
[root@gin ~]# tail -n1 /etc/security/limits.conf
* - nofile 65535
十三:调整内核参数文件 /etc/sysctl.conf
这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件。
配置 Linux 内核参数修改后不用重启动更新配置: /sbin/sysctl -p
以下配置仅供参考,具体还得视服务器及业务而定:
net.vip4.tcp_fin_timeout = 2
net.vip4.tcp_tw_reuse = 1
net.vip4.tcp_tw_recycle = 1
net.vip4.tcp_syncookies = 1
net.vip4.tcp_keepalive_time = 600
net.vip4.ip_local_port_range = 4000 65000
net.vip4.tcp_max_syn_backlog = 16384
net.vip4.tcp_max_tw_buckets = 36000
net.vip4.route.gc_timeout = 100
net.vip4.tcp_syn_retries = 1
net.vip4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
## 以下参数是对iptables防火墙的优化,防火墙不会提示,可以忽略不理
#net.vip4.ip_conntrack_max = 25000000
#net.vip4.netfilter.ip_conntrack_max = 25000000
#net.vip4.netfilter.ip_conntrack_tcp_timeout_established = 180
#net.vip4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
#net.vip4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
#net.vip4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
打开/etc/sysctl.conf 文件,在尾部,粘贴上面的内容到文件;然后执行/sbin/sysctl -p让参数生效
网络状态说明及优化命令和优化细节请看:http://www.cnblogs.com/ginvip/p/6350252.html
十四:隐藏Linux软件名及内核版本
系统默认的/etc/issue文件内容
[root@poe poe]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
使用以下命令清空该文件:
[root@Andy test]# >/etc/issue
或:
[root@poe ~]# cat /dev/null > /etc/issue
伪造Linux内核信息:
[root@poe ~]# vi /etc/motd
RedHat Enterprice Linux 6.6 (Final)
welcom to Gin linux.
这样再次登录时就会显示上面文件内容的信息:
Last login: Wed Jan 25 12:35:11 2016 from 192.168.17.1
RedHat Enterprice Linux 6.6 (Final)
welcom to Gin linux.
有关/etc/issue文件,/etc/issue.net文件,/etc/motd文件的区别见:http://www.cnblogs.com/ginvip/p/6350281.html
十五:Linux中文显示设置
可通过快捷的命令方式在/etc/sysconfig/i18n中添加如下内容,使其支持中文显示:
[root@poe ~]# cat /etc/sysconfig/i18n
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[root@poe ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.poe.origin
[root@poe ~]# sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.UTF-8#g' /etc/sysconfig/i18n
[root@poe ~]# source /etc/sysconfig/i18n
更改完了服务端的字符集,还需要修改CRT客户端的字符集:
十六:设置linux默认的历史记录数
echo 'HISTSIZE=5' >>/etc/profile
echo 'HISTFILESIZE=5' >>/etc/profile
[root@poe poe]# tail -3 /etc/profile
HISTSIZE=5 ## 命令行的历史记录数量变量
HISTFILESIZE=5 ## 历史记录文件的命令数量变量(~/.bash_history)
更新配置文件:
source /etc/profile
补充:
history命令的其他操作:
history -c ## 清空所有历史记录
history -d 443 ##指定删除历史记录中的第443条记录
十七:为CRT终端设置超时时间
[root@poe poe]# export TMOUT=10 #10秒没有操作就退出!临时生效
永久生效:
[root@poe poe]# echo "export TMOUT=100" >>/etc/profile
[root@poe poe]# tail -1 /etc/profile
[root@poe poe]# source /etc/profile
十八:锁定关键系统文件,防止提权被篡改
锁定以下文件(哪些文件需要被锁定,视情况而定)
[root@poe ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
锁定后不能删除,不能修改,不能移动
想要更为安全,可以把chattr改名转移,防止被黑客利用,命令如下:
十九:清除多余的系统虚拟账号
操作前要先根据公司系统提供的服务确定哪些账号不需要使用,如果不确定那就不做此步优化,视情况而定
如果确定,那就可以在/etc/passwd文件中将此账户给注释掉
二十:为grub引导菜单加密码
如果安装系统时没有设置grub引导密码,可以使用如下密码添加密码:
1)先用/sbin/grub-md5-crypt产生一个md5密码串,如下:
[root@poe poe]# /sbin/grub-md5-crypt
Password:
Retype password:
$1$ij2G9/$MDnlYqVm7HEDnbroqdTff.
2)修改grub.conf文件
注意:password要加在splashimage和title之间这段,否则可能不生效
hiddenmenu
password --md5 $1$ij2G9/$MDnlYqVm7HEDnbroqdTff.
title CentOS 6 (2.6.32-504.el6.x86_64)
二十一:禁止linux系统被ping
[root@poe poe]# echo "net.ipv4.icmp_echo_ignore_all=1" >>/etc/sysctl.conf
[root@poe poe]# sysctl -p
此优化后期可以使用iptables来替代,一般不需要禁止ping
Linux系统安全最小化原则说明
1)安装Linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装
2)开机自启动服务最小化,即无用的服务不开启
3)操作命令最小化。如:用rm -r test.txt 而不用 rm -rf test.txt
4)登录Linux用户最小化。平时没有需求不用root登录,用普通用户登录即可
5)普通用户授权权限最小化,即只给必须的管理系统的命令
6)Linux系统文件及目录的权限设置最小化,禁止随意创建,更改,删除
企业场景面试题:
1:Linux系统如何优化?
Linux基础优化其它参考:
http://oldboy.blog.51cto.com/2561410/988726
http://lspgyy.blog.51cto.com/5264172/1308977
Linux运维二:CentOS6.6系统安装后的基本配置与优化的更多相关文章
- 如何掌握并提高linux运维技能
初中级Linux运维人员们系统学习并迅速掌握Linux的运维实战技能.学习路线大纲如下: 入门基础篇 系统运维篇 Web运维篇 数据库运维篇 集群实战篇 运维监控篇 第一篇:Linux入门(安装.配置 ...
- 6 个 Linux 运维典型问题
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...
- 6 个 Linux 运维典型问题,大牛的分析解决思路在这里 【转】
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...
- 如何迅速掌握并提高linux运维技能(收藏文)
如何迅速掌握并提高linux运维技能 文章来源于南非蚂蚁 之前曾经写过一篇如何学习Linux的文章,得到了很多反馈,大家都在分享自己的学习经验和体会,并且也提出了不少意见和建议.学习这个事情其 ...
- 6 个 Linux 运维典型问题,大牛的分析解决思路在这里
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...
- linux运维中的命令梳理(二)
回想起来,从事linux运维工作已近5年之久了,日常工作中会用到很多常规命令,之前简单罗列了一些命令:http://www.cnblogs.com/kevingrace/p/5985486.html今 ...
- Linux运维:CentOS6和7的区别
Liunx笔记:CentOS6和CentOS7的区别 路飞学城运维人员 在线流程图软件 Ago linux运维群: 93324526 笔者QQ:578843228 常用安装包下载 yum instal ...
- 教老婆学Linux运维(二)Linux常用命令指南【上】
目录 教老婆学Linux(二)Linux常用命令指南[上] 一.概述 二.常用命令 教老婆学Linux(二)Linux常用命令指南[上] 作者:姚毛毛的博客 tips:文章太长,分两篇发出,本篇发前三 ...
- Linux运维入门到高级全套常用要点
Linux运维入门到高级全套常用要点 目 录 1. Linux 入门篇................................................................. ...
随机推荐
- Scrum Meeting 8 -2014.11.14
给开发加了个pdf信息提取优化任务. 弄了半天发现服务器也是个好东西.这周末可以和爬虫讨论整合的问题了. Member Today’s task Next task 林豪森 协助测试及服务器部署 协助 ...
- Daily Scrum (2015/11/1)
今天晚上我们照例召开了每周末的小组例会,主要总结本周的工作和讨论下一周的工作. 首先是本周的一些主要工作: 1.进行了代码的修改和完善. 2.开始进行服务器配置和UI. 3.学习借鉴了nutch爬虫的 ...
- 2018-2019-20172329 《Java软件结构与数据结构》第九周学习总结
2018-2019-20172329 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.图及无向图 1.图的相关概 ...
- Chapter 11 软件演化
软件一直在不断地演化发展,人们通常通过软件维护和软件再工程解决软件的缺陷.软件维护可以分为改正性维护.适应性维护和完善性维护几种类型.软件维护受开发过程影响大.软件维护困难大.软件维护成本高.软件维护 ...
- VS2010中配置OpenGL
下面将对VS2010中配置OpenGL进行简单介绍. 学习OpenGL前的准备工作第一步,选择一个编译环境现在Windows系统的主流编译环境有Visual Studio,Broland C++ Bu ...
- 剑指offer:旋转数组的最小数字
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...
- vue.js常用指令
本文摘自:http://www.cnblogs.com/rik28/p/6024425.html Vue.js的常用指令 上面用到的v-model是Vue.js常用的一个指令,那么指令是什么呢? Vu ...
- 《构建之法》第四&十七章读书笔记
<构建之法>第四&十七章读书笔记 一. 前言 再次阅读<构建之法>,愈发被其中生动有趣的举例吸引.作为一本给予软件工程学生的书籍,其不以枯燥的理论知识 ...
- 树莓派配置RTC时钟(DS3231,I2C接口)
1.购买基于DS3231的RTC时钟模块,并且支持3.3V的那种 2.配置树莓派 a.打开树莓派的i2c接口 sudo raspi-config -->Interfacing Options - ...
- vue 笔记1
created 钩子可以用来在一个实例被创建之后执行代码: new Vue({ data: { a: 1 }, created: function () { // `this` 指向 vm 实例 co ...