iptables学习(代码片段)

author author     2022-10-22     668

关键词:

一:
防火墙:硬件,软件:规则(匹配标准,处理办法)
framework:
默认规则:
开放
关闭
规则:匹配标准
ip: 源ip,目的ip
tcp: sport dport
udp: sport dport
icmp: icmp-type
数据报文过滤:
openBSD
linux2.0
ipfw/Firewall
linux2.2
ipchain/firewall
linux2.4
iptables/netfilter

hook:钩子函数
prerouting
input
output
forward
postrouting
规则链
PRERROUTING
INPUT
OUTPUT
FORWORD
POSTROUTING
filterr(过滤):表
INPUT
OUTPUT
FORWORD
nat(地址转换):表
PRERROUTING
OUTPUT
POSTROUTING
mangle(拆开,修改,封装):表
PRERROUTING
INPUT
FORWORD
OUTPUT
POSTROUTING
raw(原始格式):表
PRERROUTING
OUTPUT

iptables由四表五链组成
链:
INPUT,OUTPUT,FORWORD,PRERROUTING,POSTROUTING
表:
filter,nat,raw,mangle
filter:
INPUT,FORWORD和OUTPUT
nat:
PRERROUTING(DNAT),OUTPUT,POSTROUTING(SNAT)
mangle:
PRERROUTING,INPUT,FORWORD,POSTROUTING和OUTPUT
raw:
PRERROUTING,OUTPUT

netfilter:framework,tcp/ip
命令:
管理规则
-A:附加一条规则,添加在链的尾部.
-I CHAIN [num]:插入一条规则,插入为对应CHAIN上的第num条规则.
-D CHAIN [num]:删除指定链中的第num条规则.
iptables -D INPUT 2
-R CHAIN [num]:替换指定的规则.
管理链
-F [CHAIN]:flash,清空指定规则链,如果省略CHAIN,则可以实现删除对应表中的所有链.
-P CHAIN:设定指定链的默认策略(或规则).
-N:自动义一个新的空链.
-X:删除一个自动义的空链.
-Z:清空指定链中所有规则的计数器.
-E:重命名自定义的链.
查看类
-L:查看指定表中的规则.
-n:以数字格式显示主机地址和端口号.
-v:显示详细信息.
-vv:显示更详细的信息.
-x:显示计数器的精确值.
--line-numbers:显示规则号码.
动作(target):
ACCEPT(放行)
DROP(丢弃)
REJECT(拒绝)
DNAT(目的地址转换)
SNAT(源地址转换)
REDIRECT(端口重定向)
MASQUERADE(地址伪装的)
LOG(记录日志的)
MARK(给报文打上标记的)

能否使用自定义链?
可以使用自定义链,但只有在调用时才能发挥作用,而且如果没有自定义链中的任何规则匹配,还应该有返回机制.
用可以删除自动义的空链
默认链无法删除
每个规则都有内置的计数器,一个用来计数被匹配的报文个数,一个用来匹配的报文体积之和.

