- 一.安全技术和防火墙
- 1 安全技术
- 2.防火墙的分类
- 二.firewalld服务
- 1.firewalld 介绍
- 2.归入zone顺序
- 3.命令行配置
- 3.1.基础命令
- 3.2.查看现有firewall设置
- 3.3.设置查看默认区
- 3.4.添加源地址(网段)及端口 及服务
- 三.iptables
- 1.iptables的组成概述
- 2.实际操作
- 查看
- 删除、清空规则
- 四.band
- 1.命令过程
- 2.脚本设置
- 五.S/DNAT策略与应用过程
- 1.SNAT
- 2.DNAT
- 六.tcpdump—Linux抓包
-入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,类 似于监控系统一般采用旁路部署(默默的看着你)方式。
- 入侵防御系统(Intrusion Prevention System):以透明模式工作,分析数据包的内容如:溢出攻击、拒绝服务攻击、木马、蠕虫、系统漏洞等进行准确的分析判断,在判定为攻击行为后立即予以 阻断,主动而有效的保护网络的安全,一般采用在线部署方式。(必经之路)
- 防火墙( FireWall ):隔离功能,工作在网络或主机边缘,对进出网络或主机的数据包基于一定的规则检查,并在匹配某规则时由规则定义的行为进行处理的一组功能的组件,基本上的实现都是默 认情况下关闭所有的通过型访问,只开放允许访问的策略,会将希望外网访问的主机放在DMZ (demilitarized zone)网络中.
按保护范围划分:
- 主机防火墙:服务范围为当前一台主机
- 网络防火墙:服务范围为防火墙一侧的局域网
按实现方式划分:
- 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint, NetScreen(Juniper2004年40亿美元收购)等
- 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront
TMG
按网络协议划分:
- 网络层防火墙:OSI模型下四层,又称为包过滤防火墙
- 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层
firewalld是CentOS 7.0新推出的管理netfilter的用户空间软件工具,也被ubuntu18.04版以上所支持(apt install firewalld安装即可)
firewalld是配置和监控防火墙规则的系统守护进程。可以实iptables,ip6tables,ebtables的功能firewalld服务由firewalld包提供
- 先根据数据包中源地址,将其纳为某个zone
- 纳为网络接口所属zone
- 纳入默认zone,默认为public zone,管理员可以改为其它zone
- 网卡默认属于public zone,lo网络接口属于trusted zone
firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则
- 已经存在了zone区域
- 使用firewall,就是将特定的流量关联到某个zone中
- 通过源网段关联zone
- 通过网卡关联zone区域
- 如果两者都没有关联的数据报文,那就会去default zone
3.进入到zone以后,开始匹配zone内的规则
firewalld zone 分类
| zone名称 | 默认配置 |
|---|---|
| trusted | 允许所有流量 |
| home | 拒绝除和传出流量相关的,以及ssh,mdsn,ipp-client,samba-client,dhcpv6-client预 定义服务之外其它所有传入流量 |
| internal | 和home相同 |
| work | 拒绝除和传出流量相关的,以及ssh,ipp-client,dhcpv6-client预定义服务之外的其它所有传入流量 |
| public | 拒绝除和传出流量相关的,以及ssh,dhcpv6-client预定义服务之外的其它所有传入流 量,新加的网卡默认属于public zone |
| external | 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量,属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。 |
| dmz | 拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量 |
| block | 拒绝除和传出流量相关的所有传入流量 |
| drop | 拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应) |
预定义服务
| 服务名称 | 配置 |
|---|---|
| ssh | Local SSH server. Traffic to 22/tcp |
| dhcpv6- client | Local DHCPv6 client. Traffic to 546/udp on the fe80::/64 IPv6 network |
| ipp- client | Local IPP printing. Traffic to 631/udp. |
| samba- client | Local Windows file and print sharing client. Traffic to 137/udp and 138/udp. |
| mdns | Multicast DNS (mDNS) local-link name resolution. Traffic to 5353/udp to the 224.0.0.251 (IPv4) or ff02::fb (IPv6) multicast addresses. |
firewalld 两种配置方法
- firewall-config 图形工具: 需安装 firewall-config包
- firewall-cmd 命令行工具: firewalld包,默认安装
- 可以打开 Xmanager - Passive
`[root@localhost ~]# export DISPLAY=192.168.133.1:0.0 ###ip地址为自己的Windows地址 [root@localhost ~]# firewall-config`3.命令行配置 3.1.基础命令
firewall-cmd [OPTIONS...] firewall-cmd #基础命令 --permanent #设置永久生效 --add-port=端口号/协议(tcp/udp) 设置端口号和协议 --reload #重新加载防火墙设置 --remove #移除规则 --get-zones 列出所有可用区域 --get-default-zone 查询默认区域 --set-default-zone=3.2.查看现有firewall设置设置默认区域 --get-active-zones 列出当前正使用的区域 --add-source= [--zone= ] 添加源地址的流量到指定区域,如果无--zone= 选项,使用 默认区域 --remove-source= [--zone= ] 从指定区域删除源地址的流量,如无--zone= 选项, 使用默认区域 --add-interface= [--zone= ] 添加来自于指定接口的流量到特定区域,如果无-- zone= 选项,使用默认区域 --change-interface= [--zone= ] 改变指定接口至新的区域,如果无--zone= 选项,使用默认区域 --add-service= [--zone= ] 允许服务的流量通过,如果无--zone= 选项,使用默 认区域 --add-port= [--zone= ] 允许指定端口和协议的流量,如果无--zone= 选 项,使用默认区域 --remove-service= [--zone= ] 从区域中删除指定服务,禁止该服务流量,如果 无--zone= 选项,使用默认区域 --remove-port= [--zone= ] 从区域中删除指定端口和协议,禁止该端口 的流量,如果无--zone= 选项,使用默认区域 --reload 删除当前运行时配置,应用加载永久配置 --list-services 查看开放的服务 --list-ports 查看开放的端口 --list-all [--zone= ] 列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如 果无--zone= 选项,使用默认区域
[root@localhost ~]#systemctl status firewalld #查看状态 [root@localhost ~]#firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:3.3.设置查看默认区
[root@localhost ~]#firewall-cmd --zone= #查看区域 block dmz drop external home internal public trusted work [root@localhost ~]#firewall-cmd --get-default-zone #查看默认区域3.4.添加源地址(网段)及端口 及服务
[root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp #添加80端口 [root@localhost ~]#firewall-cmd --permanent --add-port=80/tcp --zone=home #可以指定区域 success [root@localhost ~]#firewall-cmd --add-service=http #允许http服务 [root@localhost ~]#firewall-cmd --permanent --add-icmp-block=echo-request #禁止ping success [root@localhost ~]#firewall-cmd --permanent --add-source=192.168.100.0/24 # 基础命令 永久生效 添加 源 网段 子网掩码三.iptables 1.iptables的组成概述
Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。
netfilter/iptables:IP 信息包过滤系统,它实际上由两个组件 netfilter 和 iptables组成。
主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口等信息的处理。
-netfilter/iptables关系:
netfilter:
属于“内核态”又称内核空间(kernel space)的防火墙功能体系。linux 好多东西都是内核态 用户态,那我们运维人员关注的是用户态, 内核我们关注不是很多,内核基本是我们开发人员关心的事情是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables :
属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。
netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。
ptables由五个表table和五个链chain以及一些规则组成
链
INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
表
filter、nat、mangle、raw、security
security -->raw–>mangle–>nat–>filter
CentOS7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须先关闭firewalld防火墙,再安装iptables
语法格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
- ACCEPT:允许数据包通过。
- DROP:直接丢弃数据包,不给出任何回 应信息。
- REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息。
| 管理选项 | 用法示例 |
|---|---|
| -A | 在指定链末尾追加一条 iptables -A INPUT (操作) |
| -I | 在指定链中插入一条新的,未指定序号默认作为第一条 iptables -I INPUT (操作) |
| -P | 指定默认规则 iptables -P OUTPUT ACCEPT (操作) |
| -D | 删除 iptables -t nat -D INPUT (操作) |
| -p | 服务名称 |
| -R | 修改、替换某一条规则 iptables -t nat -R INPUT (操作) |
| -L | 查看 iptables -t nat -L (查看) |
| -n | 所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名) iptables -L -n,iptables -nL,iptables -vnL (查看) |
| -v | 查看时显示更详细信息,常跟-L一起使用 (查看) |
| –line-number | 规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number |
| -F | 清除链中所有规则 iptables -F (操作) |
| -X | 清空自定义链的规则,不影响其他链 iptables -X |
| -Z | 清空链的计数器(匹配到的数据包的大小和总和)iptables -Z |
| -S | 查看链的所有规则或者某个链的规则/某个具体规则后面跟编号 |
| 参数 | 功能 |
|---|---|
| [!]-p | 匹配协议,! 表示取反 |
| [!]-s | 匹配源地址 |
| [!]-d | 匹配目标地址 |
| [!]-i | 匹配入站网卡接口 |
| [!]-o | 匹配出站网卡接口 |
| [!]–sport | 匹配源端口 |
| [!]–dport | 匹配目标端口 |
| [!]–src-range | 匹配源地址范围 |
| [!]–dst-range | 匹配目标地址范围 |
| [!]–limit | 四配数据表速率 |
| [!]–mac-source | 匹配源MAC地址 |
| [!]–sports | 匹配源端口 |
| [!]–dports | 匹配目标端口 |
| [!]–stste | 匹配状态(INVALID、ESTABLISHED、NEW、RELATED) |
| [!]–string | 匹配应用层字串 |
添加新的防火墙规则时,使用管理选项“-A”、“-I”,前者用来追加规则,后者用来插入规则。
查看查看已有的防火墙规则时,使用管理选项“-L”,结合“–line-numbers”选项还可显示各条规则在链内的顺序号。例如,若要查看 filter 表 INPUT 链中的所有规则,并显示规则序号, 可以执行以下操作
iptables [-t表名] -n -L [链名] |[-- line-numbers]
或
iptables - [vn]L
注意:不可以合写为-Ln
iptables -D INPUT 5 iptables -L INPUT --line-numbers iptables -t filter -D INPUT -P icmp - j REJECT 清空指定链或表中的所有防火墙规则,使用管理选项“-F”。例如,若要清空 filter 表 INPUT 链中的所有规则,可以执行以下操作。 [root@localhost ~]# iptables -F INPUT [root@localhost ~]# iptables -nL INPUT四.band 1.命令过程
nmcli connection add con-name mybond0 ifname bond0 type bond ipv4.method manual ipv4.addresses 192.168.133.50/24 mode active-backup nmcli connection add type bond-slave ifname ens33 master bond0 nmcli connection add type bond-slave ifname ens37 master bond0 systemctl restart network2.脚本设置
ifcfg-bond0
ifcfg-ens37和ens33同样设置
配置bonding
没有该文件就新创建一个
[root@studying network-scripts]# vim /etc/modprobe.d/dist.conf
末尾增加以下两行
alias bond0 bonding options bond0 miimon=100 mode=1
在/etc/rc.d/rc.local文件中加入如下语句,是系统启动自动运行
ifenslave bond0 ens33 ens37
重启网卡前先禁用此服务
systemctl stop NetworkManager systemctl disable NetworkManager
再重启网卡
systemctl restart network 查看结果 cat /proc/net/bonding/bond0五.S/DNAT策略与应用过程
首先设置三台虚拟机
其中一台作为服务器
四块网卡设置如下
服务器内、外网
外网主机网卡设置
内网主机
所有电脑都要安装httpd和iptables服务
[root@localhost ~]#yum install httpd -y [root@localhost ~]#yum install iptables -y [root@localhost ~]#systemctl stop firewalld [root@localhost ~]#setenforce 0 [root@localhost ~]#systemctl start httpd [root@localhost ~]#systemctl start iptables
在服务器上要修改个文件
[root@localhost ~]#vim /etc/sysctl.conf
增加如下一行,让内外网连起来
上服务
[root@localhost ~]#iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -o ens39 -j SNAT --to-source 12.0.0.1
上了服务以后
清空服务以后
转换1∶ 发布内网的Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.100.102 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.100.102 或 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.100.102 ———————————————— 版权声明:本文为CSDN博主「小小考拉123」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_51160032/article/details/121106271
转换2∶ 发布时修改目标端口
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接 iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.102:22
#在内网上安装httpd并开启服务 [root@localhost yum.repos.d]# yum install -y httpd [root@localhost yum.repos.d]# systemctl start httpd #关闭防火墙和selinux [root@localhost yum.repos.d]# systemctl stop firewalld.service [root@localhost yum.repos.d]# setenforce 0
在网关服务器添加iptables规则
#先清空规则 [root@localhost yum.repos.d]#iptables -F -t nat #添加规则 [root@localhost yum.repos.d]#iptables -t nat -A PREROUTING -i ens38 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.102 #查看规则 [root@localhost yum.repos.d]#iptables -nL -t nat Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 12.0.0.1 tcp dpt:80 to:192.168.100.102 Chain INPUT (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain POSTROUTING (policy ACCEPT) target prot opt source destination
测试外网是否能访问内网
#在外网服务器上 [root@localhost ~]# curl 12.0.0.1 #在内网服务器上 [root@localhost yum.repos.d]# tail /etc/httpd/logs/access_log 127.0.0.1 - - [02/Nov/2021:18:05:31 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0" 12.0.0.100 - - [02/Nov/2021:18:19:45 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"六.tcpdump—Linux抓包
tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 ∶只抓经过接口ens33的包
(3)-t ∶不显示时间戳
(4)-s 0 ∶ 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100 ∶只抓取100个数据包
(6)dst port ! 22 ∶不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析



