iptables应用

iptables:四表五链: 四表:raw:  prerouting    output    关闭nat表打开的连接追踪功能

filter:   input ,output ,forward :   包过滤

nat:  地址转换     prerouting,output,postrouting,

mangle:   防火墙达标功能,标记。 prerouting,input ,,forward,,output ,,,,postrouting,,,,...

五链:prerouting , input,,output,,forward,,postrouting,,,,,   自定义链。。。

iptables [-t table]  command  chain[-m  matchname[per-match-options]]  -j targetname [per-target-options]

-t 指定选择哪个表    iptables -t nat raw filter mangle

command:链管理

-N:new自定义一条新的规则链  

-X:删除链      删除的链自定义,应用技术是0,空链

-P:设置默认策略.                    默认策略有:ACCEPT,DROP,REJECT

-E:重命名自定义链。 

-F:清空指定链规则

-Z:制零;


规则管理:  

-A:添加规则;

-I:插入规则,可指明插入第几行。

-D:指明序列号删除规则;

-R:替换指定链上的指定规则。

-F:清空指定的规则链;


匹配条件:

-s:检查报文源地址是否符合此处指定范围;

-d:检查报文的目地地址。

-p:指定协议: tcp  icmp     udp

-i:--in-interface:数据报文流入接口,只应用于prerouting,,input,,,forward     规则链上。。

-o: 报文流出接口,应用于,forward, output, postrouting

示列:iptables  -A   INPUT  -i   ens192    -j    REJECT

         iptables -A     OUTPUT   -o    ens192  -j   REJECT


查看:

-L:列出指定链上的规则;

-n:以数字显示地址和端口号;

-v:显示详细信息:

-x:显示技术器结果精确值,,

--line-numbers: 显示规则的序列号。。


man   iptables-extensions  :查iptables 扩展帮助手册。


隐式扩展:   

--sport:匹配报文的源端口

--dport:匹配报文的目地端口,可连续的端口137:138

--tcp-flags  mask  comp: 匹配报文的tcp协议标志位:flags,are,syn,ack,fin...

--syn:  匹配tcp第一次握手。。


icmp-type  {type[lcode] | typename}

0/0 :echo  reply   回答;

8/0:  echo request:    请求。。。


显示扩展:

1,-m    multiport     以离散或连续的方式指定多端口;

iptables -I INPUT -d 192.168.0.8 -p tcp -m multiport --dport 21,22,80,3306 -j ACCEPT                 iptables -I OUTPUT -s 192.168.0.8 -p tcp -m multiport --sport 21,22,80,3306 -j ACCEPT

2, iprange,, 已连续的地址方式来指明多ip地址条件;

--src-range    源地址                                       --dst-range      目地地址

iptables -A INPUT -d 192.168.0.8 -p tcp --dport 80 -m iprange --src-range 192.168.0.100-192.168.0.105 -j ACCEPT

3,time    定义开始与结束时间

--timestart  :开始时间                            --timestop 结束时间。。                          --weekdays 1,2,3,5,周几。。。。             --mothdays   几号。。

--datestart   YYYY [-MM]年月日;;

iptables -R INPUT 1 -d 192.168.0.8 -p tcp -m iprange --src-range 192.168.0.1-192.168.0.254 -m time --timestart 8:00:00 --timestop 22:00:00 -j ACCEPT

4,   字符串匹配       只对明文协议编码生效

--algo   {bm|kmp}  ;   表示使用什么匹配算法。。。

--string  pattern ;      精确匹配字符串

--hex-string  pattern  ;       编码16进制格式

--from    offset   ;  从哪个位置开始

--to    offset :    从哪个位置结束

iptables  -I   OUTPUT  -s   192.168.0.67  -m string  --algo  kmp   --string   "gay"  -j    ACCEPT


5;  connlimit     链接数限制,单客户端最多链接数.。(检查三次握手第一次)

--connlimit-upto     上限小于等于之意 大于拒绝。。

--connlimit-above  :    大于拒绝。。

iptables -A INPUT -d 192.168.235.5 -p tcp --dport 3306 -m connlimit --connlimit-upto 1 -j ACCEPT

5。limit   报文发包限速