规则:匹配标准,处理动作
iptables [-t table] command chain [num] 匹配标准 -j 处理办法
-j TARGET
ACCEPT:允许接受
DROP:悄悄丢弃
REJECT:丢弃后警告
匹配标准:
基本匹配(普通匹配)
-s --src指定源地址
-d , --dst指定目标地址
-p tcp|udp|icmp指定协议
-i ethx指定数据报文流入的接口
一般用在prerrouting,input,forward
-o ethx指定数据报文流出的接口
一般用在output,postrouting,forward
扩展匹配:
-m macth_name --spec_options
例如: -m tcp --dport 22
隐式扩展:不用特别指明由哪个模块进行的扩展,因为此时使用-ptcp|udp|icmp
-p tcp
--sport:指定源端口
--dport:指定目标端口,可以是一个端口或者多个端口
--tcp-flags SYN,FIN,ACK,RST SYN=--SYN
SYN:第一次连接
FIN:断开连接
RST:重置连接
ACK:确认连接
PSH:推送
URG:紧急指定有效
--tcp-flags LIST1 LIST2 :
检查LIST1所指明的标志位,且这其中LIST2所表示出的位必须为1,而余下的必
须为0,没在LIST1中指明的不作检查.
--syn:匹配tcp三次握手的第一个报文.
-p udp:
--sport
--dport
-p icmp:
--icmp-type
可用数字表示类型.
0:echo-reply 别人给予响应
8:echo-request ping别人
显式扩展:必须指明由哪个模块进行的扩展,在iptables中用-m可完成此项功能.
在/lib/iptables/或者/lib64/xtables/下有许多的iptables模块,用来模块化匹配.而用模块匹配的叫扩展匹配,在其中.so前面为大写的是target.
显示扩展:使用额外的匹配机制.
-m EXTESTION --spe-opt
1, multiport扩展.
以离散方式定义多端口匹配,但最多十五个端口.
[!] --source-ports,--sports port[,port|,port:port]... :指明源端口多个
[!] --destination-ports,--dports port[,port|,port:port]... :指明目的端口多个.
[!] --ports port[,port|,port:port]... :又能匹配源又能匹配目标.
2, iprange扩展.
指定连续的IP地址范围时使用,(但一般不能扩展到整个网络).

          [!] --dst-range from[-to]:指明连续的目的ip地址范围.
     3, string扩展.
         检查报文中出现的字符串.
          -algo bm|kmp:指定检查使用的字符串比对算法,必须选项.
            bm=Boyer-Moore(人名)
            kmp=Kauth-Pratt-Morris
          --from offset:从那里开始检查字符串.
          --to offset:右侧偏移,即到哪里结束.
          [!] --string pattern:查找的字符串.
          [!] --hex-string pattern:使用十六进制编码查找.
     4, time扩展.
         根据报文到达的时间与指定的时间范围进行匹配.
          --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
          --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]
          --timestart hh:mm[:ss]
          --timestop hh:mm[:ss]
          [!] --monthdays day[,day...]
          [!] --weekdays day[,day...]
     5, connlimit扩展
         根据每客户端ip(也可以是地址快)做并发连接数量匹配.
          --connlimit-above n:连接的数量大于n.
          --connlimit-upte n:连接的数量小于等于n.
     6, limit扩展
         基于收发报文的速率做检查.
          --limit rate[/second|/minute|/hour|/day]:
            最大平均匹配率,例如3/minute,单位有second,minute,hour,day,默认是3/hour
          --limit-burst number:峰值数量.
     7, state扩展
         根据连接追踪机制检查连接间的状态,结合ip_conntrack追踪会话的扩展.
         调整连接追踪功能所能够容纳的最大连接数量:
            /proc/sys/net/nf_conntrack_max
         已经追踪到并记录下的连接:
            /proc/net/nf_conntrack
         可追踪的连接状态:
          NEW:新连接的请求,连接追踪模板中不存在此连接的相关条目.
          ESTABLISHED:NEW状态之后,即已建立的连接.
          INVALID:无法识别的连接.
          RELATED:相关的连接,如ftp协议中的命令连接和数据连接之间的关系.
     -m state  --state NEW,ESTABLISHED  -j ACCEPT

开放被动连接的ftp服务.
ftp使用20,21两个端口,20是数据连接,21是控制连接,并且有两种连接的模式.
主动连接:
在主动模式下,tcp/20端口用于数据传输,tcp/21端口用于控制连接.
被动连接:
在被动连接下,tcp/21用于控制连接,>1023的随机端口用于数据传输
如果ftp工作在被动模式下,无法指定数据传输的端口,于是引入了RELATED状态,RELATED主要用于追踪与其相关的端口.
注意:ftp工作在主动模式或者被动模式与客户端的请求有关.
1)安装ftp追踪时的专用的模板.
在/lib/modules/2.6.32-431.el6.x86_64/kernel/kernel/trace下关于内核追踪相关的模块.
modprobe nf_conntrack_ftp
2)放行请求报文.
命令连接:NEW,ESTABLISHED
数据连接:RELATED,ESTABLISHED

保存规则:
service iptables save
保存在/etc/sysconfig/iptables
iptables-save>自定义文件
iptables-restore<自定义文件

centos初步学习记录iptables(代码片段)

一、前言iptables中文名:IP信息包过滤系统,它是一个配置Linux内核防火墙的命令行工具,是netfilter项目的一部分。术语iptables也经常代指该内核级防火墙。iptables可以直接配置,也可以通过许多前端和图形界面配置。iptables用于ipv... 查看详情

学习笔记之iptables(代码片段)

1.防火墙的基础知识    首先需要认识到什么是防火墙,防火墙是通过一些有顺序的规则。给从网络中进入到主机应用层之间的通道上设置很多道拦截的口,每个口会有一堆规则去匹配。匹配上,如果是匹配结果是... 查看详情

linux学习-iptables之tcpwrapper(代码片段)

tcp_wrapper:tcp包装器对基于tcp协议开发并提供服务的应用程序,提供一层访问控制工具基于库调用实现其功能,libwrap#判断服务是否能够由tcp_wrapper进行访问控制1)动态编译:ldd命令2)静态编译:strings/path/to/progra... 查看详情

学习linux服务器安全这一篇文章就够了(代码片段)

