当前位置: 首页 > news >正文

【Linux】iptables防火墙基本概念

什么是防火墙?

防火墙类别

  1. 包过滤防火墙:看IP包、段(工作在网络层和传输层)
  2. 应用级别防火墙:看应用的协议比如http、ftp等(应用层 or 7层)

防火墙还分为软件和硬件防火墙

  1. 软件防火墙:iptables+netfilter+普通的机器+Linux
  2. 硬件防火墙:iptables+netfilter+普通的机器+Linux+专门的芯片、网卡、cpu等

WAF
Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。

什么是iptables?

iptables是一个应用工具,给内核里的netfilter传递参数的工具
称之为Linux防火墙的用户态

netfilter 模块

netfilter对网络进出的数据进行管理
位于Linux内核中的包过滤防火墙功能体系
称之为Linux防火墙的内核态

内核的作用?

内核是操作系统最核心的软件,Linux系统中的防火墙功能是内核实现的
2.4版本以后的内核中,包过滤机制是netfilter,管理工具是iptables

  1. 对cpu进行调度管理
  2. 对内存进行管理
  3. 对进程进行管理
  4. 对文件系统管理(磁盘)
  5. 网络、其他硬件进行管理
[root@nat-router net]> pwd
/lib/modules/3.10.0-1160.el7.x86_64/kernel/net
[root@nat-router net]> ls
6lowpan  8021q  bluetooth  can   core  dns_resolver  ipv4  key   llc       mac802154  netlink      packet   rfkill  sctp    unix       wireless
802      atm    bridge     ceph  dccp  ieee802154    ipv6  l2tp  mac80211  netfilter  openvswitch  psample  sched   sunrpc  vmw_vsock  xfrm
[root@nat-router net]> cd netfilter/
[root@nat-router netfilter]> ls
ipset                          nf_conntrack_tftp.ko.xz    nf_synproxy_core.ko.xz  nft_redir.ko.xz        xt_CONNSECMARK.ko.xz  xt_IDLETIMER.ko.xz  xt_osf.ko.xz       xt_state.ko.xz
ipvs                           nf_log_common.ko.xz        nf_tables_inet.ko.xz    nft_reject_inet.ko.xz  xt_conntrack.ko.xz    xt_iprange.ko.xz    xt_owner.ko.xz     xt_statistic.ko.xz
nf_conntrack_amanda.ko.xz      nf_nat_amanda.ko.xz        nf_tables.ko.xz         nft_reject.ko.xz       xt_cpu.ko.xz          xt_ipvs.ko.xz       xt_physdev.ko.xz   xt_string.ko.xz
nf_conntrack_broadcast.ko.xz   nf_nat_ftp.ko.xz           nft_compat.ko.xz        xt_addrtype.ko.xz      xt_CT.ko.xz           xt_LED.ko.xz        xt_pkttype.ko.xz   xt_tcpmss.ko.xz
nf_conntrack_ftp.ko.xz         nf_nat_irc.ko.xz           nft_counter.ko.xz       xt_AUDIT.ko.xz         xt_dccp.ko.xz         xt_length.ko.xz     xt_policy.ko.xz    xt_TCPMSS.ko.xz
nf_conntrack_h323.ko.xz        nf_nat.ko.xz               nft_ct.ko.xz            xt_bpf.ko.xz           xt_devgroup.ko.xz     xt_limit.ko.xz      xt_quota.ko.xz     xt_TCPOPTSTRIP.ko.xz
nf_conntrack_irc.ko.xz         nf_nat_redirect.ko.xz      nft_exthdr.ko.xz        xt_cgroup.ko.xz        xt_dscp.ko.xz         xt_LOG.ko.xz        xt_rateest.ko.xz   xt_TEE.ko.xz
nf_conntrack.ko.xz             nf_nat_sip.ko.xz           nft_hash.ko.xz          xt_CHECKSUM.ko.xz      xt_DSCP.ko.xz         xt_mac.ko.xz        xt_RATEEST.ko.xz   xt_time.ko.xz
nf_conntrack_netbios_ns.ko.xz  nf_nat_tftp.ko.xz          nft_limit.ko.xz         xt_CLASSIFY.ko.xz      xt_ecn.ko.xz          xt_mark.ko.xz       xt_realm.ko.xz     xt_TPROXY.ko.xz
nf_conntrack_netlink.ko.xz     nfnetlink_acct.ko.xz       nft_log.ko.xz           xt_cluster.ko.xz       xt_esp.ko.xz          xt_multiport.ko.xz  xt_recent.ko.xz    xt_TRACE.ko.xz
nf_conntrack_pptp.ko.xz        nfnetlink_cthelper.ko.xz   nft_masq.ko.xz          xt_comment.ko.xz       xt_hashlimit.ko.xz    xt_nat.ko.xz        xt_REDIRECT.ko.xz  xt_u32.ko.xz
nf_conntrack_proto_gre.ko.xz   nfnetlink_cttimeout.ko.xz  nft_meta.ko.xz          xt_connbytes.ko.xz     xt_helper.ko.xz       xt_NETMAP.ko.xz     xt_sctp.ko.xz
nf_conntrack_sane.ko.xz        nfnetlink.ko.xz            nft_nat.ko.xz           xt_connlabel.ko.xz     xt_hl.ko.xz           xt_nfacct.ko.xz     xt_SECMARK.ko.xz
nf_conntrack_sip.ko.xz         nfnetlink_log.ko.xz        nft_queue.ko.xz         xt_connlimit.ko.xz     xt_HL.ko.xz           xt_NFLOG.ko.xz      xt_set.ko.xz
nf_conntrack_snmp.ko.xz        nfnetlink_queue.ko.xz      nft_rbtree.ko.xz        xt_connmark.ko.xz      xt_HMARK.ko.xz        xt_NFQUEUE.ko.xz    xt_socket.ko.xz

