2018.11.19第十四次课程及预习

课堂笔记:

10.12 firewalld和netfilter

 selinux临时关闭

 selinux永久关闭

编辑配置文件/etc/selinux/config

 centos7之前使用netfilter防火墙,centos7开始使用firewalld防火墙,但在centos7系统上也可以运行netfilter防火墙,centos7默认开启firewalld防火墙,想要在centos7上使用netfilter防火墙,需要手动进行开启。

• 关闭firewalld开启netfilter方法

关闭firewalld防火墙服务

禁止firewalld防火墙服务开机自启动

打开netfilter,打开前需要先安装一个包 iptables-service

允许netfilter防火墙服务开机自启动

查看防火墙规则

10.13 netfilter5表5链介绍

 netfilter的5个表:filter,nat,managle,raw,security

• filter表用于过滤包,最常用的表,有INPUT、FORWARD、OUTPUT三个链

• nat表用于网络地址转换,有PREROUTING、OUTPUT、POSTROUTING三个链

• managle表用于给数据包做标记(不常用)

• raw表可以实现不追踪某些数据包(不常用)

• security表在centos6中并没有,用于强制访问控制(MAC)的网络规则(不常用)

• netfilter最常用的5个链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING

所谓链,可以看做是工作台,不同数据流向的数据包,会经过相应的工作台(链),到达工作台后,工作台可对数据包进行相应的操作(封堵、放通等)

INPUT:数据包进入本机时经过的链,可针对数据包源IP以及访问的目标端口等做一些操作限制。

OUTPUT:在本机产生的一些包,在出去之前需要经过的链,可针对数据包目的IP等做一些操作限制。

FORWARD:数据包进入本机时需要经过内核判断目的地是否为本机,如果不是,则经过FORWARD链进行转发,可以通过FORWARD链对转发地址进行修改等操作。

PREROUTING:在数据包进入网卡时的那一刻(还未到本机),需要经过的链,可用于做端口映射。

端口映射:将实际可以被访问到的公网端口A所接收的数据传输给想要被访问却不能直接被访问的内网端口B(A映射到B)。

POSTROUTING:在数据包发送到网卡时的那一刻(已从本机出去),需要经过的链,可用于做代理上网。

代理上网(地址转换):不同的内网用户与公网通信时,自身IP地址均会转换为出口的公网IP,用于和公网进行通信。

• iptables传输数据包的过程

当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去

数据包传输流程总体分为两种:

1.数据包需要进入本机,PREROUTING-->INPUT-->OUTPUT-->POSTROUTING

2.数据包不需要进入本机,PREROUTING-->FORWARD-->POSTROUTING

10.14 iptables语法

• 查看iptables规则

• 清空规则

注:如果清空后未保存至规则配置文件(/etc/sysconfig/iptables),则服务重启或系统重启后,netfilter防火墙服务依旧会重新加载规则配置文件中的原有规则。

• 重启iptables服务

• 保存规则

• 查看指定的表

注:不加-t,默认为filter表

• 计数器清零

清零前

清零后

注:清零后,往往还会有数据包,因为规则一直在生效

规则匹配机制:由上至下匹配,如数据包匹配上第一条规则,即使后续还有其他规则也可与数据包相匹配,数据包也不会继续向下匹配,立即执行它所匹配到的第一条规则。

• 例1:增加一条规则,针对INPUT链,来源IP为192.168.188.1,针对TCP协议,来源端口为1234,目的IP为192.168.188.128,目的端口为80,针对ens33网卡,执行丢弃的动作

TIPS:与DROP相似的动作还有REJECT,区别在于,DROP直接将数据包丢掉,REJECT是查看数据包后将其          拒绝。

• 例2:插入/增加/删除一条规则,针对INPUT链,来源IP为1.1.1.1,执行丢弃的动作

• 例3:插入一条规则,针对INPUT链,来源IP为192.168.1.0/24网段,执行放通的动作

• 查看iptables规则,并显示规则相对应的序号

• 根据规则相对应的序号,对相应规则进行快速删除

• 默认规则

• 修改默认规则

注:不要轻易修改默认规则,否则容易造成误拦截!

10.15 iptables filter表案例

需求:

把80,22,21端口放行,但22端口指定一个IP段,只允许这个IP段的IP访问的时候,才可访问到,其他段的一概拒绝。

根据上述需求,我们可以通过编写一个脚本进行实现

