一、启用SELinux保护

目标:

本例要求为虚拟机 server0、desktop0 配置SELinux:

  • 确保 SELinux 处于强制启用模式
  • 在每次重新开机后,此设置必须仍然有效

方案:

SELinux,Security-Enhanced Linux:是由美国NSA国家安全局提供的一套基于内核的增强的强制安全保护机制,针对用户、进程、文档标记安全属性并实现保护性限制。

SELinux安全体系直接集成在Linux内核中,包括三种运行模式:

  • disabled:彻底禁用,内核在启动时不加载SELinux安全体系
  • enforcing:强制启用,内核加载SELinux安全体系,并强制执行保护策略
  • permissive:宽松模式,内核加载SELinux安全体系,只记录不执行

执行getenforce可以查看当前所处的模式。

在disabled模式与enforcing、permissive模式之间切换时,需要重新启动Linux系统;而在enforcing模式与permissive模式之间切换时,并不需要重启,可以直接执行setenforce 1|0操作。

步骤:

步骤一:调整当前的SELinux运行模式

1)查看当前模式

[root@server0 ~]# getenforce
    Permissive                                      //表示当前为宽松模式

若上述操作显示的结果为Disabled,表示SELinux机制已被禁用,只能通过步骤修改固定配置后再重启;若显示的结果为Enforcing,表示已经处于强制启用模式。

2)切换为enforcing强制启用模式

如果在操作1)中显示的结果为Permissive,则执行以下操作切换为强制启用:

[root@server0 ~]# setenforce  1                  //强制启用
    [root@server0 ~]# getenforce                      //确认切换结果
    Enforcing

如果在操作1)中显示的结果为Disabled,则无法使用setenforcing命令:

[root@desktop0 ~]# getenforce
    Disabled
    [root@desktop0 ~]# setenforce 1
    setenforce: SELinux is disabled

步骤二:为SELinux运行模式建立固定配置

1)修改配置文件/etc/selinux/config

[root@server0 ~]# vim  /etc/selinux/config
    SELINUX=enforcing
    .. ..

2)重启验证结果

[root@server0 ~]# reboot
    .. ..
    [root@server0 ~]# getenforce
    Enforcing

二、自定义用户环境

目标:

本例要求为系统 server0 和 desktop0 创建自定义命令,相关说明如下:

  • 自定义命令的名称为 qstat
  • 此自定义命令将执行以下操作:/bin/ps -Ao pid,tt,user,fname,rsz
  • 此自定义命令对系统中的所有用户都有效

方案:

命令别名:为一个复杂的命令行建立一个更加简短的命令字,方便重复使用。

基本管理操作:

  • 定义别名:alias 别名='复杂的命令行'
  • 查看别名:alias、alias 别名
  • 取消别名:unalias 别名、unalias -a

用户登录初始化文件:

  • 全局配置:/etc/bashrc、
  • 用户自定义配置:~/.bashrc

步骤:

步骤一:为主机server0添加别名qstat

1)为所有用户添加初始化命令

[root@server0 ~]# vim  /etc/bashrc
    .. ..
    alias  qstat='/bin/ps -Ao pid,tt,user,fname,rsz'

2)验证别名qstat是否生效

[root@server0 ~]# exit                                      //退出
    logout
    Connection to server0 closed.
    [kiosk@foundation0 ~]$ ssh -X root@server0                  //重登录
    Last login: Sat Nov 26 15:30:15 2016 from 172.25.0.250
    [root@server0 ~]# alias  qstat                             //可查到别名
    alias qstat='/bin/ps -Ao pid,tt,user,fname,rsz'
    [root@server0 ~]# qstat                                     //且此别名正常可用
      PID TT       USER     COMMAND    RSZ
        1 ?        root     systemd   6548
        2 ?        root     kthreadd     0
        3 ?        root     ksoftirq     0

步骤二:为主机desktop0添加别名qstat

操作与步骤一相同。

三、配置IPv6地址

目标:

本例要求为两个虚拟机 server0、desktop0的接口 eth0 配置下列 IPv6 地址:

