初创公司服务器改造方案

  • 初创公司场景
    • 服务器改造项目需求
    • 服务器型号选择
      • 一些想法
  • 服务器配置详解
    • 一、CentOS7系统安装
    • 二、安全配置及初始化操作
    • 三、DHCP服务器搭建
    • 四、关闭防火墙、selinux
    • 五、DNS服务器搭建
      • 正向解析配置
      • 反向解析配置
      • DNS服务器测试
    • 六、动态扩容技术LVM逻辑卷
    • 七、总结一下

初创公司场景

  • 初期的创业公司,公司内部网络架构相当混乱,IP地址需要手工配置,随着公司的发展,公司的研发能力不断完善,保证数据机密性和安全性。

服务器改造项目需求

  1. 需要重新采购一台服务器(根据业务选型),网络单独划分一个网段,作为以后服务器专用网段。请写出选型参考。
  2. linux 操作系统,版本采用 CentOS7(64 位),采用带桌面的安装,而且带有开发工具包。分区使用逻辑卷形式,系统安装后简单安全配置及初始化操作。
  3. 搭建 DHCP服务器
  4. 搭建 DNS 服务器
  5. 随着公司数据的爆发势增长,希望增加一块20G硬盘,将原有数据迁移到新硬盘上。同时考虑以后不断增加,采用具有动态扩容技术LVM方式将原有数据无损迁移。

服务器型号选择

一些想法

  • 初期创业公司启动资金不是很充足所以服务器购买预算考虑15k-20k
  • 服务器的品牌选择好后主要是考虑到四大因素,CPU、内存、网卡、磁盘
  • 服务器选择的时候我们一般会选择比当前需求更高的配置,预防短期时间内需求的提升
  • 需要确认服务器运行程序,结合项目分析需要运行 DNS服务、DHCP服务等,虽然都算不上CPU密集计算型服务,由于运行的服务还是比较多,加上现在服务器CPU基本都是至强系列,考虑先买单个12核,后期要转变成密集型服务再考虑添加一个 CPU 即可!
  • 内存和 cpu 是分不开的,上述已经说到不是密集计算型的服务,每个服务占用内存不会超过2G,至少应该需要 8G 内存左右,而且必须保证后期根据业务的需求能扩展到更高。
  • 磁盘方面的考虑,需要存储大量的重要数据,这里选择3块硬盘,每块硬盘大小为 500G,热插拔型,组成 RAID5,在读写上会有所保证,且数据安全性上比较可靠。
  • 综上所述,选择一个主流品牌戴尔(DELL)Poweredge R740服务器 配置为12C/16G/600 * 2 500G * 1 满足需求
  • 选择京东购买 有足够的售后保障
  • 由于需要组成RAID5,选择加装一块500G硬盘
  • RAID 5详解
    RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。 RAID 5可以理解为是RAID 0和RAID 1的折中方案。RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息,RAID 5的磁盘空间利用率要比RAID 1高,存储成本相对较低,是运用较多的一种解决方案。

服务器配置详解

一、CentOS7系统安装

一、CentOS7系统的下载 https://www.centos.org/

二、基础分区

  • 设备类型采用LVM逻辑卷

  • 安装带有桌面的环境并且配置开发工具

二、安全配置及初始化操作

一、网络配置

