当前位置: 首页 > 编程日记 > 正文

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

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小节的D、E步骤即可


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

C. 配置http服务器,发布上一步装载的目录,以nginx配置为例子 假设服务器IP为192.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影响网络性能或有丢包现象,执行以下命令以优化之

在高流量状态下,如果iptables的hash表过小,就会出现丢包现象,系统日志中产生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端口)服务

单个IP到80端口的并发连接最多为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

转载于:https://www.cnblogs.com/sunbeidan/p/8477614.html

相关文章:

关于Cocoa Pods的升级安装和使用说明

前段时间要使用Cocoa Pods ,安装时发现Ruby版本过低导致安装失败, 查找教程解决后又出现Cocoa Pods新版本导致的问题, 以下给出解决办法: 一 . 升级Ruby 1.安装RVM RVM是用于Ruby的版本管理 安装命令行: $ curl -L get.rvm.io | bash -s stable $ source ~/.rvm/scripts/rvm 等…

Linux使用netstat命令查看并发连接数

我们的网站部署在linux的服务器上,特别是web服务器,我们可能有时候做为运维人员,肯定是要查看网站的并发连接数是不是达到瓶颈等,所以在linux下,我们如何查看服务器的并发连接数呢?使用以下命令即可分组查看…

深入挖掘Hyperledger Fabric中的私有数据

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 深入挖掘Hyperledger Fabric中的私有数据 私有数据是fabric中讨论最多的特性,在v1.2中发布。它在多个参与者之间引入了数据隐私…

几种任务调度的 Java 实现方法与比较

综观目前的 Web 应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有…

7.Mongodb复制(副本集)