文章目录linux服务器安全iptables入门简介iptablesfilter表详解iptablesnat表详解iptablesmangle表详解IPtablesRAW表详解iptables常用命令iptables实验iptables企业案列firewalld防火墙入门简介firewalld基础概念firewall的实验总结linux服务器安全作为Linux运... 查看详情

iptables学习02-nat表应用(代码片段)

...sys/net/ipv4/ip_forward端口转发配置文件默认是0,表示关闭。iptables-tnat-APOSTROUTI 查看详情

linux学习-iptables之nat(代码片段)

通过Vmware克隆创建三台虚拟机模拟NAT(CentOS6.10)第一台主机网卡配置:IP:192.168.100.10,网关:192.168.100.20第二台主机做为NAT主机,网卡1配置:IP:192.168.100.20,网卡2配置:192.168.200.10第三台主... 查看详情

ipset的学习与使用(代码片段)

...T怎么说ipset是一个基于内核的数据结构,它可以用于管理iptables规则。ipset可以通过自定义集合来代替直接写入iptables规则。这些集合可以包括ip地址、端口号、mac地址等成员,并且可以在多个规则中重复使用,从而简化了管理和... 查看详情

iptables端口转发(代码片段)

清除相关规则/sbin/iptables-F/sbin/iptables-F-tnat/sbin/iptables-X/sbin/iptables-Ziptables-F-tmangleiptables-tmangle-Xiptables-tnat-X预设规则/sbin/iptables-PINPUTACCEPT/sbin/iptables-PFORWARDDROP/sbin/iptables-P 查看详情

iptables--iptables(代码片段)

A网:https://12.102.246.15:8080B网:https://12.100.246.15:8080 A网DNAT转换:iptables-tnat-APREROUTING-d12.102.246.15-ptcp-mtcp--dport8080-jDNAT--to-destination10.12.3.3:8080B网DNAT转换:iptables-tnat-APREROU 查看详情

iptables笔记(代码片段)

查看iptables表iptables-tfilter-Liptables-tnat-Liptables-tmangle-L介绍iptables命令iptables-ttable命令chainrules-jtargettable可以是filter、nat、mangle,默认是filter-p或--policy定义默认策略-A或--addend在规则列表的最后增加一条规则-I或--insert在指定 查看详情

iptables规则(代码片段)

iptables命令:~]#iptables-L-n查看规则centOS7~]#systemctldisablefirewalld.service~]#systemctlstopfirewalld.service永久清除规则CentOS6~]#serviceiptablestop~]#chkconfigiptablesoff命令选项:-F:清除规则,只对当前有效。 查看详情

iptables操作(代码片段)

iptables--list查看列表iptables删除规则iptables-nL--line-numberChainINPUT(policyACCEPT)numtargetprotoptsourcedestination1ACCEPTall--0.0.0.0/00.0.0.0/0stateRELATED,ESTABLISHED2ACCEPTicmp--0.0.0.0/00.0.0.0/03ACC 查看详情

iptables(代码片段)

iptables基本配置实例拒绝特定IP到本机的所有访问#iptables-AINPUT-s192.168.7.203-jREJECT#iptables-AINPUT-s192.168.7.0/24-jREJECT#iptables-IINPUT-s192.168.7.201,192.168.7.203-jACCEPT>注意,使用-I的话,添加的第2个IP会使用第1个规则编号。拒绝所有IP访 查看详情

iptables详解(代码片段)

 一. iptables概念详解参考:  iptables概念   https://www.cnblogs.com/metoy/p/4320813.html   https://blog.csdn.net/fuzhongfaya/article/details/820221811.组成  linux的防火墙由netfilter和iptables组成 查看详情

iptables设置用法(代码片段)

1.安装iptables防火墙怎么知道系统是否安装了iptables?执行一下iptables-V,如果现实版本信息那说明已经安装了。反之则需要安装,执行命令:yuminstalliptables在linux中设置防火墙,以CentOS为例,打开iptables的配置文件:vim/etc/sysconfig/i... 查看详情

iptables杂记(代码片段)

iptables扩展使用扩展参数放通80,和22端口[[email protected]~]#iptables-IINPUT-s10.201.106.0/24-d10.201.106.130-ptcp-mmultiport--dports22,80-jACCEPT[[email protected]~]#iptables-IOUTPUT-s10.201.106.130-d10. 查看详情

shcmd:iptables的(代码片段)

查看详情

iptables系列教程|iptables语法规则(代码片段)

iptables命令基本语法iptables[-ttable]command[链名][条件匹配][-j目标动作]以下是对iptables命令的拆分讲解:-ttable用来指明使用的表,有三种选项:filter,nat,mangle。若未指定,则默认使用filter表。command参数指定iptables对我们提交的规则... 查看详情