--limit  rate [ /second/| /minute| /hour | /day]        秒,分钟,小时,天

--limit-burst   number    一次最多发几个包。。

限制本机tcp服务接受新的请求速率:--syn,  -m  limit  

iptables -I INPUT -d 192.168.0.5 -p icmp -icmp-type 8 -m limit --limit-burst 5  --limit  20/minute  -j  ACCEPT                                                                                 一次最多发五个包         每分钟发20个


7.state   状态链接追踪。。  --state

NEW;  新建的连接请求;

ESTABLISHED: 已建立的连接请求

RELATE:相关联的连接。当前链接是个新请求,附属于某个以存在链接,,,。。用这个功能要开启连接追踪模块。 nf_conntrack_ftp        modprobe:装载模块    ,, lsmod:查看模块 。。。    modinfo:查单模块信息。。              自动装载模块文件:/etc/sysconfig/iptables-config

追踪的连接记录的文件:/proc/net/nf_conntrack

调整可记录连接数最大值:/proc/sys/net/nf_conntrack_max

超时时长:/proc/sys/net/netfilter/*timeout*

UNTRACKED;  来追踪的连接

iptables -R INPUT 2 -d 192.168.0.8 -p tcp -m state --state ESTABLISHED,RELATE -j ACCEPT

iptables -A INPUT -d 192.168.0.8 -p tcp -m multiport --dports 21,22,80,3306 -m state --state NEW -j ACCEPT                          新请求通过

iptables -I INPUT 3 -j REJECT    入站拒绝所有

iptables -R OUTPUT 1 -s 192.168.0.8 -p tcp -m state --state ESTABLISHED -j ACCEPT    出站建立以建立的连接出站。。。


处理动作: -j  targetname   [pri-target-option]           -j   LOG   定义日志

1.REJECT:  --REJECT-WITH     可以加以什么拒绝主机端口。。

2.LOG: --log-level                      默认日志保存在/var/log/messages

--log-prefix   :定义日志加前缀

iptables  -I   iNPUT  -d   192.168.235.5 -p tcp  --dport  22 -m state  --state NEW  -j   LOG   --log-prefix  "access   telnet"    日志前缀。。

3,自定义链要调用。。  iptables  -N  in_icmp_reles......

iptables -I  INPUT  2 -d 192.168.235.5  -p  icmp  -j   in_icmp_reles...。。

RETURN :返回调用者

保存:     iptables-save  >  路径

载入:  iptables-restore   <  路径

-n, --noflush:     不清空原有规则追加iptables 里。

-t,  --test: 仅分析生成规则集,但不提交    测试。。。


NAT  地址转换

nmtui:更改ip地址命令。。

/proc/sys/net/ipv4/ip_forward  为1打开核心转发。。  作用在主机内能转发不同网络地址。 命令更改:     sysctl   -w    net,ipv4.ip_forward=1      注: 打开核心转发。。。。

ifconfig   ens33  192.168.235.5 up   :更改IP地址。。

route  add  -net  192.168.235.0/24  gw  192.168.0.5   添加默认路由

route add  default   gw   192.168.235.2   添加网关。。。


snat  源地址转换。在postrouting上做,,代表客户端访问互联网。。节省IP地址

iptables -t  nat -A   POSTROUTING -s 192.168.1.0/24  -j SNAT  --to-source  192.168.0.6                                           -s指的是防火墙客户端访问的,源地址                       

--to-source: 指的是后端。。。服务端的ip地址

MASQUERADE伪装之意。。    用于动态地址转换。。


dnat:目标地址转换。PREROUTING上做。 负载均衡效果。。

iptables -t nat -A  PREROUTING -d 192.168.235.5 -p tcp --dprot 80 -j DNAT  --to-destination  192.168.1.6  

-d: 指自己的外网地址。。

--to-destination:内网主机地址。。   后边可加端口转换 --destination  192.168.1.6:8080


端口映射:

iptables -A  PREROUTING -t nat  -d  192.168.10.2 -p tcp  --dport 80  -j  REDIRECT  --to-ports  8080                       

REDIRECT:           改的方向。。。

你可能感兴趣的:(iptables应用)