iptables-nat与tcp_wrapper访问控制

防火墙-NAT

  • NAT地址转换

    • 工作在网络层和传输层,实现地址重写
    • 作用:
      • 隐藏本地网路中主机地址
      • 节约IP地址的使用
  • 分类

    • SNAT:只是修改请求报文的源地址,一般用于代理内网中的客户机访问外网
    • DNAT:只是修改请求报文的目标地址,一般用于代理服务端接收客户请求
  • iptables中的nat表用于实现nat功能

  • NAT表的三个链:

    • PREROUTING (DNAT实现的位置)
    • OUTPUT
    • POSTROTING (SNAT实现的位置)
  • SNAT配置

    image-20191110200101920

    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.20.254
    #本机作为网关,配置SNAT代理内网主机访问外网
    #192.168.10.0/24 匹配到需要代理的内网网段
    #-j SNAT --to-source 192.168.20.254 将源地址替换为指定的外网IP
    #-t nat -A POSTROUTING 源地址替换需要在nat表中的POSTROUTING链上执行
    #SNAT可以指定单个ip作为替换,也可以是多个ip,但必须给定作为源地址替换的ip

    若外网IP为动态获取可以使用MASQUERADE地址伪装策略

    image-20191110202306474

    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
    #自动获取当前ip地址来做NAT
  • DNAT配置

    image-20191110201126640

    iptables -t nat -A PREROUTING -d 192.168.20.254 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.120:8081
    #本机作为网络防火墙,代理内网服务器接收用户请求并转发
    #-d 192.168.20.254 -p tcp --dport 80  匹配访问192.168.20.254的80端口的请求
    #-j DNAT --to-destination 192.168.10.120:8081 将匹配到的请求转发给192.168.120的8081端口
    

TCP_WRAPPER

  • 是tcp的包装器,基于tcp协议开发,提供服务的应用程序,属于访问控制工具,在用户请求的报文必经的路上,设置访问控制,指定允许或拒绝某些主机
  • 和netfilter不一样,属于基于库调用实现功能

image-20191110202828637

  • 判断程序是否支持tcp_wrapper,若支持则装载libwrap模块

    image-20191110203308345

    image-20191110203418571

  • tcp_wradder访问控制文件

    • /etc/hosts.allow #白名单
    • /etc/hosts.deny #黑名单
  • 访问控制流程

    1. 接收到客户端请求后检查请求的服务是否支持tcp_wrapper
    2. 若支持则检查/etc/hosts.allow文件中的规则,判断是否有匹配项,匹配则按照设定允许或拒绝,默认为允许
    3. 不匹配时检查/etc/hosts.deny是否有匹配项,匹配则按照设定允许或拒绝,默认为拒绝,无则允许访问
    4. 若/etc/hosts.allow与/etc/hosts.deny冲突时以/etc/hosts.allow文件为准
  • 配置

    image-20191110204419840

    image-20191110211231943

    vsftpd,sshd:192.168.20.,192.168.10.1,192.168.10.2 EXCEPT 192.168.20.1:deny
    #service:ip/hostname/domain:action
    #service 可以为单个或多个,使用逗号分割,ALL表示所有支持的服务
    #ip/hostname/domain 可以为多个ip、网段、完全域名
    #    网段支持格式如:192.168.10.的简短格式或全格式192.168.10.0/255.255.255.0也可以使用192.168.10.*匹配网段,
    #   ALL表示所有主机
    #   KNOWN表示所有可以解析的主机
    #   UNKNOWN表示所有无法解析的主机
    #   PARANOID表示正反解析不一致的主机
    #   EXCEPT选项指定例外项可以为单个或多个IP或网段
    #action  主要为allow允许和deny拒绝
    #/etc/hosts.allow默认为allow,/etc/hosts.deny默认拒绝

    使用192.168.10.1主机的测试登录sshd服务

    image-20191110211304397

猜你喜欢

转载自www.cnblogs.com/lastyear/p/11831891.html