当前位置:   article > 正文

iptables_iptable 允许sip协议

iptable 允许sip协议

iptables

入门参考:http://www.zsythink.net/archives/1199/

四表五链(默认)

在这里插入图片描述

表(Table, 适配匹配的规则rule)

  • raw:PREROUTING, OUTPUT
  • mangle: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
  • nat: PREROUTING, OUTPUT, POSTROUTING( centos7中还有|NPUT, centos6中没有
  • filter: INPUT, FORWARD, OUTPUT (默认表)

链(Chain)

  • REROUTING:raw表, mangle表,nat表,用于目标地址转换(DNAT)进站进行的过滤
  • INPUT: mangle表, filter表,( centos7中还有nat表, centos6中没有),处理输入数据包,入站数据包处理
  • FORWARD: mangle表, filter表,处理转发数据包
  • OUTPUT:raw表 mangle表,nat表, filter表,处理输出数据包,出站数据包处理
  • POSTROUTING: mangle表,nat表,用于源地址转换(SNAT)出站进行的过滤。

动态开放端口适配

  • ftp协议 :modprobe nf_conntrack_ftp ports=21,2125,2135
  • sip协议:nf_conntrack_sip
  • tftp协议:nf_conntrack_tftp
  • 其他。。。

iptables命令

库支持:libiptclibiptext

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

动作

ACCEPPT:接受数据包。
REJECT:拒绝
DROP:直接丢弃数据包。不给任何回应信息,这时候客户端会感觉自己的请求沉入大海,等过了超时时间才会有反应。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。是SNAT的一种特殊形式,适用于动态的,临时会变的IP上(内网访问外网,如:LAN->WAN,则wan采用动态伪装)
LOG:日志记录,除了记录对数据包不做任何动作。

状态

NEW:主机连接目标主机,在目标主机上看到的第一个想要连接的包
ESTABLISHED:主机已与目标主机进行通信,判断标准只要目标主机回应了第一个包,就进入该状态。
RELATED:主机已与目标主机进行通信,目标主机发起新的链接方式,例如ftp
INVALID:无效的封包,例如数据破损的封包状态

官方说明

https://linux.die.net/man/8/iptables

iptables

-N 自定义链
    #iptables -t filter -N use_reject
    #iptables -E use_reject WEB
    #iptables -X WEB
-i 指定进入的网卡(PREROUTING,INPUT,FORWARD)
    #iptables -t filter -I INPUT -i eth2 -p icmp -j DROP
-o 指定出去的网卡(FORWARD,OUTPUT,POSTROUTING)
[!] -d 目标地址
    #iptables -I INPUT ! -d 192.168.0.230 -p tcp  --dport 80 -m connlimit --connlimit-above 2 -j DROP
[!] -s 源地址
-p #协议
    tcp	
        --dport 目标端口
        --sport 源端口
        --tcp-flags 匹配报文的tcp头的标志位
            {SYN,ACK,FIN,RST,URG,PSH} {..} 
        --syn 匹配tcp新建连接的请求报文,相当于使用"--tcp-flags SYN,RST,ACK,FIN  SYN"
        #iptables -t nat -I PREROUTING -d 192.168.0.172 -p tcp --dport 553 -m comment --comment "!mapping:rtsp" -j DNAT --to-destination 192.168.100.172:554

    udp
        --dpor  
        --sport
    icmp
        --icmp-type
                echo-request  或数字8
                echo-reply (响应的数据包)一般用0来表示
                其他参考icmp协议

-m	#模块
    tcp #tcp模块
        --source-port [!] port[:port]
        --destination-port [!] port[:port]
        --tcp-flags [!] mask comp
            第一个参数是我们应该检查的标志,写为逗号分隔列表,
            第二个参数是逗号分隔的标志列表,必须设置。
            标志是:SYN ACK FIN RST URG PSH ALL NONE。
        
    multiport	#指定多端口号
        --sport 匹配报文的源端口
        --dport 匹配报文的目标端口
        --ports 匹配源与目标端口
        #iptables -t filter -I -s 192.168.0.12 -p tcp -m multiport --sport 11 -j REJECT 

    iprange	匹配指定范围内的地址
        [!] --src-range from[-to]:指明连续的源IP地址范围;
        [!] --dst-range from[-to]:指明连续的目标IP地址范围;
        #iptables -I INPUT -d 192.168.184.142 -p tcp -m multiport --dports 22:23,80 -m iprange --src-range 192.168.184.1-192.168.184.150 -j ACCEPT

    state	状态检查
        --state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态

    string	字符串匹配,能够检测报文应用层中的字符串
        --algo bm|kmp  指定算法bm或kmp
        [!] --string pattern  指明字符串是什么
        #防止电子邮件欺骗
        #iptables -I INPUT -p tcp --dport 25 -m string --string "Subject" --algo bm -j DROP

    connlimit	连接数限制
        --comlimit-above #限定大连接个数
        #允许8080端口最大连接数为 30
        #iptables -I INPUT -p tcp --dport 8080 -m connlimit --connlimit-above 30 -j REJECT

    conntrack	
        --ctstate
    limit	限定匹配数据包的个数
        --limit 25/sec
        --limit-burst 50
        #响应请求的速率
        # iptables -A INPUT -d 192.168.184.142 -p icmp --icmp-type 0 -m limit --limit-burst 5 --limit 30/minute -j ACCEPT 
    recent	限制一段时间内的连接数

    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...]
        #iptables -I INPUT -d 192.168.184.142 -p tcp --dport 80 -m time --timestart 00:00 --timestop 23:59 -j REJECT

	comment #注释(最多256个字符)
        --comment ""
        #-m comment --comment "allow SSH to this host from anywhere"
    mac     #
        --mac-source [!] address 
        匹配的源MAC地址。它的形式必须是XX的:XX:XX:XX:XX:XX。需要注意的是,这恰恰使从以太网设备来并进入PREROUTING,FORWARD和INPUT链的包感。
        # iptables -A INPUT -s 192.168.100.172 -m mac --mac-source e0:50:8b:05:b9:6b -j DROP
        # iptables -A input_rule -s 192.168.100.172 -m mac ! --mac-source e0:50:8b:05:b9:6b -j DROP
    iprange
        --src-range
        #iptables -I INPUT -m iprange --src-range 192.168.1.23-192.168.1.63 -j ACCE
