本篇博文主要是参考并借鉴老男孩老师的优秀博文外加自己总结及写的优化脚本!博文地址:http://oldboy.blog.51cto.com/2561410/1336488
虽然我并没有参加过老男孩老师的培训但是看过他的优秀视频和优秀博文,接受过他的熏陶与教育,在这里十分感谢老男孩老师!!!
还有这篇博文之中一些操作与脚本的编写非常感谢京峰老师们的帮助!
主要优化的目录
我使用的linux版本是CentOS6.6 x86_64
1.网络配置优化
2.关闭selinux及清除iptables链
3.设定运行级别runlevel
4.精简启动项
5.配置yum源
6.设置字符集
7.配置sudo授权管理
8.ssh服务优化
9.调整服务器文件描述符
10.定时清理clientmquene目录垃圾文件防止占满磁盘空间
11.设置时间同步
12.隐藏登录时的系统版本信息
13.锁定关键的系统文件(本可以变更chattr命令,由于一些用户添加,暂不写入)
一、网络配置优化
针对网络配置的优化我这里先介绍一下,由于我是linux初学者使用虚拟机,便于对自己虚拟机的管理,网络配置优化是包括IP地址的排序管理,gateway、netmask和dns的一致性等!
[[email protected] /]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes #启动时激活网卡 BOOTPROTO=static #静态 IPADDR=192.168.137.6 #IP地址,我的一般是6,7,8…… NETMASK=255.255.255.0 #子网掩码 GATEWAY=192.168.137.1 #网关 [[email protected] /]# vi /etc/resolv.conf nameserver 114.114.114.114 #配置DNS1 nameserver 8.8.8.8 #配置DNS2 [[email protected] /]# vi /etc/sysconfig/network NETWORKING=yes #启动自动联网 HOSTNAME=optimization #主机名
二、关闭selinux及清除iptables链
为了防止出现各种问题一般都会将selinux关闭及防火墙关闭,这里我是清除iptables链.....
关闭selinux
[[email protected] /]# vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled #将原来的enforcing改成disabled就可以了 # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
或者使用一条命令直接更改
[[email protected] /]# sed ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
一般的更改selinux在系统重启之前是不会生效的,但是linux系统一般很少会重启的所以还需要加个命令
[[email protected] /]# setenforce 0 [[email protected] /]# getenforce Permissive
这样临时设置selinux为permissive状态,重启之后自然为disabled状态
清除iptables链
[[email protected] /]# iptables -F #清除规则链 [[email protected] /]# iptables -L #查看规则链 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination [[email protected] /]# service iptables save #保存规则链 iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
三、设定运行级别
设定linux运行级别为runlevel3
[[email protected] /]# cat /etc/inittab |grep -v "#" id:3:initdefault: #将id后面的数字改成3及命令行级别
四、精简启动项
刚刚做完的系统可以只保留crond(定时服务)、network(网络服务)、rsyslog(日志系统)、sshd(远程连接)这四个服务
查看级别3开的服务
[[email protected] ~]# chkconfig --list|grep "3:on" #由于下面开启的服务较多就不一一列举了
关闭其他服务只保留着四个服务
可以去setup --system service设置
或者ntsysv设置,但是这两种方法都比较麻烦
所以直接用下面方法就能直接执行
[[email protected] ~]for cleaner in `chkconfig --list|grep "3:on"|awk ‘{print $1}‘|grep -vE "crond|network|rsyslog|sshd"`;do chkconfig $cleaner 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
其中grep -E可以用egrep代替
五、配置yum源
由于一些yum源是CentOS官网的源是国外的源网站比较慢,所以我准备配置网易源
可以参考这个网站http://www.centoscn.com/CentOS/config/2014/0920/3796.html
首先备份原来的yum源
[[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Vault.repo [[email protected] yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak
其次下载网易yum源
[[email protected] yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
然后重命名
[[email protected] yum.repos.d]# cp CentOS6-Base-163.repo CentOS-Base.repo cp: overwrite `CentOS-Base.repo‘? y
最后生成缓存
[[email protected] yum.repos.d]# yum clean all&&yum makecache
六、设置字符集
个人觉得还是英文字符集较好,这里只是提下如何修改,在后面的优化脚本中都是英文字符集
查看字符
[[email protected] ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
修改中文字符集
[[email protected] ~]# sed ‘s#LANG="zh_CN.GB18030"#LANG="en_US.UTF-8"#g‘ /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" [[email protected] ~]# source /etc/sysconfig/i18n [[email protected] ~]# cat /etc/sysconfig/i18n LANG="zh_CN.GB18030" SYSFONT="latarcyrheb-sun16"
修改英文字符集
[[email protected] ~]# sed -i ‘s#LANG="zh_CN.GB18030"#LANG="en_US.UTF-8"#g‘ /etc/sysconfig/i18n [[email protected] ~]# source /etc/sysconfig/i18n [[email protected] ~]# cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
七、配置sudo授权管理
为了下面的ssh登录,并且需要减少root用户的使用
[[email protected] ~]# useradd kysida [[email protected] ~]# echo "123456"|passwd --stdin kysida&& history -c Changing password for user kysida. passwd: all authentication tokens updated successfully. [[email protected] ~]# visudo
在root 一行下面加上自己新增的用户
root ALL=(ALL) ALL
kysida ALL=(ALL) ALL
八、ssh服务优化
ssh服务优化包括两点:禁root用户登录;非22端口登录。
ssh优化是针对/etc/ssh/sshd.config这个文件
[[email protected] ~]# sed -i‘s/#Port 22/Port 52113/g;s/#PermitRootLogin yes/PermitRootLogin no/g‘ /etc/ssh/sshd_config [[email protected] ~]# /etc/init.d/sshd reload #重新加载ssh配置 [[email protected] ~]# netstat -lnt
九、调整服务器文件描述符
文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
[[email protected] ~]# ulimit -n #查看文件描述符大小 1024 [[email protected] ~]# ulimit -HSn 65535 #增加到文件描述符大小 [[email protected] ~]# ulimit -n 65535
这只能临时保存,但是永久保存需要将下面两行写入/etc/security/limits.conf文件中保存并退出后生效
* soft nofile 65535
* hard nofile 65535
十、定时清理clientmquene目录垃圾文件防止占满磁盘空间
查看系统当前的磁盘分区及磁盘使用率
[[email protected] ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1.8G 15G 11% / tmpfs 491M 0 491M 0% /dev/shm /dev/sda1 190M 27M 153M 16% /boot
手动删除clientmquene中的垃圾文件
find /var/spool/clientmqueue/ -type -f |xargs rm -f
若要定时清理则加入到crontab中
[[email protected] ~]# echo "0 0 * * * `find /var/spool/clientmqueue/ -type -f |xargs rm -f `> /dev/null 2/&1" >> crontab"
十一、设置时间同步
这里并不是部署ntp服务器来设置时间同步
首先安装ntpdate命令
[[email protected] /]# yum -y install ntpdate
同步时间
[[email protected] /]# ntpdate ntp.fudan.edu.cn 5 Aug 14:44:41 ntpdate[1882]: step time server 61.129.42.44 offset -26855.718069 sec
设置自动同步时间
[[email protected] etc]# crontab -e */30 * * * * /usr/sbin/ntpdate ntp.fudan.edu.cn
十二、隐藏登录时的系统版本信息
一般的登录界面的时候会出现一些版本内核信息,也是为了安全将会隐去这些信息!
而这些信息在/etc/issue这个文件中
[[email protected] /]# </etc/issue
或者这条命令也行
[[email protected] /]# cat /dev/null > /etc/issue
十三、锁定关键的系统文件
使用chattr 命令
[[email protected] /]# chattr +i /etc/passwd etc/group /etc/shadow /etc/gshadow /etc/inittab
如果想解锁那就 chattr -i
但是如果更想安全的话自己可以偷偷的把这个命令换个名字哈哈!
这篇博文写的时间有点长,感觉不太理想,哎。。。脚本正在写我会尽快传上去的~~~