iptables防火墙

本文详细介绍了网络安全中的入侵检测机制、入侵防御、防火墙功能(包括iptables的规则、表和链)、firewalld动态防火墙以及iptables的安装和配置,还涵盖了抓包工具tcpdump的应用和firewalld区域管理。
摘要由CSDN通过智能技术生成

安全技术:

1.入侵检测机制 特点:阻断,量化,定位来自内外的网咯的威胁情况。提供报警和事后监控,类似于监控。

2.入侵防御:以透明模式工作,分析数据包的内容,一切进入本机的内容进行防护,木马,蠕虫,系统漏洞进行分析判断,然后进行判断,主动的防护机制,部署在整个架构,或者是集群的入口处。(必经之路)

3.防火墙:隔离功能  工作在网络或主机的边缘

对网络或者主机进出的数据包按照一定规则进行检查。(网络层转发的数据包)

我们在工作当中,一般对防火墙的设置都是白名单啊,拒绝所有,允许个别。

4.防水墙,透明模式工作,华为的ensp监控就是防水墙。一切对于防水墙都是透明的

在事前,事中,事后,都可以进行检测。

按保护范围分为:

主机防火墙  仅为当前主机服务

网络防火墙  防护的是另一侧的局域网

网络层防火墙:iptables/包过滤防火墙

访问控制,每个数据包的源ip地址,目的ip地址,端口号,协议等等进行组合式监控,由此来判断数据包是否允许通过

通信的五要素和四要素:

五要素:源/目的ip  源/目的端口  协议

四要素:源/目的ip  源/目的端口

iptables:内核防火墙,内置四个表,而且是在所有表中,配置规则,配置后立即生效,不需要重启服务

四个表:

raw:连接跟踪,跟踪数据的一种机制。配置了之后,可以加快防火墙的穿越速度(关闭raw里面的追踪)

mangle:修改数据包的标记位规则

nat:地址转换的规则表

filter:包过滤规则表。根据预定义的规则,人工设置的规则,对符合条件的数据包进行过滤,也是iptables的默认表

四个表也是有优先级的

raw------->mangle-------->nat------->filter

五个链:

prerouting链:处理数据包进入本机之前的规则

input链:处理数据包进入本机的规则

FORWARD:处理数据包转发到其他主机的规则

output:处理本机发出的数据包的规则,一般不做处理

postrouting:处理数据包离开本机之后的规则

(prerouting和postrouting这个两个链是结合nat表使用的)

表里有链,链里面有规则

iptables的配置规则,写在链当中

 

管理选项:

-A:在指定链的末尾进行追加

-I:在指定链插入新的规则,可以指定插入规则的位置

-P:修改默认策略(链的策略)

-D:删除

-R:修改,替换规则

-L:查看指定链当中的规则

-n:以数字形式显示规则

-v:查看详细信息

--line-number:给每个链中的规则进行编号查看

-F:清空指定链当中的规则(慎用!)

-X:清空自定义链的规则

-t:指定表名

匹配条件:

-p:可以指定数据包的协议类型

-s:指定数据包的源ip地址

-d:指定数据包的目的ip地址

-i:指定数据包进入本机的网络接口

-o:指定数据包离开本机的时候使用的网络接口

--sport:指定源端口

--dport:指定目的端口号

控制类型:

-j:后面跟上控制类型

ACCEPT:允许数据包通过(配置规则)

DROP:拒绝数据包通过,直接丢弃数据包,不给任何回应的信息(默认策略)

REJECT:拒绝,拒绝数据包通过,但是会给一个回应的信息

SNAT:修改数据包的原地址

DNAT:修改数据包的目的地址

匹配规则的策略:

从上往下按照规则顺序匹配,匹配到了规则,后面的规则就不再匹配。针对相同规则的类型,匹配到之后后续的规则也不生效。

iptables安装

1.关闭防火墙

systemctl stop firewalld.service 