[root@gongsi ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33    #进入网卡配置
  • 网络需要配置IP地址、子网掩码、网关、DNS服务器
  • DNS地址由公司路由器提供

二、YUM源的配置

[root@gongsi ~]# yum install -y wget    #安装wget
[root@gongsi ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   #将YUM源连接至阿里云
[root@gongsi ~]# yum clean all          #清除YUM的缓存
[root@gongsi ~]# yum repolist           #刷新YUM源

三、密码安全控制

  • 为了降低密码被猜出或被暴力破解的风险,避免长期使用同一个密码,在服务器端限制用户密码的最大有效天数,对于密码已经过期的用户,登陆时将被要求重新设置密码,否则将拒绝登录
[root@gongsi ~]# chage -M 30 lilei
[root@gongsi ~]# chage -M 30 hanmeimei      #执行chage命令将有效期设置为30天
[root@gongsi ~]# cat /etc/shadow            #检查是否修改成功  查看密码详细文件

四、命令历史自动清除

  • Shell环境的历史命令机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作将会一览无余,如果曾经在命令行输入明文的密码,则无意之中服务器的安全堡垒又多了一个缺口。
  • Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条,通过修改 /etc/profile 文件中的HISTSIZE变量值,可以影响系统中的所有用户。
[root@gongsi ~]# vim /etc/profile           #进入配置文件   本命令适用于新用户
HISTSIZE=200                                #将默认存储1000条命令改为200条
[lilei@gongsi ~]$ export HISTSIZE=200       #进入李雷账户为其修改历史命令保存200条
[hanmeimei@gongsi ~]$ export HISTSIZE=200   #进入韩梅梅账户为其修改历史命令保存200条
# export HISTSIZE命令适用于现有账户
  • 还可以修改用户宿主目录中的 ~/.bash_logout 文件,添加清空命令历史的操作语句。这样,当用户退出已登录的Bash环境以后,所记录的历史命令将自动清空。
[root@gongsi ~]# vim ~/.bash_logout    #进入配置文件
# ~/.bash_logout
history -c
clear
  • 闲置超时时间,当超过指定的时间没有任何输入时即自动注销终端,可以避免当管理员不在时其他人员对服务器的误操作风险。闲置超时由变量 TMOUT 来控制,默认单位为秒。
[root@gongsi ~]# vim /etc/profile       #进入配置文件   本命令适用于新用户
export TMOUT=600                        #修改闲置超时时间设置为600秒
[root@gongsi ~]# export TMOUT=600       #为root用户设置超时限制600秒
[lilei@gongsi ~]$ export TMOUT=600      #为李雷用户设置闲置超时时间600秒
[hanmeimei@gongsi ~]$ export TMOUT=600  #为李雷用户设置闲置超时时间600秒

五、su和sudo的权限设定

5.1)su命令——切换用户

公司运维工程师背景 李雷为公司高级运维工程师 韩梅梅为公司新来的员工 需要做权限限定

[root@gongsi ~]# vim /etc/pam.d/su       #进入su文件
auth            required        pam_wheel.so use_uid     #将文件中的配置文件开启

5.2)将允许使用su命令的用户加入到wheel组

背景:李雷有时候需要进行深入系统操作将其账户进行提权

[root@gongsi ~]# gpasswd -a lilei wheel                  #将李雷加入wheel组
正在将用户“lilei”加入到“wheel”组中
[root@gongsi ~]# id lilei
uid=1001(lilei) gid=1001(lilei) 组=1001(lilei),10(wheel) #检查是否加入wheel组
  • 启用pam_wheel认证以后,未加入到wheel组内的其他用户将无法使用su命令,尝试进行切换时将会按照 “拒绝权限”来处理,从而将切换用户的权限控制在最小范围内

5.3)sudo命令——提升执行权限

背景:韩梅梅作为新来的员工 有时也需要多服务器的日常运维操作,为其加入日常操作的命令

  • 通过su命令可以非常方便地切换为另一个用户,前提是必须知道目标用户的登陆密码。对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分。

在配置文件 /etc/sudoers 中添加授权

[root@gongsi ~]# visudo    #进入sudo配置文件
hanmeimei ALL=/usr/sbin/reboot,!/usr/sbin/shutdown       #添加如下配置允许重启但不允许关机


如果还需要添加命令可以继续添加

5.4)优化:账户锁定、员工离职

背景:由于公司扩展项目 高级运维工程师李雷出差 实习生韩梅梅离职

[root@ns1 ~]# passwd -l lilei          #锁定李雷的账户
[root@ns1 ~]# userdel -r hanmeimei     #删除用户韩梅梅

六、弱口令检测——John the Ripper

  • John the Ripper,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持大多数的加密算法。
  • John the Ripper的官方网站:https://www.openwall.com/john/


