设为首页 收藏本站
查看: 895|回复: 0

[经验分享] RHEL/CentOS通用性能优化、安全配置参考

[复制链接]

尚未签到

发表于 2016-5-12 08:47:15 | 显示全部楼层 |阅读模式
 

RHEL/CentOS通用性能优化、安全配置参考

 
本文的配置参数是笔者在实际生产环境中反复实践总结的结果,完全适用绝大多数通用的高负载、安全性要求的网络服务器环境。故可以放心使用。
 
若有异议,欢迎联系zhangxugg@163.com探讨。
 
提示:强烈建议使用RHEL 5.6/CentOS 5.6及以上版本的系统,否则可能会有差异。
 
一、配置yum更新源
CentOS不需要配置可以直接使用官方提供的yum源(但速度往往较慢),而RHEL在没有购买授权服务情况下,是无法使用redhat官方的yum源的。如果你使用了CentOS但对其官方提供的yum源下载速度不满意,或使用RHEL,需要从安装光盘(或ISO镜像)建立自己的yum源,那么请参照本节。
一般来说,建立yum更新源有三种方式
使用本地物理光盘
使用本地ISO文件
使用HTTP/FTP服务器

这几种方式中,使用本地光盘、本地ISO文件的缺陷很明显--只能为本机使用,无法实现网络yum源共享,所以推荐使用HTTP方式建立yum更新源。以RHEL为标准,分别介绍这三种方式的配置
 
1. 使用本地光盘镜像
A. 将光盘放入光驱(虚拟机如VM, virtualbox,应该是为虚拟机分配光驱)
B. 建立挂载点
mkdir /mnt/cdrom
C. 装载光盘至挂载点 
mount /dev/hdc /mnt/cdrom/
D. 编辑文件 /etc/yum.repos.d/local.repo ,输入以下内容
[base]
name=Red Hat Enterprise Linux Local Source
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
[Cluster]
name=Red Hat Enterprise Linux Cluster
baseurl=file:///mnt/cdrom/Cluster
 
[ClusterStorage]
name=Red Hat Enterprise Linux ClusterStorage
baseurl=file:///mnt/cdrom/ClusterStorage
E. 验证是否配置成功
yum repolist

2. 使用本地ISO镜像, 方法与使用光盘大同小异
A. 将系统镜像ISO文件上传至服务器某个目录中(我使用的镜像文件名为rhel-server-5.4-i386-dvd.iso
B. 建立挂载目录  mkdir /mnt/OS

C. 卸载光驱并装载ISO文件至挂载目录   
umount /mnt/cdrom/
mount -o loop rhel-server-5.4-i386-dvd.iso /mnt/cdrom/
D. 其它配置请参照第1小节的DE步骤即可

3. 使用HTTP方式建立yum源,这需要预先在服务器上安装Http Server,如apache, nginx,lighttpd均可。
A. 准备好系统ISO镜像文件,上传到yum服务器某个目录中
B. 参照第2小节,将ISO文件装载到某个目录中,假设为 /mnt/os
C. 配置http服务器,发布上一步装载的目录,以nginx配置为例子 假设服务器IP192.168.56.101

server {
  server_name 192.168.56.101;
  location /rhel-5.4 {
    alias  /mnt/os;
    autoindex on;
  }
}
 
D. 删掉旧的yum配置文件
mv -f /etc/yum.repos.d/* ~/
 
E. 编辑文件 /etc/yum.repos.d/onlineyum.repo 输入以下内容
[base]
name=Red Hat Enterprise Linux Online Source
baseurl=http://192.168.56.101/rhel-5.4/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
[Cluster]
name=Red Hat Enterprise Linux Cluster
baseurl=http://192.168.56.101/rhel-5.4/Cluster
 
[ClusterStorage]
name=Red Hat Enterprise Linux ClusterStorage
baseurl=http://192.168.56.101/rhel-5.4/ClusterStorage

F. 测试配置是否生效
yum repolist
 
提示:
请将nginx配置中的server_name, onlineyum.repo文件中的主机名按实际情况修改
如此处理后,其它服务器只要按上述步骤建立/etc/yum.repos.d/onlineyum.repo文件即可使用共享的yum源了

二、环境设置
主要是设置shell的环境,使日常的操作更为便捷
1.  去掉SSH登录时DNS反向解析,以加快终端登录速度
sed  -r "s/.*UseDNS.+/UseDNS no/i" /etc/ssh/sshd_config  > /tmp/sshd_config
mv -f /tmp/sshd_config /etc/ssh/sshd_config
service sshd restart
 
2. 设置vi, vim的默认的tab、行号显示参数
echo "set tabstop=4" >> /etc/virc
echo "set tabstop=4" >> /etc/vimrc
echo "set number" >> /etc/virc
echo "set number" >> /etc/vimrc
 
3. 设置vim的别名为vi, 这样当我们使用vi命令时,实质上是使用了vim
echo "alias vi=vim" >> ~/.bashrc
source ~/.bashrc
 
4. 设置正确的时区
cp  /usr/share/zoneinfo/Asia/Chongqing  /etc/localtime
 
printf 'ZONE="Asia/Chongqing"\nUTC=false\nARC=false' > /etc/sysconfig/clock

 
#更新系统时间
ntpdate pool.ntp.org
 
#执行crontab -e, 输入以下内容,每天凌晨6点更新系统时间
06***/sbin/ntpdate pool.ntp.org  2>&1 | /bin/logger
 
5. 设置终端为英文,避免中文显示乱码的不必要麻烦
echo 'LANG="en_US.UTF-8"' > /etc/sysconfig/i18n
source  /etc/sysconfig/i18n
 
6. 停止SELinux功能,避免出现异常现象。设置/etc/sysconfig/selinux文件中
SELINUX=disabled

三、服务优化 只开启必要的服务,提高安全性和性能
安装完Linux之后,以下服务是必须的必须开启(以RHEL 5.6为参照),没列出的服务可关闭
acpid   #高级控制电源管理接口
crond   #定时执行任务
haldaemon  #必须开启,否则可能导致控制台键盘鼠标无法使用
hidd       #同上
irqbalance   #支持多cpu中断,必须开启
kudzu       #检测硬件变化时自动进行配置 
lvm2-monitor  #用于监测LVM状态
messagebus   #Linux系统进程间通讯的关键服务
mdmonitor    #监测软RAID健康状态  即使没有使用软RAID, 也强烈建议启用此服务
mdmpd       #同上,即使没有多路径存储设备,也强烈建议启用之
network       #网络支持
readahead_early  #预先加载特定的应用程序到内存中以提供性能
readahead_later  #同上
smartd          #硬盘故障自动检测
sshd            
syslog
klogd           #如果服务列表中存在,则必须开启
 
提示:配置服务可使用ntsysv工具,比较方便
 
其它强烈建议开启的服务
iptables    #使用内核防火墙保护服务器 请根据具体需要配置防火墙规则
 
 
四、Linux内核优化
1. 如果使用了iptables防火墙,则按以下参数优化
#如果发现iptbles影响网络性能或有丢包现象,执行以下命令以优化之
在高流量状态下,如果iptableshash表过小,就会出现丢包现象,系统日志中产生ip_conntrack: table full, dropping packet.这时网络传输变得超慢。
  
设置为65536, 意味着netfilter可以跟踪65536*8=50多万个连接,逐步调整此值,直到不出现丢包现象为至。另外,如果这个值设置大,也会有警告:falling back to vmalloc 因此不能过大
 
grep -i "ip_conntrack" /etc/modprobe.conf || \

echo "options ip_conntrack hashsize=65536" >> /etc/modprobe.conf

 

echo "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200" >> /etc/sysctl.conf

service iptables restart

sysctl -p

 

提示:当重启iptables服务时,以上参数会失效,所以请务必修改/etc/init.d/iptables脚本

case "$1" in

    start)

    stop

    start