firewall是什么?

firewall是在iptables的基础上进行了改良的传统工具,更加好用
iptables理解为一个函数
firewall 理解为一个类/库,里面有很多的函数

[root@nat-router ~]> systemctl start firewalld
[root@nat-router ~]> firewall-cmd  --add-port=80/tcp
[root@nat-router ~]> firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports: 80/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

iptables的规则表、链结构

默认的5种规则链

INPUT(处理入站数据包)
OUTPUT(处理出站数据包)
FORWARD(处理转发数据包)
POSTROUTING(在进行路由选择后处理数据包)
PREROUTING(在进行路由选择前处理数据包)

默认的4个规则表

raw(确定是否对该数据包进行状态跟踪)
mangle(为数据包设置标记)
nat(修改数据包中的源IP、目标IP地址或端口)
filter(确定是否放行该数据包-过滤

它们之间的关系:

表中包含链,链包含规则。
规则表之间的优先顺序
依次为:raw、mangle、nat、filter
在这里插入图片描述
如下可以查询到对应的关系:

[root@nat-router ~]> iptables -n -L -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (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@nat-router ~]> iptables -n -L -t filter
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


[root@nat-router ~]> iptables -n -L -t raw
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


[root@nat-router ~]> iptables -n -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            192.168.100.202      tcp dpt:80 to:192.168.200.201

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
SNAT       all  --  192.168.200.0/24     0.0.0.0/0            to:192.168.100.202

规则链间的匹配顺序

  • 入站数据:PREROUTING、INPUT
  • 出站数据:OUTPUT、POSTROUTING
  • 转发数据:PREROUTING、FORWARD、POSTROUTING
    在这里插入图片描述

规则链内的匹配顺序

按顺序一次进行检查,找到相匹配的规则即停止
若在改链内找不到相匹配的规则,则按该链的默认策略处理

规则(Rule)

​每条规则定义了匹配条件和相应的处理动作。当数据包与规则匹配时,执行对应的动作
如ACCEPT(接受)、DROP(丢弃)等。​
默认是ACCEPT

[root@nat-router ~]> iptables -n -L -t filter
Chain INPUT (policy ACCEPT)   #ACCEPT
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
http://www.dtcms.com/a/118378.html

相关文章:

  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记2
  • 网络安全应急响应-文件痕迹排查
  • Nginx 反向代理:从入门到精通
  • 硬盘分区格式方案之 MBR(Master Boot Record)主引导记录的 主分区 和 扩展分区 笔记250407
  • KWDB 创作者计划—人工智能赋能工业制造:智能制造的未来之路
  • M1使用docker制作镜像xxl-job,供自己使用
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__上
  • springboot 项目怎样开启https服务
  • 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
  • 03_docker 部署 nginx 配置 HTTPS 并转发请求到后端服务
  • WebVTT 教程
  • dfs练习
  • Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力
  • ZoomCharts使用方法
  • 线性代数:公共解
  • dolphinscheduler单机部署链接oracle
  • 智慧农业示范园区大数据分析平台整体解决方案
  • 【Easylive】Elasticsearch搜索组件详解
  • Android Input——IMS启动流程(二)
  • ubuntu下的node.js的安装
  • 带Label的韦恩图(vue)
  • 【Java】Maven
  • 【软件测试】自动化测试结合 CI/CD有哪些方案
  • Oracle 数据库查询表广播
  • 青蛙吃虫--dp
  • 【蓝桥杯】动态规划:线性动态规划
  • PhotoShop学习07
  • PostIn V1.0.8版本发布,IDEA 插件支持一键扫描上报,让接口定义不再繁琐
  • leetcode刷题记录44-208. 实现 Trie (前缀树)
  • 指针本质传递偏移动态申请空间 c语言(day05)