6.1)下载并安装john the ripper

[root@gongsi ~]# tar zxf john-1.9.0.tar.gz   #解压
[root@gongsi ~]# cd john-1.9.0/              #切换到john目录下
[root@gongsi src]# make clean linux-x86-64   #切换到src子目录进行编译安装
[root@gongsi src]# ls ../run/john            #确认已生成可执行程序john
../run/john

6.2)检测弱口令账号

[root@gongsi src]# cp /etc/shadow /root/shadow.txt   #准备待破解的密码文件
[root@gongsi src]# cd ../run/
[root@gongsi run]# ./john /root/shadow.txt           #执行破解

  • 由于做实验所以密码配置简单,实际生产环境中密码应该相对复杂

三、DHCP服务器搭建

一、安装dhcp服务

[root@gongsi ~]# yum -y install dhcp             #使用yum安装方式进行安装

二、配置dhcp服务

[root@gongsi ~]# vim /etc/dhcp/dhcpd.conf                         #进入主配置文件
option domain-name "baidu.com";                                   #搜索域
option domain-name-servers www.baidu.com;                         #DNS自定义修改
default-lease-time 600;
max-lease-time 7200; #最大租约时间                                  #外面为全局配置
subnet 192.168.100.0  netmask 255.255.255.0 {                     #分配的网段
range 192.168.100.100 192.168.100.110;                            #可用网段的范围
option routers 192.168.100.2;      #dns服务器网关                   #里面为局部配置{内}
}

三、开启dhcp服务

[root@gongsi ~]# systemctl start  dhcpd       #开启dhcp服务
[root@gongsi ~]# systemctl enable  dhcpd      #设置为开机自动启动

四、dhcp服务器测试

4.1)打开一台新的虚拟机进行检测 网络配置如下 BOOTPROTO修改为dhcp服务

[root@pakho ~]# ifdown ens32;ifup ens32      #重启网卡

4.2)检测结果可以看到已经成功分配

4.3)查看租约过程

[root@gongsi ~]#  cat /var/lib/dhcpd/dhcpd.leases

四、关闭防火墙、selinux

[root@gongsi ~]# systemctl stop firewalld        #关闭防火墙
[root@gongsi ~]# setenforce 0                    #关闭selinux
[root@gongsi ~]# vim /etc/selinux/config         #进入配置文件永久关闭selinux
SELINUX=disabled

五、DNS服务器搭建

一、安装BIND

  • BIND (Berkeley Internet Name Daemon) 伯克利 Internet 域名服务
  • 官方站点:http://www.isc.org/
[root@gongsi ~]#  yum clean all  #清除一下yum源的缓存
[root@gongsi ~]#  yum repolist   #重新加载yum源
[root@gongsi ~]#  yum list | grep '^bind\.'  #查询yum仓库是否有bind安装包
[root@gongsi ~]#  yum -y install bind*       #安装bind服务

BIND 服务器端程序

  • 主要执行程序:/usr/sbin/named
  • 默认监听端口:53
  • 主配置文件 /etc/named.conf
  • 保存 DNS 解析记录的数据文件位于 /var/named/

二、配置主配置文件

[root@gongsi ~]# cp /etc/named.conf /etc/named.conf.backup #主配置文件备份
[root@gongsi ~]# vim /etc/named.conf                       #进入主配置文件
options {                                                  #全局配置listen-on port 53 { 192.168.100.77; };  #监听53号端口,ip地址使用提供服务的本地IP,也可以设置any表示所有listen-on-v6 port 53 { ::1; };          #ipv6 如果不使用可以注释或删除directory       "/var/named";           #区域数据文件的默认存放位置 dump-file       "/var/named/data/cache_dump.db";   #域名缓存数据库文件的位置statistics-file "/var/named/data/named_stats.txt"; #状态统计文件的位置memstatistics-file "/var/named/data/named_mem_stats.txt";#内存统计文件的位置allow-query     { any; };  #允许使用本解析服务的网段,可以使用any允许所有zone "." IN {                               #正向解析“.”根区域type hint;                          #类型为根区域file "named.ca";                    #区域数据文件为named.ca,记录13台根域服务器的域名和IP地址等信息
};
include "/etc/named.rfc1912.zones";  #包含区域配置文件里的所有配置
include "/etc/named.root.key";