编辑脚本: /usr/local/sbin/iptables.sh

添加内容:

RELATED状态,这是一个边缘状态

比如:客户端和服务端相互了通信,建立完连接之后,还会有一些额外的链接出来,这时候状态就变成了RELATED(若仅仅只有ESTABLISHED,而没有RELATED,很有可能导致其他的通信被禁掉,因为默认策略是INPUT DROP)

ESTABLISHED状态, 保持连接

有时,在没有增加-m --state这条规则时,导致增加了80或21端口,但是不能正常通信,加这条规则的目的是为了让通信能够正常进行

执行脚本:

查看结果:

使用脚本执行的好处:因为这里有INPUT DROP,肯定要把你的远程连接给断开,所以需要执行脚本把你的命令批量执行,一次性添加所有规则。

icmp示例

iptables -I INPUT -p icmp --icmp-type 8 -j DROP 这个规则会产生一个效果,让你ping外面的机器还可以ping通,但是ping本机的时候,就不会通了

添加规则后,会发现可ping通外面的网络,但自己的虚拟机和物理机则无法连接

这时用自己的物理机去ping虚拟机,会发现无法连接

这时,再来删除这条命令

service iptables restart 重启iptables服务

这里物理机去ping虚拟机IP,会发现再次ping通

注:这里的物理机和虚拟机不通,并不指不能连接,这里仅仅是做了一个禁ping而已(主机可以ping通外网的,但其他人无法ping通主机)

10.16/10.17/10.18 iptables nat表应用

案例环境:

A机器两块网卡ens33(192.168.88.5)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。

• 需求1:可以让B机器连接外网(代理上网)

• 需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口(端口映射)

需求1:

1.根据上述需求,首先需要准备两台符合需求的虚拟机

第一台虚拟机原有一块可以上网的网卡(ens33),需要新增一块网卡(ens37),并以虚拟交换机的形式连接(LAN区段)

 

没有LAN区段则需要手动添加并选择添加完成的LAN区段

同理,第二台虚拟机也在网卡ens37上做相同配置(如果第二太虚拟机由第一台克隆而来,可以将无关网卡禁用掉)

 

用命令行修改第一台虚拟机的IP(一次性有效,重启后恢复默认值,永久修改IP可将ens33的配置文件拷贝一份,作为ens37的网卡配置文件,进行相应的修改)

 

 

同理修改第二台虚拟机网卡的IP(因为没有IP,不能远程连接,因此只能在虚拟机里进行设置)

配置完成后可以互相ping通

2.完成准备工作后,打开第一台虚拟机的端口转发

3.为192.168.100.0网段做地址转换

 MASQUERADE:这个设定值就是『IP伪装成为封包出去(-o)的那块装置上的IP』不管现在外网网卡的出口获得了怎样的动态ip,MASQUERADE会自动读取外网网卡现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。

4.为第二台虚拟机设置网关192.168.100.1(可以理解为,不同网段间通信,需要通过网关转发)

 

5.验证网络连通性(为第二台虚拟机配置好DNS,即可正常访问公网域名)

 

需求2:

1.根据上述需求,首先需要准备两台符合需求的虚拟机(需求1已完成)

2.完成准备工作后,打开第一台虚拟机的端口转发(需求1已完成)

3.在第一台虚拟机设置目的地址转换(端口映射)

4.在第一台虚拟机设置源地址转换(代理上网,可理解为回包)

5.查看nat表规则

 

6.为第二台虚拟机设置网关192.168.100.1(需求1已完成)

7.测试需求结果

扩展

selinux教程 http://os.51cto.com/art/201209/355490.htm

selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK

iptables应用在一个网段 http://www.aminglinux.com/bbs/thread-177-1-1.html

sant,dnat,masquerade http://www.aminglinux.com/bbs/thread-7255-1-1.html

iptables限制syn速率 http://www.aminglinux.com/bbs/thread-985-1-1.htmlhttp://jamyy.us.to/blog/2006/03/206.html

 

 

预习笔记:

10.19 iptables规则备份和恢复

service iptables save //会把规则保存到/etc/sysconfig/iptables

• 把iptables规则备份

• 恢复备份的规则

10.20 firewalld的9个zone

• 查看所有zone

• 查看默认zone(默认zone为public)

 9个zone的简介

10.21 firewalld关于zone的操作

• 设定默认zone

• 查看指定网卡所使用的zone

• 给指定网卡设置zone

