Linux防火墙
Selinux :
他是linux系统特有的安全机制,因为这种机制限制太多,一般都是关闭状态
配置文件:永久关闭
/etc/selinux/confi 把他enforcing改为disabled
获取当前selinux状态可以用命令:getenforce
临时关闭selinux: setenforce 0
netfilter介绍:
在之前版本的centos6里的防火墙为netfilter,centos7为firewalld。
Iptables工具,
常听说Linux防火墙叫做“iptables”,其实这样的称呼并不是很正确,什么是iptables呢?在前面提过Netfilter所需要的规则是存放在内存中的,但问题是防火墙管理人员该如何将规则存放到内存呢?因此,防火墙管理人员会需要一个规则编辑工具,通过这个工具来对内存中的规则执行添加、删除及修改等操作,这个工具就是iptables以及ip6tables,其中iptables是在IPV4网络环境中使用,而ip6tables是在IPV6网络环境中使用,因此,Linux防火墙比较正确的名称应该是Netfilter/iptables。
yum install -y iptables-services 安装方法(安装完要手动启动)
用法:
查看规则: Iptables -nvl
清空规则: iptables -F // -F是清空规则(清空完要保存)
保存规则:service iptables save
规则文件保存在 /etc/sysconfig/iptables (这里可以自己重定向一个保存文件,即是备份)
规则还原可以使用重定向(<)
netfilter的五个表:
filter表:主要用于过滤包,系统默认表,该表有3个链,
INOUT:通过路由表后目的地为本机(进入本机的包)
OUTPUT:由本机产出,向外转发的包(本机发出去的包)
FORWORD:通过路由表后,目的地不为本机(过滤不是来自本机的包)
nat表:主要用于网络地址转换,该表有3个链
PREROUTING:数据包进入路由表之前(数据包进入防火墙时改变它的目地地址)
OUTPUT:改变本地产出的包的目地地址(本机发出去的包)
POSTROUTING:包即将离开防火墙时改变其源地址
Mangle表:主要用于给数据包做标记,然后根据标记去操作相应的包。该表有5个链
PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARDING
Raw表:可以实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪必消耗一定资源。改变有2个链
PREROUTING、OUTPUT
Security表:强制访问MAC的网络规则
Netfilter的5个链
PREROUTING:数据包进入路由之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转变
POSTROUTING:发送到网卡接口之前
原理:
1,当一个数据进入网卡时,他首先进入PREOUTING链(数据包进入路由之前)-然后判断目标IP是否本机。
如果数据包是进入本机的,他会到达INPUT链(通过路由表后目的地为本机),数据包到达INPUT链后进入本机内核,然后内核进行处理,处理完到OUTPUT链(由本机产生,向外转发)最后到POSTROUTING(发送到网卡接口之前)
如果不是进入本机的,他会到FORWARDING链(通过路由表后,目的地不为本机)最后POSTROUTING链(发送到网卡接口之前)
Iptables语法:
Iptables [option]
Option:
-P 指定链的默认策略iptables -P OUTPUT DROP (扔掉发出的所有数据包)
-D 删除(删除需要与添加规则前和删除规则后面要一致)
-A:增加规则{添加到那条链}
-s:指定来源IP (input链)
-p:指定协议{TCP/UDP/icmp}
--sport:来源的端口
-d:目标的IP (output链)
--dport:目标的端口
-j DROP/REJECT/ACCEPT:扔掉/接受/拒绝(差别在于DROP直接扔掉,REJECT先检查再考虑是否扔掉)
方便的删除技巧:
iptables -nvl --line-numbers
iptables -D 链 数字 (直接输入列出来了的数字)
Nat表应用:
实现网络地址转发(就是可以让内网上网)
iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o ens33 -j MASQUERADE
Firewalld防火墙:
Firewalld有2个基础概念:分辨是zone和service
每个zone下面有不同的规则
每一个zone里面都使用了不同的service,而service即是端口服务(如FTP,SSH、等)
firewalld的zone
Zone常用命令:
- 查看所有zone命令
- firewall-cmd --get-zones
- 查看默认zone命令
- firewall-cmd --get-default-zone (默认是public)
- 设定系统默认的zone
- firewall-cmd --set-default-zone=work
- 查看指定网卡的zone
- firewall-cmd --get-zone-of-interface=ens33
- 给指定网卡设置zone
- firewall-cmd --zone=home --add-interface=ens33
- 针对网卡更改zone
- firewalld-cmd --zone=home --change-interface=ens33
- 针对网卡删除zone
- firewalld-cmd --zone=home --remove-interface=ens33
- 查看系统所有网卡所在的zone
- firewalld-cmd --get-active-zones
Service操作命令:
- 列出系统所有service
- firewalld-cmd --get-services
- 查看系统默认的zone下面有那些service
- firewalld-cmd --list-services
- 查看知道zone有那些service
- Firewalld-cmd --zone=public --list-services
- 知道zone来添加服务
- firewall-cmd --zone=public --add-service=ftp
总结:zone是一个规则集合,每个zone下面有service,而每个sevice下面可以放行不同的服务(ftp、http),service也是可以自定义的。(多数是端口)
zones模板路径:/usr/lib/firewalld/zones (9种zones的模板)
service模板路径:/usr/lib/firewalld/service