三、修改区域配置文件,添加正、反向解析配置

[root@gongsi ~]# vim /etc/named.rfc1912.zones

文件有模板 可以复制粘贴后进行修改

正向解析配置

在文件中添加如下几行

zone "pakho.com" IN {                #正向解析为“pakho.com”type master;                 #类型:主缓存 masterfile "pakho.zone";           #指定区域数据文件为pakho.zoneallow-update { none; };
};

一、配置正向区域数据文件

复制主配置文件

[root@gongsi ~]# cp -p /var/named/named.empty  /var/named/pakho.zone
#保留源文件的权限和属主的属性复制

检查是否复制完成 拷贝文件是否具有属主属性

[root@gongsi ~]# vim /var/named/pakho.zone     #进入配置文件
$TTL 3H                                        #有效解析记录的生成周期
@       IN SOA  pakho.com. admin.pakho.com. (#@表示当前的DNS区域名表示这个域名  SOA表示授权信息开启 后面表示邮件地址因为@有特殊含义 所以使用.代替  0       ; serial    #更新序列号,可以是10以内的整数1D      ; refresh   #刷新时间,重新下载地址数据的间隔1H      ; retry     #重试延迟,下载失败后的重试延迟1W      ; expire    #失效时间,超过该时间仍无法下载则放弃3H )    ; minimum   #无效解析记录的生存周期@       IN      NS      ns1.pakho.com.  #记录当前区域DNS服务器的名称IN      MX 10   ns1.pakho.com.  #MX为邮件服务器 10表示优先级 数字越大优先级越低
ns1     IN      A       192.168.100.77  #记录正向解析域名对应的IP,即将域名与IP绑捆#"@"这里是一个变量,表示当前DNS区域
#SOA标记用于同步主从服务器的区域数据,如更新序列号相同则不会更新
#“pakho.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
#“admin.pakho.com.”表示管理员邮箱,这里的@是变量,所以用“.”代替
[root@gongsi ~]# hostnamectl set-hostname ns1.pakho.com. #修改主机名

更改主机名后重新登录

二、配置文件语法检查工具

[root@ns1 ~]# named-checkconf -z /etc/named.conf

反向解析配置

一、进入区域配置文件

[root@gongsi ~]# vim /etc/named.rfc1912.zones    #进入配置文件

在文件中添加如下几行

zone "100.168.192.in-addr.arpa" IN {             #添加反向解析配置type master;file "pakho.com.arpa";                   #区域配置文件为pakho.com.arpa
};

二、配置反向区域数据文件

[root@ns1 ~]# cp -p /var/named/named.localhost  /var/named/pakho.com.arpa
#保留源文件的权限和属主的属性复制

检查是否复制完成 拷贝文件是否具有属主属性

[root@ns1 ~]# vim /var/named/pakho.com.arpa   #进入配置文件
$TTL 1D
@       IN SOA  pakho.com. admin.pakho.com. (0       ; serial     #更新序列号,可以是10以内的整数1D      ; refresh    #刷新时间,重新下载地址数据的间隔1H      ; retry      #重试延迟,下载失败后的重试延迟1W      ; expire     #失效时间,超过该时间仍无法下载则放弃3H )    ; minimum    #无效解析记录的生存周期IN      NS      ns1.pakho.com.
77      IN      PTR     ns1.pakho.com.  #前面的数字需要改成你该服务器网段最后的IP地址#我的是192.168.100.77 就改成了77#如果公司后续有其他服务还可以进行添加

三、重启服务

[root@ns1 ~]# systemctl restart  named

DNS服务器测试

  • 打开一台虚拟机配置DNS地址 对应我们搭建的DNS服务器
  • 正向解析测试结果
  • 反向解析测试结果

六、动态扩容技术LVM逻辑卷

背景:随着公司业务扩大,希望增加一块20G硬盘,将原有数据迁移到新硬盘上,同时考虑以后不断增加,采用逻辑卷扩容

一、在根目录下创建一个数据文件夹

[root@ns1 ~]# mkdir /data

二、模拟文件夹中存储大量数据

[root@ns1 data]# touch {1..50}.txt    #创建50个txt文件模拟数据

三、将数据文件夹更名

[root@ns1 /]# mv data  data.backup   #更名为数据备份文件夹

四、创建逻辑卷挂载点

[root@ns1 ~]# mkdir /data

五、添加硬盘后进行重启

  • 在真实生产环境中时不需要进行重启的
  • 添加一块2GB的硬盘模拟添加一块20G的硬盘
[root@ns1 /]# shutdown -r now   #重启
  • 重启后检查防火墙和selinux的状态如果防火墙开启再进行关闭
[root@ns1 ~]# systemctl stop firewalld      #关闭防火墙
[root@ns1 ~]# systemctl disabled firewalld  #设置开机自动关闭
[root@ns1 ~]# getenforce 0                  #selinux状态检查命令
Disabled

六、创建LVM

6.1)检测并确认新硬盘

[root@ns1 ~]# lsblk


6.2)创建物理卷

