日常运维2

2.2 firewalld&iptables

日常运维2

 

日常运维2

permissive,遇到真正需要阻断时不会真正阻断,只会提醒

setenforce 0/1 disable/enable enforcing 临时更改

####如何永久关闭selinux (编辑/etc/selinux/config 将SELINUX值改为disabled/permissive)

日常运维2

####同样也可以用sed命令永久关闭  sed ­i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config 

2.2.1 firewalld、iptables和netfilter之间的关系

在centos6上,我们用的是iptables服务,而在centos7上,我们用的是firewalld服务。  同样的,centos6上安装的是iptables包,而centos7上安装的是firewalld包。 

不管是centos6还是centos7,核心其实都是netfilter,netfilter是linux的一个内核模块,iptables 命令是linux内核自带的。 

centos6上的iptables服务和centos7上的firewalld服务,其实都是用来定义防火墙规则功能的防 火墙管理工具。  它们都是将定义好的规则交由内核中的netfilter即网络过滤器来读取,从而真正实现防火墙 功能,  所以其实在配置规则的思路上是完全一致的。  

 

由于好多服务受限于selinux,并且开启selinux会增大运营成本, 所以大多时候会处于关闭状态

在centos7中 firewalld是默认开启的,下图显示如何开启netfilter关闭firewalld

日常运维2

 

日常运维2

2.2.2 netfilter

日常运维2

2.2.2.1 netfilter5表5链介绍

 1.filter表——三个链:INPUT、FORWARD、OUTPUT   作用:过滤数据包    内核模块:iptables_filter.  

2.Nat表——三个链:PREROUTING、POSTROUTING、OUTPUT   作用:用于网络地址转换(IP、端口)   内核模块:iptable_nat  

3.Mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD  作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS  内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)  

4.Raw表——两个链:OUTPUT、PREROUTING   作用:决定数据包是否被状态跟踪机制处理    内核模块:iptable_raw  

5.Security表——三个链:INPUT、OUTPUT和FORWARD  作用:Security表在centos6中并没有,用于强制访问控制(MAC)的网络规则   内核模块:iptable_security

 

日常运维2

netfilter的5个链 

PREROUTING:数据包进入路由表之前  INPUT:通过路由表后目的地为本机  FORWARD:通过路由表后,目的地不为本机 OUTPUT:由本机产生,向外发出 

POSTROUTING:发送到网卡接口之前

 

nat表用于实现路由器,共享上网端口映射

iptables progress please refer to http://www.cnblogs.com/metoy/p/4320813.html

2.2.3 iptables 语法

日常运维2

2.2.3.1 iptables一般语法格式:

iptables的命令格式较为复杂,一般的格式如下: 

 iptables  [­t  table] 命令 [chain] [rules] [­j target]  

###格式说明:     

 table————指定表名,iptables内置包括filter表、nat表、mangle、raw表和security表。     

 命令—————对链的操作命令      

chain————链名      

rules————匹配规则     

 target————动作如何进行

###操作命令选项说明 

     命令                          说明  

­P或–policy  <链名>:定义默认策略 

 ­L或–list    <链名>:查看iptables规则列表 

 ­A或—append  <链名>:在规则列表的后增加1条规则 

 ­I或–insert  <链名>:在指定的位置插入1条规则 

 ­D或–delete  <链名>:从规则列表中删除1条规则  

­R或–replace <链名>:替换规则列表中的某条规则  

­F或–flush   <链名>:删除表中所有规则  

­Z或–zero    <链名>:将表中数据包计数器和流量计数器归零

###规则选项说明

­i或–in­interface <网络接口名>:指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等  ­

o或–out­interface <网络接口名>:指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等 

­p或—proto协议类型 < 协议类型>:指定数据包匹配的协议,如TCP、UDP和ICMP等  ­

s或–source <源地址或子网>:指定数据包匹配的源地址  –sport <源端口号>:指定数据包匹配的源端口号,可以使用“起始端口号:结束端口号”的格式 指定一个范围的端口  ­

d或–destination <目标地址或子网>:指定数据包匹配的目标地址  

dport <目标端口号>:指定数据包匹配的目标端口号,可以使用“起始端口号:结束端口号”的 格式指定一个范围的端口

###动作选项说明 

ACCEPT:接受数据包 

DROP:丢弃数据包 

REDIRECT:与DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。 

SNAT:源地址转换,即改变数据包的源地址 

DNAT:目标地址转换,即改变数据包的目的地址 

MASQUERADE:      IP伪装,即是常说的NAT技术,      MASQUERADE只能用于ADSL等拨号上网的IP伪装,也就是主机的IP是由ISP分配动态 的;      如果主机的IP地址是静态固定的,就要使用SNAT 

LOG日志功能,将符合规则的数据包的相关信息记录在日志中,以便管理员的分析和排错

 

iptables (-t nat/filter) -nvL 默认规则--保存于 /etc/sysconfig/iptables

日常运维2

iptables -F 清空规则(但却无法清空配置文件的规则,重启后会加载service iptables restart)

日常运维2

iptables -Z 清零 

下例命令为jp阻断 封掉, DRPO可以用REJECT命令代替

日常运维2

如何删除新加入规则 (虽然 iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP亦能实现删除 但是input过于繁琐,推荐使用以下方式)

iptalbes -nvL --llne-number

iptables -D INPUT 8(the line that you want to delete)

iptables -P INPUT DROP 清除全部规则 (轻易不要用)///// iptables -P OUTPUT ACCEPT

日常运维2

2.2.3.2 iptables nat 表应用

日常运维2

##准备环境pre-work

1.准备个workstations 编辑虚拟机设置

日常运维2

2. 添加网卡

日常运维2

3.将网络连接模式改成区段(为了确保实验环境,网卡2不连接window而是连接某区段)

日常运维2

4.配置另一个workstations(fred linux 克隆)的网卡,选择Lan区段

日常运维2

5.添加成功,并尝试给新网卡ens37设置ip

日常运维2

可以通过下命令手动设置ip、端口(重启之后就会没有了,如果想要一直存在就要更改配置文件)

日常运维2

6.同理,配置fred 克隆workstation ens37网卡

日常运维2

7.测试是否ping的通

日常运维2

##调配

需求1

1. A机器上打开路由转发 (此默认值是0,意为关闭)

cat /proc/sys/net/ipv4/ip_forward

日常运维2

打开端口转发 echo "1" > /proc/sys/net/ipv4/ip_forward

日常运维2

2. 增加一条实现上网的规则

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

3.克隆机机器上设置网关为192.168.100.1

日常运维2

实现克隆机联网

日常运维2

4.设置dns

vi /etc/resolv.confvi 

日常运维2

需求2(端口映射)

1. A机器上打开端口转发

echo "1" > /proc/sys/net/ipv4/ip_forward

2. 增加iptables 规则(先删除之前的规则 以免影响接下来的实验)---此为进去的操作

iptables -t nat -A PREROUTING-d 192.168.88.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22

从88.128进来通过端口1122 转发到100.100的22端口

日常运维2

之后设置出去的端口

iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.88.128

3.克隆机器添加网关

克隆机机器上设置网关为192.168.100.1

实验成功

日常运维2

2.2.3.3 iptables规则备份和恢复

日常运维2