• 针对网卡更改zone

• 针对网卡删除zone

• 查看系统所有网卡所在的zone

10.22 firewalld关于service的操作

service:service是zone下面的子单元,可以理解为是指定的一个端口,防火墙的功能无外乎是针对一些端口进行限制,比如http操作的是80端口,https操作的是443端口,ssh操作的是22端口。

• 查看所有的services

• 查看当前zone下有哪些service

• 把http增加到public zone下面

• 把http从public zone下面删除

• 更改配置文件

单纯修改规则只是在内存中修改,重启后会丢失,更改配置文件后,会在/etc/firewalld/zones目录下面生成配置文件,可以永久生效。

• zone的配置文件模板/usr/lib/firewalld/zones/

• servies的配置文件模板/usr/lib/firewalld/services/

• 系统中firewalld服务zone的配置文件/etc/firewalld/zones/

注:在保存系统的firewalld服务配置文件时,系统会把旧的配置自动生成一个后缀名为.old的文件

• 系统中firewalld服务services的配置文件/etc/firewalld/services/

• 需求:ftp服务自定义端口1121,需要在work zone下面放行ftp

1.从servies的配置文件模板中将ftp服务的模板(ftp.xml)拷贝至系统中firewalld服务services的配置文件

2.修改配置文件

3.从zone的配置文件模板中将work服务的模板(work.xml)拷贝至系统中firewalld服务zone的配置文件

4.修改配置文件

5.重新加载

6.查看结果

10.23 linux任务计划cron

任务计划书写格式

• 定义任务计划

注:定义任务计划时,编辑需要执行的命令的格式,最好均采用绝对路径,否则易出现问题

• 例:每个偶数月的1-10号中的周二和周五的03时00分执行脚本123.sh,并将正确日志追加重定向到/tmp/123.log,错误日志追加重定向到/tmp/456.log

• 要保证服务是启动状态,才能保证任务计划能够正常使用

• 检查服务是否正常启动

• 列出任务计划

• 任务计划的文件位置(备份任务计划时,可直接拷贝该文件)

• 指定用户

• 删除任务计划

10.24 chkconfig工具

chkconfig:centos6以及6以前版本所使用的服务管理工具

• 列出所有服务

7个启动级别(centos6及以前):

0级别:关机

1级别: 单用户

2级别:多用户模式(不带nfs服务)

3级别: 多用户模式(不带图形)

4级别: 保留级别

5级别: 多用户(带有图形)

6级别: 重启

• 指定某一服务的某个级别开启或关闭

• 指定某一服务的多个级别开启或关闭

• 添加某一服务到服务列表

• 从服务列表删除某一服务

注:自定义服务文件必须放置在/etc/init.d目录下,且文件内容有一定的限制

10.25 systemd管理服务

systemd:centos7的服务管理机制

• 列出所有类型为service的units

注:--all会显示出inactive的service

• 让服务开机启动

注:让服务开机启动会使系统生成一个软链接/etc/systemd/system/multi-user.target.wants/crond.service,真正的配置文件目录位于/usr/lib/systemd/system/crond.service.

• 不让服务开机启动

注:不让服务开机启动,会将软链接清除

• 查看状态

• 停止服务

• 启动服务

• 重启服务

• 检查服务是否开机启动

10.26 unit介绍

• unit的类型

service  系统服务

target  多个unit组成的组

device  硬件设备

mount  文件系统挂载点

automount  自动挂载点

path  文件或路径

scope  不是由systemd启动的外部进程

slice  进程组

snapshot  systemd快照

socket  进程间通信套接字

swap   swap文件

timer 定时器

• 列出正在运行的unit

• 列出所有,包括失败的或者inactive的unit

• •列出inactive的unit

• 列出状态为active的service

• 查看某个服务是否为active/enable

10.27 target介绍

target:系统为了方便管理用target来管理unit,一个service属于unit的一种类型,多个unit组成了一个target。

• 列出unit文件中的target文件

• 查看指定target下面有哪些unit

• 查看系统默认的target

• 修改系统默认的target(可修改系统的启动等级)

注:修改完成后同样会生成软链接文件

• 查看service属于哪一个target

扩展

提供一个iptables系列文章的博客 https://www.zsythink.net/archives/tag/iptables/page/2/

anacron https://www.jianshu.com/p/3009a9b7d024?from=timeline

systemd自定义启动脚本 http://www.jb51.net/article/100457.htm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值