2.安装iptables 防火墙

yum -y install iptables iptables-services

3.设置iptables开机启动

systemctl start iptables.service

systemctl enable iptables.service

4.iptables防火墙的配置方法:

1、使用iptables命令行。

2、使用system-config-firewall; centso7不能使用 centos 6可以使用

iptables的命令格式:

iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]

-t:如果不指定  默认是filter
表名、链名用来指定 iptables 命令所操作的表和链,未指定表名时将默认使用 filter 表;

注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链,一般不这么操作
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写

1.查看规则

粗略查看默认规则:
[root@localhost ~]#iptables   -L
数字化的形式查看规则:
[root@localhost ~]#iptables   -nL
注意:当-nL同时使用时,n一定要在L 的前面,否则会报错,使用-vnL时也是如此,L要在最后面
指定表查看:
[root@localhost ~]#iptables -t filter  -vnL

查看行规则的位置

[root@localhost ~]#iptables -t filter  -vnL --line-number

2.添加规则 
添加规则的两个常用选项:
-A,在末尾追加规则。
-I,在指定位置前插入规则。如果不指定,则在首行插入
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。

禁止所有主机ping本机

[root@localhost ~]# iptables -t filter -A INPUT -p icmp -j REJECT

允许ping通,-A在前一条规则后添加

指定序号插入,插入到第一条

禁止任何主机tcp

iptables -t filter -A INPUT -p tcp -j REJECT

允许任何主机udp

iptables -I INPUT 1 -p udp -j ACCEPT  

对单个ip进行拒绝

 iptables -t filter -A INPUT -s 192.168.233.22 -p icmp -j REJECT

对多个ip进行拒绝

iptables -t filter -A INPUT -s 192.168.233.22,192.168.233.23 -p icmp -j REJECT

指定端口

iptables -t filter -A INPUT -p tcp --dport 22 -j REJECT

协议在前,指定端口号在后,否则识别不了端口,无法匹配就会报错!

指定IP地址的服务端口拒绝

iptables -t filter -A INPUT -s 192.168.233.22 -p tcp --dport 22 -j REJECT

例题:写一个禁止192.168.233.22:80的端口入访问

iptables -t filter -A INPUT -s 192.168.233.22 -p tcp --dport 80 -j REJECT

3.删除规则  -D

清空所有规则

 iptables -F 

(慎用!!!)

根据序号删除内容

删除INPUT里的第一条规则

iptables -D INPUT 1 

4.修改规则  -R(不推荐使用)

修改默认规则:
默认策略是指四表五链中链的默认策略,INPUT,FORWARD,OUTPUT,filter三条链的默认值为ACCEPT
就像是设定黑名单一样,默认其他的协议操作都是允许的,只有指定加入的且声明权限的为(DROP 或 REJECT)
是拒绝禁止的对象。

如果远程连接的相关规则清除导致无法远程连接主机此时的解决方案有三种:

第一种:我的防火墙设置只是临时设置,并为保存,重启服务器即可

第二种:操作服务器,重启iptables服务 

第三种:进入机房操作该服务器(将设置恢复,重新修改规则)

在生产中都是默认DROP

指定IP地址

禁止22的数据进入

 iptables -A INPUT -s 192.168.233.22 -j DROP

指定网络接口

禁止指定的网络设备名称ens33的所有网段
iptables -I INPUT 1 -i ens33 -s 192.168.233.0/24 -j DROP

指定端口

禁止整个网段访问80端口

 iptables -t filter -A INPUT -s 192.168.233.0/24 -p tcp --dport 80 -j REJECT

禁止整个网段访问22和80端口

这里写发要注意,小的数字写在前面,大的写在后面

显示匹配

-m 扩展模块”的形式明确指出类型,包括多端口、MAC地址、IP范围、数据包状态等条件

-m multiport --sport 源端口列表

-m multiport --dport 目的端口列表

-m iprange --src-range  源IP范围

