博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables
阅读量:4449 次
发布时间:2019-06-07

本文共 4751 字,大约阅读时间需要 15 分钟。

防火墙分类

主机防火墙:服务范围为当前主机
网络防火墙:服务范围为防火墙一侧的局域网
硬件防火墙:专用于软硬件结合的防火墙
软件防火墙:应用于通用硬件平台上的应用软件
四层防火墙:OSI下四层
七层防火墙:OSI上三层,主要看请求的资源

 

防火墙的具体功能:

    filter:过滤
    nat:地址转换
    mangle:报文修改,fwmark
    raw:关闭连接追踪                      

 执行的优先次序 raw-mangle-nat-filter

centos:
    基于netfilter:内核framework {框架}
    syscall:iptables工具,管理规则
    firewall,firewall-cmd 更加规范,更加易用
    报文流向:
    tables-->hook(钩子)对应 -CHAINS tables
    filter:INPUT OUTPUT FORWARD
    nat:PREROUTING ,INPUT,OUTPUT,POSTROUTING  Nat转换四层PREROUING POSTROUTING  七层 output input
    mangle:PREROUTING ,INPUT,OUTPUT,POSTROUTING,FORWARD
    raw:PREROUTING,OUTPUT
 iptables  -t {filter,nat。。。。} -nvL   

遵循的原则

*********规则的排序原则
*********越复杂的往前
*********访问越多的规则往前

格式:iptables [-t tables] SUBAOMMAND chain [num | rule-spec]
SUBCOMMAND 子命令
-A :attend  
-I :insert
-D:删除
-R: 替换
管理链
-N :新建
-X : 删除一条自定义的、空的,引用计数为 0 的。
-E: rename 只能改自定义链的且引用计数为0 的链。
-P:POLICY ,默认的规则
-F:FLUSH  清空
-Z:置零  ,计数器置零
        iptables每条规则每个链都有两个计数器:packets于bytes   pkts是报文个数  bytes是大小
匹配条件                                    

           通用匹配   [!]-s  --sip  --source-ip  源地址或源地址网络

                                                       [!]-d  --                     目标地址或目标网络
                                                          -i                      数据报文的流入接口(网卡)
                                                          -o                         数据报文的流出接口(网卡)
                                                         -p  tcp  udp  icmp
                                       扩展匹配   -m string  -m time -m multiport
                                       隐式扩展    -p tcp隐含 -m tcp  省略了 -m matchname
                                                             --sport   --dport  端口号连续可以连着写 例如137,138,139
                                                             可以写为137:139
                                                             --tcp-flags mask(要检查的标志位列表不写默认检查ACK,SYN,RST,
                                                             FIN) comp(标志为1的列表)
                                                              SYN(同步) ACK(确认) RST(复位) FIN(结束) URG(紧急) PSH(推送)
                                                               --syn       = ack syn rst fin    syn
                                                               -p udp    --sport  --dport
                                                               -p icmp(网路控制消息协议,网络通信状态探测,traceroute)
                                                               有两种类型 --icmp-type  8  表示echo-request ping的请求
                                                                  0   表示echo-replay  ping的响应
                                      显示扩展  需用 -m 指出matchname ex 多端口的匹配(隐式扩展只能实现单端口,或连续端口的匹配)
                                                                -m multiport
                                                                iptables -A INPUT -s 172.18.27.47 -p tcp -m multiport --dports 139,445,21:22 -j ACCEPT
                                                                -m iprange  将一段连续的多个地址进行设定
                                                                iptables -I INPUT 2 -m iprange --src(dst)-range 172.18.27.36-172.18.27.66 -j ACCEPT
                                                                -m set  用ipset工具将多个不连续的地址加入
                                                                yum -y install     ipset   
                                                                ipset list
                                                                安装此包时先将iptables备份清空
                                                                ipset create myset(列表) hash:ip(net网段)
                                                                ipset add myset 172.18.27.88
                                                                ipset add myset 172.18.87.9
                                                                iptables -I INPUT 2 -m set --match-set myset src -j ACCEPT
二进制 安装 /etc/mysql/my.cnf 优先级大于 /etc/my.cnf
如何使在命令行执行的iptables规则永久生效?
    /etc/init.d/iptables save
    iptables-save >>/etc/sysconfig/iptables                                                            -m string   后面加比较算法 --algo  bm|kmp
                                                                iptables -I INPUT -m string  --string “sex" --algo bm -j REJECT
                                                                TIME扩展
                                                                -m time --timestart  时间 --timestop 时间 --weekdays (monthdays)
                                                                iptables -I INPUT -m set --match-set myset src -m time --timestart 8:00:00 --timestop 14:00:00
                                                                --weekday Tue,Thu,Sat --kerneltz -j ACCEPT
                                                                -m connlimit   --connlimit-upto(小于)
                                                                               --connlimit-above(大于)
                                                                               每个客户端的最大访问连接并发数
                                                                -m limit 基于收发报文速率做匹配  (设定多久接受一个请求或发出一个报文)   令牌与令牌桶 算法
                                                                --limit 个数/(second|,minnute|hour|day) 间隔多久发一个报文
                                                                --limit-burst number(最多可以攒多少个,同时发)

连接追踪:

  将iP状态保存到内存空间中构建的一个表中(UNTRACKED,INVALID,SNAT,DNT,NEW,ESTABLISHED,RELATED(数据传输建立在与命令请求之上,就说这二者相关)),弊端 超过此连接数后的连接会被拒绝
