工程师技术(一):启用SELinux保护、自定义用户环境、配置IPv6地址、配置聚合连接、配置firewalld防火墙
一、启用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防火墙的更多相关文章
- 启用SELinux保护
启用SELinux保护 案例1:启用SELinux保护 1.1问题 本例要求为虚拟 ...
- 工程师技术(六):Linux工程师 综合测试
一.Linux工程师 综合测试 目标: 根据本文提供的练习步骤完成所有练习案例. 方案: 开始练习之前,先依次重置虚拟机环境. [root@room9pc13 ~]# rht-vmctl reset ...
- 在centos服务器上启用ipv6地址
随着互联网世界日新月异的发展,ipv6好像已经成为一种必不可少的趋势,但是当前国内机房大部分还不能支持ipv6,腾讯云亦如此.同时,现在有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址 ...
- haproxy 让后端服务器记录用户的真是IP地址(记录在header头里)
这里我们在生产中遇到一个问题就是.我们有的用户会登录失败.但是并不是所有的用户登录失败(这里是能够正常访问网站) 所以这里想分析哪些用户登录失败,所以我们要记录他们这些登录失败的IP地址 这里我们的结 ...
- (九)ASP.NET自定义用户控件(2)
http://www.cnblogs.com/SkySoot/archive/2012/09/04/2670678.html 用户控件 在 .NET 里,可以通过两种方式把自己的控件插入到 Web 窗 ...
- 工程师技术(三):独立Web站点的快速部署、虚拟Web主机的部署、配置网页内容访问、使用自定Web根目录、配置安全Web服务、部署并测试WSGI站点
一.独立Web站点的快速部署 目标: 本例要求为 http://server0.example.com 配置Web站点,要求如下: 1> 从http://classroom/pub/materi ...
- Keycloak 13 自定义用户身份认证流程(User Storage SPI)
Keycloak 版本:13.0.0 介绍 Keycloak 是为现代应用程序和服务提供的一个开源的身份和访问管理的解决方案. Keycloak 在测试环境可以使用内嵌数据库,生产环境需要重新配置数据 ...
- 大型.NET商业软件代码保护技术 技术与实践相结合保护辛苦创造的劳动成果
列举工作以来遇到的各种类型的软件所采用的代码保护技术,只讲原理不涉及技术细节实现,以避免产生法律问题.有些朋友说直接把代码放在Github开源下载,开源可以促进技术交流与进步,然而值钱的代码都积压在硬 ...
- Linux下禁用、启用SeLinux
一些Linux默认都是启用SeLinux的,在安装操作系统的时候我们可以选择开启或者关闭SeLinux,但是在安装完系统之后又如何开启与关闭呢? 在/etc/sysconf下有一个SeLinux文件, ...
随机推荐
- 【leetcode】926.Flip String to Monotone Increasing
题目如下: A string of '0's and '1's is monotone increasing if it consists of some number of '0's (possib ...
- 使用Canvas操作像素
现代浏览器支持通过<video>元素播放视频.大多数浏览器也可以通过MediaDevices.getUserMedia() API访问摄像头.但即使这两件事结合起来,我们也无法直接访问和操 ...
- python locust_TaskSet声明任务的典型方法是使用task装饰器的两种方法
为TaskSet声明任务的典型方法是使用task装饰器.该min_wait和MAX_WAIT属性也可以在使用taskset类中重写. from locust import Locust, TaskSe ...
- Openstack组件部署 — keystone(domain, projects, users, and roles)
目录 目录 前文列表 Create a domain projects users and roles domain projects users and roles的意义和作用 Create the ...
- VMware里克隆出来的CentOS Linux device eth0 does not seem to be present, delaying initialization
解决办法:1.ifconfig eth1 确定新网卡的MAC地址.nmcli con 确定新网卡的UUIDvim /etc/udev/rules.d/70-persistent-net.rules把原 ...
- docker 安装 lnmp
docker 安装 lnmp 标签(空格分隔): php,docker 安装MySql 1 搜索镜像 docker search mysql 2 安装镜像 docker pull mysql:5.7 ...
- Axon 3.0.x 框架简介官方文档
因为需要用到,但是在网上对应的资料实在是很少,只有迎着头皮看官网文档并配合翻译器.如有误导多多包涵. Axon 什么是 Axon Axon Framework 通过支持开发人员应用命令查询责任隔离(C ...
- cmd 运行 java 文件
在安装好jdk 并配置好环境变量的情况下 原因一:没有指定class文件的路径 例如HI是变异好的class文件,并且在d:/RJAZB里面 如果写成 Java HI 则会报错 正确做法 java ...
- Java中的宏变量,宏替换详解。
群友在微信群讨论的一个话题,有点意思,特拿出来分享一下. 首先来看下面这段程序,和群友分享的大致一样. public static void main(String[] args) { String ...
- Spring 使用@Async出现循环依赖Bean报错的解决方案
初现端倪 Caused by:org.springframework.beans.factory.BeanCurrentlyInCreationException: Errorcreating bea ...