-m iprange --dst-range  目的IP范围

-m mac --mac-source MAC地址

多端口匹配

一次性禁止多个tcp网络协议的端口匹配规则

ip范围匹配

禁止网段内的ip地址ping主机

MAC匹配

iptables -A INPUT -m mac --mac-source 00:0c:29:f7:24:38 -j DROP

自定义链

自定义链添加

iptables -N custom(链名,自定义的) 

自定义链重命名

iptables -E custom(原来名称) dym(新名称)

删除自定义链

iptables -X  dym(自定义链名)

创建自定义链规则  

iptables -t filter -I dym 1 -p icmp -j REJECT 

删除自定义规则链

先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则,删除完规则最后再删除链

SNAT 和DNAT

SNAT:原地址转换

DNAT:目的地址转换

实验

首先准备三台虚拟机,一台做内网,一台做外网,一台网关服务器

给对内和对外的服务器yum安装httpd服务,安装完成启动这个服务,给网关服务器的虚拟机添加一个网卡,三台服务器都关闭防火墙和安全机制。

1.先配置作为网关服务器的虚拟机

先查看一下新添加的网卡名字(ens33作为对内的网卡,ens36作为对外的网卡)

修改ens33的网卡

修改ens36的网卡

开启网关服务器路由转发功能

sysctl -p 永久开启,立即重启

2.设置外网虚拟机网卡

3.修改内网虚拟机网卡

4.去网关服务器虚拟机配置SNAT和DNAT

Linux系统能否抓包吗?

可以

tcpdump是linux自带的抓包工具

抓包方式:1.指定抓包的数量

2.动态抓包,一直会获取包,除非人工停止

抓包命令格式:

tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.120.0/24 -w ./target.cap

tcpdump抓包命令,固定开头

tcp:抓包的协议

-i:只抓经过ens33的数据包

-t:不显示时间戳

-s0:抓完整的数据包

-c:指定抓包的个数

dst port 80:访问的是httpd 80

src net 192.168.120.0/24:源地址来自192.168.120.0网段的ip

-w:抓包的数据,保存位置

*.cap Wireshark分析.cap 后缀的

firewalld:centos7自带的。和iptables一样,也是包过滤防火墙。

firewalld过滤,通过区域来进行配置

uptables静态的防火墙

firewalld动态的防火墙

Firewalld靠的是区域

1.trusted:信任区,所有流量都可以传入

2.public:公共区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,

也是firewalld的默认区域

3.external:外部区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝,默认通过此区域转发的ipv4流量地址,可以进行伪装

4.home:家庭区域,允许ssh或者dhcpv6-client的流量可以穿入,其他的全部拒绝

5.internal:内部区域,默认值与home区域的作用相同

6.work:工作区域,允许ssh或者dhcpv6-client的流量可以传入,其他的全部拒绝

7.DMZ隔离区 非军事区:允许ssh其他的预定义好配置,其他的全部拒绝

8.block:限制区,拒绝所有的流量

9.drop:丢弃区域,所有流量都会丢弃

服务管理

显示当前系统中的默认区域

firewall-cmd --get-default-zone

显示默认区域内的所有规则

firewaL-cmd --list-all

默认区域的开关服务

关闭

firewall-cmd --set-default-zone=block

开启

firewall-cmd --set-default-zone=public

查看区域内允许通过的服务

firewall-cmd --List-service

临时添加服务

单个添加

添加http服务到public中

firewall-cmd --add-service=http --zone=public

一次性添加多个

添加http和nginx服务到public中

方法一

firewall-cmd --add-service=http --add-service=nginx --zone=public

方法二

firewall-cmd --add-service={ftp,http} --zone=public

永久添加

firewall-cmd --add-service={ftp,http} --zone=public --permanent

firewall-cmd--reload

配置永久生效要重新加载配置

端口管理

添加80端口

移除80端口

一次性添加多个端口

添加端口范围

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值