1> server0 上的地址应该是 2003:ac18::305/64
    2> desktop0 上的地址应该是 2003:ac18::306/64
    3> 两个系统必须能与网络 2003:ac18/64 内的系统通信
    4> 地址必须在重启后依旧生效
    5> 两个系统必须保持当前的IPv4地址并能通信

方案:

如何表示一个IP地址:

  • IPv4地址(32位) —— 点 分隔 十进制,比如172.25.0.11
  • IPv6地址(128位)—— 冒号 分隔 十六进制,比如fe80::5054:ff:fe00:b 。前置0可以省略,多个连续的冒号分隔可简写成两个(::)。

针对IPv6目标地址的连通性测试应使用ping6命令工具。

步骤:

步骤一:修改主机server0的网卡eth0的配置

1)确认网卡eth0所属的网络连接名(NAME)

[root@server0 ~]# nmcli  connection  show
    NAME         UUID                                  TYPE            DEVICE
    System eth0  5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  802-3-ethernet  eth0

2)修改此连接的IPv6地址配置

使用方法一(命令行):

[root@server0 ~]# nmcli  connection  modify  "System eth0"  ipv6.method  manual  ipv6.addresses  "2003:ac18::305/64"

或者,使用方法二(图形工具),运行nm-connection-editor,在打开的图形程序界面中双击连接名称System eth0,选择“IPv6 Settings”选项卡(如下图所示)。

然后在“Method”处下拉选择“Manual”,再单击中间栏右侧的“Add”按钮添加指定的IPv6地址 2003:ac18::305、掩码长度64,勾选底部的“Require IPv6 addressing for this connection to complete”(如下图所示),最后单击右下角的“Save”保存,并关闭配置窗口。

3)激活新配置

[root@server0 ~]# nmcli  connection  up  "System eth0"
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)

4)确认地址已成功设置

执行ifconfig命令可以看到新增加的IPv6地址:

[root@server0 ~]# ifconfig  eth0  |  grep  inet6
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.25.0.11  netmask 255.255.255.0  broadcast 172.25.0.255
            inet6 2003:ac18::305  prefixlen 64  scopeid 0x0<global>          //确认地址
            inet6 fe80::5054:ff:fe00:b  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:00:00:0b  txqueuelen 1000  (Ethernet)
            RX packets 8697  bytes 5617496 (5.3 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 6681  bytes 5803117 (5.5 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

步骤二:修改主机desktop0的网卡eth0的配置

除了IPv6地址应使用2003:ac18::306以外,其他操作与步骤一相同。

步骤三:测试主机server0、desktop0之间的IPv6地址互连

在server0上,使用ping6命令测试desktop0的IPv6地址,可以正常连通:

[root@server0 ~]# ping6  2003:ac18::306
    PING 2003:ac18::306(2003:ac18::306) 56 data bytes
    64 bytes from 2003:ac18::306: icmp_seq=1 ttl=64 time=0.656 ms
    64 bytes from 2003:ac18::306: icmp_seq=2 ttl=64 time=1.33 ms
    64 bytes from 2003:ac18::306: icmp_seq=3 ttl=64 time=1.29 ms
    64 bytes from 2003:ac18::306: icmp_seq=4 ttl=64 time=1.48 ms
    .. ..

步骤四:确保配置有正确的静态主机名

避免重启后无法确定本机的主机名,容易引起混淆。

对于主机server0:

[root@server0 ~]# hostnamectl  set-hostname  server0.example.com
    [root@server0 ~]# hostnamectl
       Static hostname: server0.example.com
             Icon name: computer
    .. ..

对于主机desktop0:

[root@desktop0 ~]# hostnamectl  set-hostname  desktop0.example.com
    [root@desktop0 ~]# hostnamectl
       Static hostname: desktop0.example.com
             Icon name: computer
    .. ..

四、配置聚合连接

目标:

本例要求在两个虚拟机 server0、desktop0之间配置一个链路,要求如下:

1> 此链路使用接口 eth1 和 eth2
    2> 此链路在其中一个接口失效时仍然能工作
    3> 此链路在 server0 上使用下面的地址 172.16.3.20/255.255.255.0
    4> 此链路在 desktop0 上使用下面的地址 172.16.3.25/255.255.255.0
    5> 此链路在系统重启之后依然保持正常状态

方案:

聚合连接(team):指的是网络连接的捆绑/组队,通过将多个实际网卡(team-slave)整个为逻辑上的单个连接,实现负载均衡、热备份等单块网卡难以完成的特殊功能。

聚合连接的类型:热备份activebackup、轮询负载均衡roundrobin。

定义聚合连接的类型配置时,采用JSON语法标记,主要特点如下:

  • 标记一个对象 —— { 对象 }
  • 每一个对象 —— 名称:值
  • 每一个字符串 —— "字符串"

热备份-聚合连接(activebackup):

{ "runner":{ "name":"activebackup" }  }

负载均衡-聚合连接(roundrobin):

{ "runner":{ "name":"roundrobin" }  }

步骤:

除了所配置的IP地址不一样以外,在server0、desktop0主机上的其他操作相同。此处仅列出在server0上的配置过程。

实现此案例需要按照如下步骤进行。

步骤一:准备练习用网卡环境

新建的聚合连接将组合新增加的两块网卡eth1、eth2。

[root@server0 ~]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.25.0.11  netmask 255.255.255.0  broadcast 172.25.0.255
            inet6 2003:ac18::305  prefixlen 64  scopeid 0x0<global>
            inet6 fe80::5054:ff:fe00:b  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:00:00:0b  txqueuelen 1000  (Ethernet)
            RX packets 172995  bytes 23870389 (22.7 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 54053  bytes 34274222 (32.6 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 52:54:00:f8:86:c1  txqueuelen 1000  (Ethernet)
            RX packets 104217  bytes 5437855 (5.1 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 171  bytes 17171 (16.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 52:54:00:38:79:d9  txqueuelen 1000  (Ethernet)
            RX packets 104118  bytes 5428927 (5.1 MiB)
            RX errors 0  dropped 2060  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    .. ..

步骤二:创建聚合连接配置

1)新建聚合连接

[root@server0 ~]# nmcli  con  add  con-name  team0  type  team  ifname team0  config  '{ "runner":{ "name":"activebackup" }  }'
    Connection 'team0' (8e61d730-50ff-4a7b-8ca0-fcf5955f6ea7) successfully added.

2)配置IPv4地址

[root@server0 ~]# nmcli  con  modify  team0  ipv4.method  manual  ipv4.addresses  '172.16.3.20/24'  connection.autoconnect  yes

3)新建聚合成员连接

[root@server0 ~]# nmcli  con  add  con-name  team0-p1  type  team-slave  ifname  eth1  master  team0
    Connection 'team0-p1' (a62d23a2-9a2a-4855-8fbc-60ce1fd43f0b) successfully added.
    [root@server0 ~]# nmcli  con  add  con-name  team0-p2  type  team-slave  ifname  eth2  master  team0
    Connection 'team0-p2' (f4d4980e-8123-4840-89ac-1af148cc2eea) successfully added.

步骤三:激活聚合连接

1)激活聚合连接

[root@server0 ~]# nmcli  connection  up  team0
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)

2)激活聚合成员连接

[root@server0 ~]# nmcli  connection  up  team0-p1
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
    [root@server0 ~]# nmcli  connection  up  team0-p2
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)

步骤四:确认聚合连接状态

1)查看聚合连接地址

[root@server0 ~]# ifconfig  team0
    team0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.16.3.20  netmask 255.255.255.0  broadcast 172.16.3.255
            inet6 fe80::c80d:efff:fe08:ca57  prefixlen 64  scopeid 0x20<link>
            ether ca:0d:ef:08:ca:57  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 36  overruns 0  frame 0
            TX packets 68  bytes 8695 (8.4 KiB)
            TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0

2)查看聚合连接运行状态