[root@ns1 ~]# pvcreate /dev/sdb         #将物理磁盘转换成物理卷

6.3)创建卷组并添加物理卷

[root@ns1 ~]# vgcreate datavg /dev/sdb  #创建卷组datavg 并将物理卷sdb加入卷组

6.4)创建逻辑卷

[root@ns1 ~]# lvcreate -L 1.5G -n datalv datavg
#-L 指逻辑卷大小 加入1.5G 名字为datalv 将卷组datavg加入逻辑卷

6.5)格式化

[root@ns1 ~]# mkfs.xfs /dev/datavg/datalv   #/dev/卷组名/逻辑卷名

6.6)挂载

[root@ns1 ~]# mount /dev/datavg/datalv /data   #将逻辑卷挂载到根下的data

6.7)数据转移

[root@ns1 /]# mv data.backup/*.txt  data   #将数据转移至data文件夹实现动态扩容将原有数据无损迁移

注:后续还有可能随着数据越来越多也会进行逻辑卷扩容

[root@ns1 ~]# lvextend -L +500M /dev/datavg/datalv
#逻辑卷扩容 -L:大小 +500M 给逻辑卷添加

只要卷组有空间逻辑卷就随便扩

七、总结一下

  • 此文只是为初创公司服务器的改造优化方案
  • 当然目前只需要这些服务并不会导致服务器宕机或者崩溃
  • 如果说后续随着公司的日益扩张本服务器也会招架不住
  • 随着公司的规模扩大数据中心的不断完善也会有很多的重要数据可以考虑做负载均衡、web服务器集群来保障公司的正常运营
  • 当然后续也会看公司的需求进行服务器上云
  • 包括后续的服务器正常运行会进行zabbix的配置以保证运维工程师能够实时定位/解决存在的各种问题
  • 还有各种服务器的企业级优化

