首页 > 系统相关 >iptables

iptables

时间:2024-11-30 22:44:58浏览次数:4  
标签:iptables -- root 192.168 规则 数据包

iptables防火墙

iptables介绍

其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
其实iptables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
      表(tables)提供特定的功能,iptables内置了4个表,即filter表、nat表、mangle表和raw表,分别用于实现包过滤,网络地址转换、包重构(修改)和数据跟踪处理。
   
   链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一 条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据 该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定 义的默认策略来处理数据包。



规则表:
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


规则链:
1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)

数据包处理方式
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则

iptables使用

input链
[root@node2 ~]# iptables -t filter -A INPUT -s 192.168.5.102 -j REJECT 
-t 指定表
-A 最后一行插入规则
-s 源ip
-j 指定动作

[root@node2 ~]# iptables -nL --line-number  显示行号
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    LOG        all  --  192.168.5.102        0.0.0.0/0            LOG flags 0 level 4
2    REJECT     all  --  192.168.5.102        0.0.0.0/0            reject-with icmp-port-unreachable

[root@node2 ~]# iptables -t filter -D INPUT 1
删除filter表INPUT链第一条规则


[root@node2 ~]# iptables -t filter -A INPUT -s 192.168.5.102 -p tcp --dport 22 -j REJECT 
-p 指定tcp 目标端口22

[root@node2 ~]# iptables -I  INPUT -s 192.168.5.102 -p tcp --dport 80 -j ACCEPT 
-I 指定将规则插入到第几行 不加指定插入到第一行

[root@node2 ~]# iptables -N wsa
创建用户自定义链
Chain wsa (0 references)
target     prot opt source               destination 

[root@node2 ~]# iptables -A wsa -s 192.168.5.102 -p tcp --dport 22 -j REJECT
默认状态下流量不会经过自定义链

[root@node2 ~]# iptables -A INPUT -j wsa 
进入input的链最后经过wsa链
forward链
[root@node1 network-scripts]# iptables -A FORWARD -s 192.168.91.11 -d 192.168.5.102 -p tcp --dport 22 -j REJECT 
源ip 192.168.91.11 访问 目标ip 192.168.5.102 的22端口动作为拒绝
nat表
PREROUTING:进入防火墙,做DNAT转换
POSTROUTING:通过防火墙出去,做SNAT转换

[root@node2 ~]# iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j SNAT --to-source 192.168.1.10
原地址为192.168.5.0/24的网段 出去时转换为 192.168.1.10

[root@node2 ~]# iptables -t nat -A POSTROUTING -s 192.168.5.0/24 -j MASQUERADE 
MASQUERADE 地址伪装


[root@node2 ~]# iptables -t nat  -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.5.102
进入防火墙目标端口为80的全部转换到192.168.5.102的80端口
[root@node2 ~]# iptables -t nat  -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 192.168.5.102:8080
进入防火墙目标端口为80的全部转换到192.168.5.102的8080端口

firewalld防火墙

firewalld介绍

dynamic firewall daemon。支持ipv4和ipv6。Centos7中默认将防火墙从iptables升级为了firewalld。firewalld相对于iptables主要的优点有:
firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。  

过滤规则集合:zone

一个zone就是一套过滤规则,数据包必须要经过某个zone才能入站或出站
[root@node1 ~]# firewall-cmd --get-zones
block dmz drop external home internal libvirt nm-shared public trusted work
drop        任何流入的包都被丢弃,不做任何响应。只允许流出的数据包。
block    任何流入的包都被拒绝,返回icmp-host-prohibited报文(ipv4)或icmp6-adm-prohibited报文(ipv6)。只允许由该系统初始化的网络连接
public     默认的zone。部分公开,不信任网络中其他计算机,只放行特定服务。 
external    只允许选中的服务通过,用在路由器等启用伪装的外部网络。认为网路中其他计算器不可信。
dmz         允许隔离区(dmz)中的电脑有限的被外界网络访问,只允许选中的服务通过。
work          用在工作网络。你信任网络中的大多数计算机不会影响你的计算机,只允许选中的服务通过。
home        用在家庭网络。信任网络中的大多数计算机,只允许选中的服务通过。
internal     用在内部网络。信任网络中的大多数计算机,只允许选中的服务通过。
trusted     允许所有网络连接,即使没有开放任何服务,那么使用此zone的流量照样通过(一路绿灯)。
[root@node1 ~]# firewall-cmd --get-default-zone  默认zone为public 
public
[root@node1 ~]# firewall-cmd --list-all  ---查看默认zone规则
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[root@node1 ~]# firewall-cmd --list-all --zone=home --查看home的规则
home
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

