iptables

作者: 国王12 | 来源:发表于2019-08-20 20:48 被阅读0次

    一、首先熟悉一些名词

    容器:瓶子,放东西的
    表(table): 存放链的容器
    链(chain): 存放规则的容器
    规则(policy): 准许ACCPT或拒绝DROP规则
    

    二、iptables执行过程

    1.防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
    2.匹配 表示 阻止还是通过,数据包就不再向下匹配新的规则 。
    3.如果规则中没有明确表明是阻止还是通过的,也就是没有匹配规则,向下进行匹配,直到匹配默认规则得到明  确的阻止还是通过。
    4.防火墙的默认规则是所有规则执行完才执行的。
    
    image.png

    三、四表五链

    表:
    filter(默认,防火墙功能,准许 拒绝)
    nat (nat功能:共享上网,端口映射)
    mangle
    raw
    

    四表五链流程:

    四、安装部署

    下载
    yum install -y iptables-services
    
    加载内核模块(临时生效,写入rc.local永久生效)
    modprobe ip_tables
    modprobe iptable_filter
    modprobe iptable_nat
    modprobe ip_conntrack
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp
    modprobe ipt_state
    
    lsmod | egrep 'ipt|nat|filter'
    
    systemctl start iptables.service
    systemctl enable iptables.service 
    

    五、常用命令-filter表

    1.查看规则

    查看默认表规则
    iptables -nL
    查看nat表规则
    iptables -t nat -nL
    

    2.清空规则

    iptables -F
    iptables -X
    iptables -Z
    -F,--flush   清除所有规则,不会处理默认的规则
    -X  删除用户自定义的链
    -Z  链的计数器清零(数据包计数器与数据包字节计数器)
    

    3.删除INPUT的第一条规则

    iptables -D INPUT 1
    依此类推
    

    3.配置规则

    3.1.IP相关

    1.禁止10.0.0.7访问22端口
    iptables -I INPUT -s 10.0.0.7 -p tcp --dport 22 -j DROP
    
    2.禁止172.16.1.0网段访问8080端口
    iptables -I INPUT -s 172.16.1.0/24 -p tcp --dport 8080 -j DROP
    
    3.只允许10.0.0.0网段访问(设置白名单)
    iptables -I input ! -s 10.0.0.0/24 -j DROP
    

    3.2.端口相关

    禁止用户访问1024-65535端口
    iptables -I INPUT -p tcp --dport 1024:65535 -j DROP
    
    禁止用户访问80端口和443端口
    iptables -I INPUT -p tcp -m multiport --dport 80,443 -j DROP
    

    3.3禁止被ping

    通过内核参数设置禁止被ping
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    sysctl -p
    
    通过防火墙设置禁止被ping
    iptables -I INPUT -p icmp--icmp-type 8 -j DROP
    

    3.4生产用法

    允许22端口接入
    iptables -I INPUT -p  tcp --dport 22 -j ACCEPT 
    
    流量进来出去走lo网卡
    iptables -A INPUT -i lo -j ACCEPT 
    iptables -A OUTPUT -o lo -j ACCEPT 
    
    允许80,443端口接入
    iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT 
    
    修改默认规则为拒绝
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    
    设置10.0.0.0网段为白名单
    iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
    

    六、常用命令-nat表

    1.共享上网

    把172.16.1.7转换为10.0.0.61访问外网
    iptables -t nat -A POSTROUTING  -s 172.16.1.7 -j SNAT --to-source  10.0.0.61
    
    把172.16.1.0网段转换为10.0.0.61访问外网
    iptables -t nat -A POSTROUTING  -s 172.16.1.0/24 -j SNAT --to-source  10.0.0.61
    
    开启转发规则
    echo 'net.ipv4.ip_forward = 1'  >> /etc/sysctl.conf 
    sysctl -p
    

    2.端口转发

    客户端访问10.0.0.61 9000端口 跳转至172.16.1.7 22端口
    iptables -t nat -A POSTROUTING  -d 10.0.0.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22
    
    注意查看是否配置了转发规则
    tail -1 /etc/sysctl.conf
    net.ipv4.ip_forward=1
    
    #注意:内网的服务器需要把网关设置为防火墙的IP
    

    3.IP转发

    添加临时IP10.0.0.62
    ip a a 10.0.0.62/24 dev eth0 lable eth0:0
    
    访问10.0.0.62,自动跳转至172.16.1.7
    iptables -t nat -A PREROUTING  -d 10.0.0.62   -j DNAT  --to-destination 172.16.1.7
    
    删除临时IP
    ip a del 10.0.0.62/24 dev eth0

    相关文章

      网友评论

          本文标题:iptables

          本文链接:https://www.haomeiwen.com/subject/isemsctx.html