-j
   LOG
      --log-level 日志级别(0-7 man syslog)
      --log-prefix "" 日志记录

-n --line-numbers
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

一些使用命令

# 统计输出源端口5902的tcp流量
iptables -A OUTPUT -p tcp --sport 5902  
# 统计输出到目标地址192.168.0.55的tcp流量
iptables -A OUTPUT -p tcp -d 192.168.0.55
# 做网关使用将172.16.3.0网段的数据转发到enp1s0源地址修改为192.168.0.251(源地址转换)
iptables -t nat -A POSTROUTING -s 172.16.3.0/24 -o enp1s0 -j SNAT --to-source 192.168.0.251
# centos上的防火墙实现: 转发nat表输出到网卡enp1s0源地址为192.168.3.0网段,进行MASQUERED动态伪装(自动选择IP,可解决IP地址变化问题)
sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE -s 192.168.3.0/24
# 查看当前
iptables -nvL
# 查看表
iptables -t raw -nvL
iptables -t nat -nvL
iptables -t mangle -nvL
iptables -t filter -nvL
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

linux配置相关

# vim /etc/sysctl.conf
#使能IPv4转发
net.ipv4.ip_forward=1                      # 1表示开启 0表示关闭
  • 1
  • 2
  • 3

临时生效:

sysctl -w net.ipv4.ip_forward=1

当前存在的表

cat /proc/net/ip_tables_names
cat /proc/net/ip6_tables_names

  • luci-bwc 流量统计与图表展示
  • /proc/net/ip_conntrack 连接跟踪文件(老版本)
  • /proc/net/nf_conntrack 连接跟踪文件
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/816475
推荐阅读
相关标签
  

闽ICP备14008679号