Linux项目实战——初创公司服务器改造优化相关推荐

  1. [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计【2018年给力项目】

    [嵌入式Linux项目实战开发]基于QT4.7.4的音乐播放器实现与设计[2018年给力项目]是[创科之龙]团队aiku嵌入式视频教程系列制作的现有的音乐播放器. 主要功能实现: 1.新建工程,基类选 ...

  2. [嵌入式Linux项目实战开发]基于QT4.8的仓库管理系统实现功能【2019年给力项目】

    [嵌入式Linux项目实战开发]基于QT4.8的仓库管理系统实现功能[2019年给力项目] 支持导出 excel 表格 支持查看商品操作日志 支持高精度浮点运算 支持同一商品以不同价格入库 该软件已开 ...

  3. Linux网络实战——Samba服务器搭建

    Linux网络实战--Samba服务器搭建 安装Samba服务软件 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Message ...

  4. Linux项目实战C++轻量级Web服务器源码分析TinyWebServer

    目录 文章简介 一. 先跑起来项目 二.再看项目核心 三.逐个击破!立下flag 文章简介 TinyWebServer是Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的 ...

  5. Linux网络实战- FTP服务器搭建

    FTP服务器是互联网上提供文件存储和访问访问的计算机,它们依照FTP协议提供服务,FTP是(文件传输协议).顾名思义,就是专门用来传输文件的协议,简单来说,支持FTP协议的服务器就是FTP服务器. v ...

  6. Linux 项目实战记录

    1.阻塞/非阻塞.同步/异步(网络IO) 典型的一次IO的两个阶段是什么?数据就绪和数据读写 数据就绪:根据IO操作的就绪状态 阻塞 :1.调用IO方法的线程进入阻塞状态,(函数进入waiting函数 ...

  7. (一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战

    快捷目录 前言 一.涉及到的相关技术简介 二.具体实现过程及踩坑杂谈 1.安卓手机改造成linux系统实现方案 2.改造后的手机Linux中软件的安装 3.手机Linux中安装MySQL5.7踩坑实录 ...

  8. Linux服务器改造成路由器的方法

    很多IT行业的经理人都会觉得路由器的价格太贵了,因此很多人都会将linux系统的服务器改成路由器,那么你知道怎么实现Linux系统的服务器改造成路由器吗? 下面我们去看看Linux服务器改造成路由器的 ...

  9. 【Rsync项目实战一】备份全网服务器数据

    目录 [Rsync项目实战]备份全网服务器数据 [企业案例] 1.1 环境部署 1.2 开始部署backup服务器:Rsync服务端过程: 1.3 开始部署nfs01服务器:Rsync客户端过程: [ ...

最新文章

  1. python cgi nginx_nginx uwsgi和cgi python脚本
  2. 界面-工作者线程结构之:异步委托调用
  3. python3 配置文件处理 configparser 库简介
  4. c语言字母表关键字,读书笔记-C语言关键字
  5. java下拉框及响应函数_Java 下拉框JComboBox和单选按钮JRadioButton简单举例使用 | 学步园...
  6. 关于Oracle Developer 的 DBMS_OUTPUT.PUT_LINE 输出问题
  7. csp-c模拟测试43「A·B·C」
  8. android自定义拱形,Android自定义View实现圆弧进度的效果
  9. 力扣——无重复字符的最长子串
  10. displaytag用法一
  11. 按键精灵不成熟的大漠游戏自动加血保护代码 大漠字库使用案例
  12. rgb24转yuv420P
  13. 上海智能交通建设现状与未来发展要点
  14. 工具说明书 - 英语翻译软件对比和英语词典选择
  15. THE ORDER OF MASS
  16. 干货 | PCB多层板为什么都是偶数层?奇数层不行吗?
  17. 马克思 第一章 世界的物质性及其发展规律
  18. 阿里云对象存储OSS图片上传并回显
  19. 基于Echarts实现可视化数据大屏分析大屏监控系统
  20. 驾考题库API接口,免费好用

热门文章

  1. Davinci数据看板使用记录
  2. 小程序-情境猜谜-使用说明
  3. 解除与设置计算机锁定
  4. java jpanel刷新_JPanel重绘问题
  5. 计算机对话框无法切换,电脑输入法切换不了原因有哪些【解决方法】
  6. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 K-Dimensional Foil II(思维题)
  7. php怎么用循环显示图片,dede 通过php循环输出图片集图片 如何实现? - 织梦去版权...
  8. 非法侵入个人计算机系统构成,非法侵入计算机系统罪的法律规定、犯罪构成、追诉标准、量刑标准方面-广州刑事辩护律师...
  9. numpy中向量的基本操作
  10. 处理jquery.jqprint.js不能打印input、textarea区以及样式问题