添加放行端口

[root@node1 ~]# firewall-cmd --add-port=80/tcp    默认zone,当前生效,临时

[root@node1 ~]# firewall-cmd --permanent --add-port=80/tcp
[root@node1 ~]# systemctl reload firewalld.service 
重载配置文件后永久生效

删除放行端口

[root@node1 ~]#  firewall-cmd --permanent --remove-port=80/tcp  ---永久删除
success
[root@node1 ~]# systemctl reload firewalld.service 

查看定义的服务端口

cd  /usr/lib/firewalld/services
[root@node2 services]# cat syslog.xml 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>syslog</short>
  <description>Syslog is a client/server protocol: a logging application transmits a text message to the syslog receiver. The receiver is commonly called syslogd, syslog daemon or syslog server.</description>
  <port protocol="udp" port="514"/>
</service>

修改配置的话只需要将/usr/lib/firewalld中的配置文件复制到/etc/firewalld中修改。恢复配置的话直接删除/etc/firewalld中的配置文件即可。

过滤规则

  • source 根据数据包源地址过滤,相同的source只能在一个zone中配置。
  • interface 根据接收数据包的网卡过滤
  • service 根据服务名过滤(实际是查找服务关联的端口,根据端口过滤),一个service可以配置到多个zone中。
  • port 根据端口过滤
  • icmp-block icmp报文过滤,可按照icmp类型设置
  • masquerade ip地址伪装,即将接收到的请求的源地址设置为转发请求网卡的地址(路由器的工作原理)。
  • forward-port 端口转发
  • rule 自定义规则,与itables配置接近。rule结合--timeout可以实现一些有用的功能,比如可以写个自动化脚本,发现异常连接时添加一条rule将相应地址drop掉,并使用--timeout设置时间段,过了之后再自动开放。

过滤规则优先级

1. source          源地址
2. interface       接收请求的网卡
3. firewalld.conf  中配置的默认zone

firewalld富规则

富规则的基本语法
firewall-cmd --add-rich-rule='<rule>'

rule family="ipv4" source address="源地址" port port="端口号" protocol="协议" accept|reject|drop

family: 协议族,通常是 ipv4 或 ipv6。
source address: 指定源 IP 地址。
destination address: 指定目标 IP 地址。
port: 指定端口号。
protocol: 指定协议(例如,tcp、udp、icmp 等)。
accept: 允许流量。
reject: 拒绝流量。
drop: 丢弃流量。
允许指定源 IP 地址访问特定端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="80" protocol="tcp" accept'
允许某个 IP 地址访问任何端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
拒绝某ip访问端口
在Firewalld防火墙服务中配置一条富规则,拒绝所有来自于192.168.10.0/24网段的用户访问本机ssh服务(22端口):
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
[root@linuxprobe ~]# firewall-cmd --reload
查看已应用的富规则
firewall-cmd --list-rich-rules
删除富规则
firewall-cmd --remove-rich-rule='<rule>'
添加日志记录
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port port="80" protocol="tcp" accept log prefix="HTTP access: "' --permanent


log [prefix="prefix text"] [level="log level"] [limit value="rate/duration"]
[root@node2 firewalld]# firewall-cmd --remove-rich-rule='rule family="ipv4" source address="192.168.5.101" port port="80" protocol="tcp" accept'

