• iptables规则组成


    一、四张表五条链

    组成部分:四张表 + 5条链(Hook point) + 规则

    四张表:filter nat mangle raw

    五条链:PREROUTING INPUT FORWARD OUTPUT POSTROUTING

    iptables table command chain Parameter & Xmatch target

    -t filter

        nat

    -A #追加

    -D #删除

    -L #列出

    -F #恢复默认

    -P #设置默认规则

    -I #插入

    -R #替换

    -n #只显示 IP 地址和端口号

    PREROUTING

    INPUT

    FORWARD

    OUTPUT

    POSTROUTING

    -p tcp #协议名称

    -s #发起的原地址

    -d #目标地址

    --sport #源端口

    --dport #目标端口

    --dports #目标端口段

    -m tcp #补充

         state

         multiport

    -j ACCEPT

       DROP

       REJECT

       DNAT

       SNAT

    1、对所有的地址开放本机的tcp(80、22、10-21)端口的访问

    iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
    
    iptables -t filter -I INPUT -p tcp --dport 22 -j ACCEPT
    
    iptables -t filter -I INPUT -p tcp --dport 10:21 -j ACCEPT

    2、允许对所有的地址开放本机的基于ICMP协议的数据包访问

    iptables -t filter -I INPUT -p icmp -j ACCEPT

    3、其他未被允许的端口则禁止访问

    iptables -t filter -A INPUT -j REJECT

    二、删除某条规则

    找到规则号:

    iptables -L INPUT --line-numbers
    
    iptables -L ufw-user-input --line-numbers

    结果如下:

    Chain ufw-user-input (1 references)
    num  target     prot opt source               destination         
    1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
    2    ACCEPT     udp  --  anywhere             anywhere             udp dpt:ssh
    3    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
    4    ACCEPT     udp  --  anywhere             anywhere             udp dpt:http
    5    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql
    6    ACCEPT     udp  --  anywhere             anywhere             udp dpt:mysql
    7    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:81
    8    ACCEPT     udp  --  anywhere             anywhere             udp dpt:81
    9    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:11211
    10   ACCEPT     udp  --  anywhere             anywhere             udp dpt:11211
    11   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:11212
    12   ACCEPT     udp  --  anywhere             anywhere             udp dpt:11212

    然后删除:

    iptables -D ufw-user-input 7 

    iptables
    -D ufw-user-input 8

    三、访问回环地址和访问外部网络

    iptables -I INPUT -i lo -j ACCEPT ;-i 对应的网卡
    
    iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    四、只允许某IP可以访问某端口

    iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 80 -j ACCEPT
    
    iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 22 -j ACCEPT
    
    iptables -t filter -I INPUT -p tcp -s 1.1.1.1 --dport 10:21 -j ACCEPT

    注意:进行iptables操作时要允许本机连接22端口,否则可能会失去对服务器控制。

  • 相关阅读:
    ubuntu16.04设置开机自启服务
    Flask架构管理及特点(重要)
    Django开发框架知识点
    Django进行数据迁移时,报错:(1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1")
    Java 网络编程(二) 两类传输协议:TCP UDP
    Java 网络编程(一) 网络基础知识
    .NET开源项目
    手写ArrayList、LinkedList
    命令查看java的class字节码文件
    dubbo总结
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/iptables-detail.html
Copyright © 2020-2023  润新知