[root@server0 ~]# teamdctl  team0  state
    setup:
      runner: activebackup                              //运行模式/类型
    ports:
      eth1                                              //成员网卡1
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
      eth2                                             //成员网卡2
        link watches:
          link summary: up
          instance[link_watch_0]:
            name: ethtool
            link: up
    runner:
      active port: eth1                                  //当前活动的成员网卡

五、配置firewalld防火墙

目标:

本例要求为两个虚拟机 server0、desktop0配置防火墙策略:

1> 允许从172.25.0.0/24网段的客户机访问 server0、desktop0 的任何服务
    2> 禁止从my133t.org域(172.34.0.0/24网段)的客户机访问 server0、desktop0 的任何服务
    3> 在172.25.0.0/24网络中的系统,访问 server0 的本地端口5423将被转发到80
    4> 上述设置必须永久有效

方案:

RHEL7的防火墙体系根据所在的网络场所区分,提供了预设的安全区域:

  • public:仅允许访问本机的sshd等少数几个服务
  • trusted:允许任何访问
  • block:阻塞任何来访请求
  • drop:丢弃任何来访的数据包
  • ……

新增防火墙规则的位置包括:

  • 运行时(runtime):仅当前有效,重载防火墙后失效
  • 永久(permanent):静态配置,需要重载防火墙才能生效

本地端口转发(端口1 --> 端口2):

  • 从客户机访问防火墙主机的 端口1 时,与访问防火墙的 端口 2 时等效
  • 真正的网络应用服务其实在 端口2 提供监听

步骤:

步骤一:采取“默认全允许,仅拒绝个别”的防护策略

1)启用防火墙服务

[root@server0 ~]# systemctl  restart  firewalld
    [root@server0 ~]# systemctl  enable  firewalld

2)将默认区域设置为trusted

[root@server0 ~]# firewall-cmd  --get-default-zone                 //修改前
    public
    [root@server0 ~]# firewall-cmd  --set-default-zone=trusted         //修改操作
    success
    [root@server0 ~]# firewall-cmd  --get-default-zone              //修改后
    trusted

步骤二:封锁指定的IP网段

1)添加永久配置“阻塞来自网段172.34.0.0/24的任何访问”

[root@server0 ~]# firewall-cmd  --permanent  --zone=block  --add-source=172.34.0.0/24
    success

2)重载防火墙

[root@server0 ~]# firewall-cmd  --reload
    success

3)检查运行时规则

[root@server0 ~]# firewall-cmd  --list-all  --zone=block
    block
      interfaces:
      sources: 172.34.0.0/24
      services:
      ports:
      masquerade: no
      forward-ports:
      icmp-blocks:
      rich rules:

步骤三:实现5423-->80端口转发

1)针对80端口部署测试应用

快速搭建一个测试网站:

[root@server0 ~]# yum  -y  install  httpd                    //装包
    .. ..
    [root@server0 ~]# vim  /var/www/html/index.html              //部署测试网页
    test site.
    [root@server0 ~]# systemctl  restart  httpd                   //起服务

从客户端访问,确认测试网页:

[root@desktop0 ~]# yum  -y  install  elinks
    .. ..
    [root@desktop0 ~]# elinks  -dump  http://server0.example.com/
       test site.

2)配置5423-->80端口转发策略

[root@server0 ~]# firewall-cmd  --permanent  --zone=trusted  --add-forward-port=port=5423:proto=tcp:toport=80                              //添加永久配置
    success
    [root@server0 ~]# firewall-cmd  --reload                      //重载服务
    Success
    [root@server0 ~]# firewall-cmd  --list-all                  //确认运行时规则
    trusted (default, active)
      interfaces: eth1 eth2 eth0 team0
      sources:
      services:
      ports:
      masquerade: no
      forward-ports: port=5423:proto=tcp:toport=80:toaddr=
      icmp-blocks:
      rich rules:

3)验证端口转发策略

从desktop0上访问server0的5423端口,与访问server0的80端口效果一样:

[root@desktop0 ~]# elinks  -dump  http://server0.example.com:5423/
       test site.
    [root@desktop0 ~]# elinks  -dump  http://server0.example.com/
       test site.