标签:iptables,--,root,192.168,规则,数据包
From: https://www.cnblogs.com/cloudwangsa/p/18579053

相关文章

  • 学霸带你游戏化 Linux 防火墙 iptables、firewalld
    网络安全与流量控制的重要性在当今数字化时代,网络安全成为用户和组织关注的核心问题。对于在线游戏而言,稳定的网络连接和安全的环境是保证良好体验的基础。无论是《绝地求生》(PUBG)中的激烈战斗,还是《英雄联盟》(LeagueofLegends)的团队协作,都离不开高效的网络流量管理与安全防......
  • 基于eBPF验证iptables mark设置在skb mark字段上
    结论iptables设置的mark加在了skb的mark字段上,不是报文里面。skb是报文载体,skb的data指针指向报文起始地址,data_end指针指向报文终止地址。验证#只针对icmp发包设置mark12345iptables-tmangle-AOUTPUT-picmp--icmp-typeecho-request-jMARK--set-mark12345主机......
  • k8s和ipvs、lvs、ipvsadm,iptables,底层梳理,具体是如何实现的
    计算节点的功能:提供容器运行的环境kube-proxy的主要功能:术业有专攻,kube-proxy的主要功能可以概括为4个字网络规则那么kube-proxy自己其实是个daemonset控制器跑的每个节点上都有个的pod它负责网络规则其实呢它还是个小领导它不直接去搞网络规则而是告诉别人,网络规......
  • Linux iptables用法与NAT
    1.相关概念2.iptables相关用法3.NAT(DNAT与SNAT)相关概念防火墙除了软件及硬件的分类,也可对数据封包的取得方式来分类,可分为代理服务器(Proxy)及封包过滤机制(IPFilter)。代理服务是一种网络服务,通常就架设在路由上面,可完整的掌控局域网的对外连接。IPFilter这种方式可以直接......
  • iptables配置网络防火墙
    文章目录基本链配置动作常用命令基本链链是数据包传播的途径,每条链对应多条规则。数据包进入服务器需要经过多道关卡,以下是三条应用在“主机防火墙”中的链。INPUT:入口流量OUTPUT:出口流量FORWARD:转发流量配置动作配置防火墙规则时,对于指定的数据包,我们通常可以......
  • 使用 iptables 限制 SSH 连接并允许特定来源 IP 访问的完整指南
    在保护服务器安全时,限制SSH连接是一项重要措施。通过iptables,你可以有效地控制哪些IP地址可以访问你的服务器,从而减少潜在的安全威胁。本文将介绍如何使用iptables禁止所有类型的连接,并允许特定来源IP的连接,提供实战案例和相关的Shell脚本。一、默认拒绝所有连......
  • iptables 命令使用帮助总结
    1.iptables命令帮助参数root@controller1:~#iptables--helpiptablesv1.6.1Usage:iptables-[ACD]chainrule-specification[options]iptables-Ichain[rulenum]rule-specification[options]iptables-Rchainrulenumrule-specification[options]......
  • iptables 工作过程整理
    1.概念和工作原理iptables是Linux系统中用来配置防火墙的命令。iptables是工作在TCP/IP的二、三、四层,当主机收到一个数据包后,数据包先在内核空间处理,若发现目标地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目标不是自身,则会将包丢弃或进行转发。1.1四表: filt......
  • ipvs为什么比iptables效率高
    IPVS(IPVirtualServer)相较于iptables在处理网络流量时效率更高,主要原因有以下几点:1.内核空间与用户空间IPVS:完全在内核空间中运行,直接处理网络数据包的转发,这样可以减少上下文切换和系统调用的开销。iptables:虽然也能在内核空间工作,但其某些操作涉及到用户空间,例如在管理规......
  • iptables 命令使用帮助总结
    本文为博主原创,转载请注明出处:1.iptables命令帮助参数root@controller1:~#iptables--helpiptablesv1.6.1Usage:iptables-[ACD]chainrule-specification[options]iptables-Ichain[rulenum]rule-specification[options]iptables-Rchainrulen......