修改为

case "$1" in

    start)

    stop

    start

    /sbin/sysctl -p  > /dev/null 2>&1

 

即在iptables启动之后,强制重新加载/etc/sysctl.conf的配置

 
 
2. 优化内核网络相关参数,向/etc/sysctl.conf中追加以下内容
net.core.netdev_max_backlog=3000
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
 
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_max_syn_backlog=8192
net.ipv4.tcp_max_tw_buckets = 9000
 
net.ipv4.tcp_syn_retries = 1
 
net.core.rmem_max=16777216
net.core.wmem_max=16777216
 
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_rmem=4096 87380 16777216
net.ipv4.tcp_wmem=4096 65536 16777216
 
net.ipv4.ip_local_port_range = 102465535
vm.swappiness = 10
 
使用sysctl -p使配置生效。
 
在机器可重启动情况下,强烈建议重启以确认配置生效
 
五、配置iptables防火墙规则
在没有其它防火墙保护措施时,一定要尽可能使用iptables的强大功能保护好您的服务器。如果不善于使用iptables, 则不是一个合格的系统工程师
 
如果不使用iptables, 此小节不必实践
提示:在配置防火墙规则时为防止自己被拒之门外,强烈建议在作以下措施
运行crontab -e 输入以下内容
*/3   *   *   *   *  /etc/init.d/iptables stop
 
即每3分钟自动停止防火墙。这样即使由于配置错误使自己被拦截,等待3分钟之后,即可解除。
 
开始配置防火墙规则
这里假设服务器使用两个IP段地址12.35.56.0/24(公网IP),192.168.0.0/16(内网)
服务器提供http (80端口)服务
单个IP80端口的并发连接最多为30
来自一个C类网段的并发连接最多为600
ping的频率最多为10个请求每秒
来自同IP段的任何连接信任
信任已经建立的连接。
服务器出站连接全部允许
允许到1723端口的VPN连接以及gre协议(此服务器同时作为VPN服务器使用)
其它入站连接全部禁止
允许所有的出站连接
 
提示:本内容在RHEL 5.6 /CentOS 5.6版本上测试通过,对旧版本系统,可能会有问题
 
/etc/sysconfig/iptables中的内容为
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [94:9668]
-A INPUT -i lo -j ACCEPT 
-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -s 12.23.56.0/24  -j ACCEPT
-A INPUT -p icmp -m limit --limit 10/sec --limit-burst 30 -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20  --connlimit-mask 32 -j DROP
-A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 600 --connlimit-mask 24 -j DROP
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 1723 -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -j DROP
COMMIT
 
重启防火墙以使规则生效
service iptables restart
 
提示:经过测试发现RHEL 5.4系统上,iptables没有限制并发连接模块。
 
测试若没有问题,运行crontab -e 去掉我们开始添加的自动停止防火墙的任务
启用服务
chkconfig iptables on
 
如果发现本文中有错误,欢迎反馈至zhangxugg@163.com
 
强烈建议重启机器进行验证
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-215810-1-1.html 上篇帖子: CentOS 5.3支持ntfs分区的两种办法 下篇帖子: CentOS 5.5下FTP安装及配置(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表