工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙的更多相关文章

  1. 启用SELinux保护

                                                               启用SELinux保护 案例1:启用SELinux保护 1.1问题 本例要求为虚拟 ...

  2. 工程师技术(六):Linux工程师 综合测试

    一.Linux工程师 综合测试 目标: 根据本文提供的练习步骤完成所有练习案例. 方案: 开始练习之前,先依次重置虚拟机环境. [root@room9pc13 ~]# rht-vmctl  reset ...

  3. 在centos服务器上启用ipv6地址

    随着互联网世界日新月异的发展,ipv6好像已经成为一种必不可少的趋势,但是当前国内机房大部分还不能支持ipv6,腾讯云亦如此.同时,现在有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址 ...

  4. haproxy 让后端服务器记录用户的真是IP地址(记录在header头里)

    这里我们在生产中遇到一个问题就是.我们有的用户会登录失败.但是并不是所有的用户登录失败(这里是能够正常访问网站) 所以这里想分析哪些用户登录失败,所以我们要记录他们这些登录失败的IP地址 这里我们的结 ...

  5. (九)ASP.NET自定义用户控件(2)

    http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...

  6. 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点

    一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...

  7. Keycloak 13 自定义用户身份认证流程(User Storage SPI)

    Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...

  8. 大型.NET商业软件代码保护技术 技术与实践相结合保护辛苦创造的劳动成果

    列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题.有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬 ...

  9. Linux下禁用、启用SeLinux

    一些Linux默认都是启用SeLinux的,在安装操作系统的时候我们可以选择开启或者关闭SeLinux,但是在安装完系统之后又如何开启与关闭呢? 在/etc/sysconf下有一个SeLinux文件, ...

随机推荐

  1. VIM的一些使用积累

    替换: :s/cst/dst/gc 黏贴后格式不对齐: gg=G 全选并黏贴 gg :"+yG

  2. 函数————swap

    swap(vec[i],vec[j]); 交换两个元素.

  3. Unicode数据类型的是是非非(转)

    转:http://cio.chinabyte.com/344/9002344.shtml 在SQL Server数据库中,数据类型主要分为两类,分别为Unicode数据类型与非Unicode数据类型. ...

  4. Procedure or function 'pu_usr_User' expects parameter '@WhiteIp', which was not supplied.

    遇到这个问题,是因为存储过程的参数,设置默认值写错了. 错误写法 @WhiteIp NVARCHAR(MAX) NULL, Stored procedure with default paramete ...

  5. form表单submit事件

    form表单submit事件同时会触发form表单中button按钮的click事件 <!DOCTYPE html> <html> <head> <meta ...

  6. (转)Git 提交的正确姿势:Commit message 编写指南

    Git 每次提交代码,都要写 Commit message(提交说明),否则就不允许提交. $ git commit -m "hello world" 上面代码的-m参数,就是用来 ...

  7. Openstack组件实现原理 — Keystone认证功能

    目录 目录 前言 Keystone安装列表 Keystone架构 Keystone的管理对象 一个理解Keystone管理对象功能的例子 Keystone管理对象之间的关系 Keystone V3的新 ...

  8. Oracle 用户概念与基本操作

    目录 目录 Oracle的用户 通过系统用户来登陆SQLPlus system和sys的区别 查看登陆的用户 启用和锁定一个用户 启用用户 锁定用户 创建用户 修改用户 删除用户 角色权限 常用的用户 ...

  9. 查看.Net Framework的版本(PC和WinCE)

    一.在电脑上查看.Net Framework的版本 (1)第一步: 打开“我的电脑“,在地址栏输入 %systemroot%\Microsoft.NET\Framework 第二步:从列出来的文件夹中 ...

  10. _cdecl 与 _stdcall 区别

    前段时间编程时遇到过这么一个问题,我写了一个DLL,把里面的一个函数导出来,然后再定义一个签名与其匹配的函数指针,动态地把这个DLL加载起来(LoadLibrary),得到函数指针后,一调用,结果报错 ...