1、复制 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性复制还允许从硬件故障和服务中断中恢复数据为什么要复制 数据备份数据灾难恢复读写分离高(24* 7&#xff…

关于iOS10的适配

每一次的iOS升级, 都伴随着各种坑的出现, 今年iOS10也不例外 本着一定要紧随最新科技的开发态度, 最近将手机升级到了iOS10, xcode升级到了8.0 但是紧随而来的就是各种崩溃, 各种坑, 现列举如下: 一 . 用户隐私权限的访问 公司是做视频直播的, 所有在用户隐私权限上面还是有…

分布式系统中节点之间的同步形成区块链

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 分布式系统中节点之间的同步形成区块链 分布式系统由Tanenbaum定义,“分布式系统是一组独立的计算机,在”分布式…

hdu 2199 Can you solve this equation? 二分

1.精度问题 由于是double类型,rmid 而不是rmid-12.如果首位两端(f(0)和f(100))同号,证明解不在[1,100]区间内 这是我之所以TE的原因,没有预先判断3.若在这个区间内&#…

iOS iTunes Connect协议更新导致无法构建新版本

最近公司项目发新版本时遇到不能构建新的版本的情况, 了解后才知道 必须同意更新后的协议才能构建新版本、创建内购App,提交新的App 点击其中的蓝色文字进入相关界面 这样就可以构建新版本了 参考博客: http://blog.sina.com.cn/s/blog_134451adb0102wger.html

白话hash和数字签名,保证你看得懂

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 摘要:最近有朋友在后台问为啥最近老介绍hash相关文章,其实hash算法在信息安全中非常重要,尤其是作为数字…

几种Windows进程通信

32位Windows采用虚拟内存技术使每个进程虚拟4G内存,在逻辑上实现了对进程之间数据代码的分离与保护。那么相应的进程之间的通信也就有必要整理掌握一下。 Windows进程间通讯的方法有很多:管道、邮件槽、剪切板、共享内存、消息、套接字、RPC、DDE等。 但…

TestNG学习随笔

转载自:http://blog.sina.com.cn/s/blog_68f262210102vh5c.html 通过本人实践,文中所讲的程序可以正确运行,作用正确,并且浅显易懂。以下就是我从中摘录的重要知识点,就当留作自己记录或者帮助其他想学TestNG的人一点借…

录制短视频的录制按钮边框计时效果

项目增加录制短视频功能, 需一录制功能按钮, 使用贝塞尔曲线结合shapelayer绘制按钮边框的计时功能 代码如下: #import "YGRecordView.h" #define BeforeRecord_LineWidth 2.0#define BeforeRecord_LineColor UIColorFromRGBA(0xffffff, 1)#define Record_LineWidt…

区块链学堂:区块链引子

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 区块链学堂(1):区块链引子 相信正在看这篇文章的读者一定已经听说过区块链了,并且也相信…

Git命令文本手册

git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --global user.email "xxxxxx.com" …

Mininet的介绍安装

Mininet的介绍 Mininet是一个强大的网络仿真平台,通过这个这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。当前SDN/OpenFlow发展的如火如荼,但是在真实网络中又不可以进行相关的网络实验,自然需要一个仿真平台可以对这…

项目的简单总结一 -- 关于对贝塞尔和shapelayer结合使用的动画特效

现项目基本稳定, 要开始新的项目, 总结一二 关于对贝塞尔和shapelayer结合使用的动画特效, 在这次的项目中有几处使用到 故做了个小的demo, 记录下 效果如下: demo地址:https://github.com/wyon0313/BezierAnimation

内部区块链的优缺点

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 内部区块链的优缺点1 区块链的作用是取代可信赖的第三方,或者是在不完全相互信任的实体之间建立信任关系,如此看来…

Spring框架系列之AOP思想

微信公众号:compassblog 欢迎关注、转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1、AOP概述 (1)、什么是 AOP AOP 为 Aspect Oriented Programming 的缩写,意为…

jstack 使用(转)

dump 文件里,值得关注的线程状态有:死锁,Deadlock(重点关注) 执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monit…

ios TableView编辑状态多选框的修改

在- (void)layoutSubview 和 - (void)setEditing:(BOOL)editing animated:(BOOL)animated 中添加 UIImage *selectImg [UIImage imageNamed:"im_select_sign"]; UIImage *disSelectImg [UIImage imageNamed:"im_disSelect_sign"]; for (UIC…

区块链有哪些技术特征

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 区块链有哪些技术特征 在信息网络化的大背景下,当需要与不熟悉的对手方进行价值交换活动时,人们如何做才能防止不会…

《JavaEE开发的颠覆者——Spring Boot实战》是一本好书

这本书的风格非常好、每一节都是先点明这一块知识的要点,随后就手把手的做出一个最简明、但有能体现核心的实例(大多只有几个Class) 这样的书用来熟悉一门框架,实在是再好不过。转载于:https://www.cnblogs.com/nanlan2017/p/1045…

html css 布局知识概况

1、如果想设置页面居中,当设置margin属性为auto的时候,不能在设置浮动或绝对定位属性。并且一定要设置width为一个定值 2、盒子模型三维立体结构图 3、浮动布局 利用浮动可以实现横向布局,通过float来实现(left--左浮动&#xff0…

项目的简单总结二--可拉伸的头视图

项目总结二 tableVIew和collectionview中头视图的可拉伸放大效果 demo中只做了tableview的效果, collectionview做法一样 效果如下图: demo地址: https://github.com/wyon0313/ZoomHeaderView

浅谈区块链技术

链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载。 浅谈区块链技术 这几天空闲的时候在网上浏览了一些区块链的技术,其实区块链只是一个技术,只不过是比特币很好的实…

IIS 7.5 去掉index.php 西数服务器

//新建web.config 加上下面代码<?xml version"1.0"?> <configuration> <system.webServer><rewrite><rules><rule name"OrgPage" stopProcessing"true"><match url"^(.*)$" /><condit…

bzoj1927: [Sdoi2010]星际竞速

跟上一题几乎一样。。。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; #define rep(i,n) for(int i1;i<n;i) #define clr(x,c) memset(x,c,sizeof(x)) #define op() cl…

在cell中取得UITableView所在的ViewController对象

原来碰到这个问题一般会将控制器传进cell中, 或者将cell要做的响应事件回调到控制器去处理, 前段时间找到一种方法觉得很不错 - (UIViewController *)getTableViewSuperViewController { for (UIView* next [self superview]; next; next next.superview) { UI…

区块链当前现状

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自链客区块链技术问答社区&#xff0c;未经允许拒绝转载。 区块链是分布式账本技术&#xff0c;用于记录交易数据&#xff0c;具有不可篡改性、完整分布性、可追溯性等技术优势&#xff0c;应用包括…