UNTRACKED这是一种特殊状态,或者说并不是状态。它是管理员在raw表中,为连接设置NOTRACK规则后的状态。这样做,便于提高包过滤效率以及降低负载
                                                                ftp的RELATED生效要在内核中载入特顶的模块   在iptables配置文件的module中加入 nf_conntrack_ftp
                                                                ESTABLISHED是两次握手产生的
                                                                IP以hash的方式保存
                                                                允许已经建立连接的访问
                                                                iptables -A INPUT -m state --staet ESTABLISHED -j ACCEPT
                                                                已经追踪到的状态所存放文件/proc/net/nf_con'ntrack
                                                                能追踪到的最大连接数量/proc/sys/nf_conntrack_max
                                                                不同协议的连接追踪时长/proc/sys/net/netfilter:内核framework

SNAT与DNAT的连接通过连接追踪原理

        
stateful 当前连接与之前连接无任何相关性,每个连接都是被单独对待。
http协议本身无状态
routing protocol 路由协议  OSPF 开放式最短路径优先
routed protocol 被路由协议  ip
                                                            列出载入的模块    
                                                            lsmod 载入
                                                            modprobe 载入模块
                                forward链 允许内部与外部通信走此
                                
                                                    
                                                    规则管理:firewalld,firewalld-cmd
                                                                  iptables.service,将iptables-sava>/etc/sysconfig/iptables
                                                                     sysctl -w  ip_forward=1 临时生效
                                                                     add net 地址
                                                                     route add default gw +地址
                                        重点::::***********弄清规则的先后顺序,ex forward在前  postrouting在后
请描述如何配置一个linux上网网关?
         route add -net 192.168.0.0/24 gw 10.0.0.253 dev eth1                            
                                        -j SNAT   DNAT
                                        SNAT在postrouting   DNAT 在prerouting转换
    基于iptables将访问本机192.168.7.103:80的请求转发到192.168.7.102:80?    
     iptables -t NAT -A PREROUTING -d 192.169.7.103 -p tcp --dport 80 -j DNAT --to-destination 192.168.7.102:80
    linux服务器外网IP为192.168.7.104,内网IP为172.16.1.104,如何使用iptables实现公司员工网段为172.16.1.0/24通过linux访问连接外网?                                    
                                        
                            内网至外网用postrouting  sNAT
                            外网至内网用prerouting   DnAT
                            一般情况下是PREROUTING ==  DNAT
                                       POSTROUTING  == SNAT
                                        
网络中通信的都是上网ip,局域网ip不能直接被访问
 检查报文                                        
     tcp udp首部  源端口 目标端口
     ip首部          源IP   目标IP       
     mac首部       源mac  目标mac
处理动作
DROP 丢弃     drop会额外消耗服务器资源
REJECT 拒绝
ACCEPT
RETUREN
REDIRECT
SNET
DNET
MASQURADE  地址伪装
LOG
自定义链
                iptables -L  :list   默认反解为域名
                         -n          以数字显示主机地址和端口
                         -v  :verbose  -vv -vvv 详细程度
                         -x  :exactly 精准数据
                         --line-numbers
添加一个自定义链条
    iptables -N web_rule
    iptables -A web_rule -s 172.18.27.27 -j REJECT
    iptables -A web_rule -j RETURN
在主链中引用此自定义链
    iptables -I INPUT 2 -j web_rule
    删除自定义链时必须删除所有引用自定义链的规则而且要将链清空,才能删除
可以通过iptables-save > /tmp/iptbles.rule将iptables规则保存在文件中
    通过iptables-restore  < /tmp/iptables.rule 中读取
    
    
规则
                        
iptables [-t tables] SUBAOMMAND chain [num | rule-spec]
规则  A,D,I,R
链 -N,-X,-Z,-F,-E,-P
查看 -L,-n,-v ,-x,--line-numbers
网络防火墙 本身只是通过IP报文的首部信息 来筛选rule-spec 所以并不能匹配端口   ip报文信息   源IP 目标IP 上层协议
VPN经由隧道实现
vdftp
tcp 139 445
udp 137 138

转载于:https://www.cnblogs.com/encrypt/p/11387513.html

你可能感兴趣的文章
Android中获取TextView行数
查看>>
AngularJS 学习笔记值post传值
查看>>
maven+springMVC+mybatis+junit详细搭建过程
查看>>
iframe详细用法
查看>>
angularjs 使用angular-sortable-view实现拖拽效果(包括拖动完成后的方法使用)
查看>>
2015生命之旅---南京、南通、上海之行
查看>>
高精度练习之乘法(codevs_3117)
查看>>
小Z爱划水
查看>>
javascript中click和onclick的区别
查看>>
小程序BindTap快速连续点击页面跳转多次
查看>>
什么是架构?有几人说的清楚
查看>>
护士排班06
查看>>
大道至简:软件实践者的思想读后感
查看>>
Kiss MySQL goodbye for development and say hello to HSQLDB
查看>>
Python web多sitemap创建更新解决方案
查看>>
javase基础10
查看>>
Qt Font
查看>>
UILabel设置富文本格式显示
查看>>
[洛谷P3379]【模板】最近公共祖先(LCA)
查看>>
java程序——随机数求和
查看>>