zoukankan      html  css  js  c++  java
  • iptables 最终 第四章

    转发 ,NAT 功能

    Chain FORWARD
       开启网卡转发功能: /proc/sys/net/ipv4/ip_forward
    
            #使用sysctl 开启内核转发功能
            sysctl -w net.ipv4.ip_forward=1
    
    核心转发: /proc/sys/net/ipv4/ip_forward
                /etc/sysctl.conf
                net.ipv4.ip_forward = 1
     iptables :
        显示扩展 ,网络防火墙
        显示扩展 : multiport ,iprange ,string ,time ,connlimit ,limit ,state 
        
        state ;
            /proc/net/nf_conntrack 
            /proc/sys/net/nf_conntrack_max
            
            
    iptables :
        nat   :网络层+传输层 ,安全性 ,
        proxy : 代理,应用层
        
    nat :
            SNAT:源地址 
            DNAT:目标地址
        
        Nat表——三个链:
        PREROUTING   :DNAT   必须要在路由发生之前完成DNAT 
        POSTROUTING  :SNAT                      
        OUTPUT         : local 产生信息的nat 
        
        SNAT : 源地址转换
             iptables -t nat -A POSTROUTING -s 192.168.100.0/24 ! -d 192.168.100.0/24 -j SNAT --to-source 172.16.100.100
    
        DNAT : 目标地址转换                                                               
            iptables -t nat -A PREROUTING  -d 192.168.100.150 -p tcp --dport 80 -j DNAT  --to-destination 192.168.2.4:8080
    
    
    MASQUERADE: 
        地址伪装,算是snat中的一种特例,可以实现自动化的snat。        
        iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j MASQUERADE
        
            
    iptables的链接跟踪表最大容量为/proc/sys/net/ipv4/ip_conntrack_max,链接碰到各种状态的超时后就会从表中删除。
    
            所以解決方法一般有两个:
            (1) 加大 ip_conntrack_max 值
            vi /etc/sysctl.conf
            net.ipv4.ip_conntrack_max = 393216
            net.ipv4.netfilter.ip_conntrack_max = 393216
            (2): 降低 ip_conntrack timeout时间
            vi /etc/sysctl.conf
            net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300    
            net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
            net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
            net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
            
            #指定网卡限制
            iptables -A INPUT -i eth0 -m multiport -p tcp --dport 555,643,678,444 -j DROP
            
    
    
    tcp_wrapper :tcp 包装器

    简介
    TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服务进行安全检测并实现访问控制,凡是包含有libwrap.so库文件的的程序就可以受TCP_Wrappers的安全控制。它的主要功能就是控制谁可以访问,常见的程序有rpcbind、vsftpd、sshd,telnet。


    工作原理
    TCP_Wrappers有一个TCP的守护进程叫作tcpd。以ssh为例,每当有ssh的连接请求时,tcpd即会截获请求,先读取系统管理员所设置的访问控制文件,符合要求,则会把这次连接原封不动的转给真正的ssh进程,由ssh完成后续工作;如果这次连接发起的ip不符合访问控制文件中的设置,则会中断连接请求,拒绝提供ssh服务。


    TCP_Wrappers的使用
    TCP_Wrappers的使用主要是依靠两个配置文件/etc/hosts.allow, /etc/hosts.deny,用于拒绝和接受具有TCP_Wrappers控制全的程序,详细信息具体可以查看man帮助,这里我们就做简单的演示和使用(man 5 hosts_access, man 5 hosts_options)

    要说明的是当我们启动一个受控制的软件的时候,比如ssh,

    不过在刚开始的时候,/etc/hosts.allow,/etc/hosts.deny什么都没有添加,此时没有限制,是都可以连接的,现在我们来说如何设置,禁止和允许连接,配置文件格式遵循如下规则:

    daemon_list@host: client_list [:options :option…]
    daemon_list: 是程序的列表,可以是多个,是多个时,使用,隔开
    @host:可以没有,是我们的限制的网卡访问接口(自己的),设置允许或禁止他人从自己的那个网口进入。这一项不写,就代表全部。
    client_list:是访问者的地址,如果需要控制的用户较多,可以使用空格或,隔开,格式如下:

    基于IP地址: 192.168.10.1 192.168.1.
    基于主机名: www.magedu.com .magedu.com 较少用
    基于网络/掩码: 192.168.0.0/255.255.255.0
    基于net/prefixlen: 192.168.1.0/24(CentOS7)
    基于网络组(NIS 域): @mynetwork
    内置ACL: ALL, LOCAL, KNOWN, UNKNOWN,PARANOID
    ALL:所有主机
    LOCAL:本地主机
    KNOWN:主机名可解析成ip的
    UNKNOWN:主机名无法解析成IP的
    PARANOID:正向解析与反向解析不对应的主机


    [root@localhost ~]# ldd `which sshd` |grep libwrap libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f90a4723000)

    [root@nginx ~]# cat /etc/hosts.deny 
    #
    # hosts.deny    This file contains access rules which are used to
    #        deny connections to network services that either use
    #        the tcp_wrappers library or that have been
    #        started through a tcp_wrappers-enabled xinetd.
    #
    #        The rules in this file can also be set up in
    #        /etc/hosts.allow with a 'deny' option instead.
    #
    #        See 'man 5 hosts_options' and 'man 5 hosts_access'
    #        for information on rule syntax.
    #        See 'man tcpd' for information on tcp_wrappers
    #
    #
    sshd: 10.2.61.21
    EXCEPT: 除了
    hosts.allow
    vsftpd: 172.16. EXCEPT 10.2.61.0/255.255.255.0 EXCEPT 10.2.61.21     #双重否定策略  及允许  10.2.61.21 访问
    
    [:options]
    
    deny: 拒绝,主要用于hosts.allow文件中
    allow:允许,用于hosts.deny文件,实现allow的功能
    spawn: 启动额外应用程序:
    vsftpd: ALL :spawn /bin/echo `date` login attempt from %c to %s, %d >> /var/log/vsftpd.deny.log
    %c: client ip
    %s: server ip
    %d: daemon name
  • 相关阅读:
    go语言学习十七
    go语言学习十六
    go语言学习十五
    go语言学习十四
    go语言学习十三
    go语言学习十二
    go语言学习十一
    go 语言学习十
    go 语言学习九
    go 语言学习八
  • 原文地址:https://www.cnblogs.com/zy09/p/10412399.html
Copyright © 2011-2022 走看看