zoukankan      html  css  js  c++  java
  • iptables基本语法和操作

    Iptables

    查看路由表:route n     netstat –rn

    开启转发: /proc/sys/net/ipv4/ip_forward


    规则链: INPUT, OUTPUT,FORWARD,PREROUTING ,POSTROUTING(路由选择后)   

    table(功能)filter natmangleraw

    流向:

    1. 到本机  PREROUTING->INPUT
    2. 转发    PREROUTING->FORWARD->POSTROUTING
    3. 从本机出发 OUTPUT->POSTROUTING

    raw:  PREROUTING,OUTPUT

    mangle:全部5

    natPREROUTING,OUTPUT,POSTROUTING

    filterINPUT,FORWARD,OUTPUT

    filter

    匹配条件:1netfilter 检查模块 2、扩展模块

    处理动作1ACCEPT 2DROP, REJECT(给对方返回信息)

    添加规则:

    添加格式:iptables [-t TABLE]  command  CHAIN  [CRETIRIA](匹配条件) -j  ACTION

    -t rawmangle natfilter(默认)

    Command 对链或链中的规则进行管理操作

    对链中规则:

    -A     附加一条规则add

    -I   n  插入一条     insert

    -R  n  修改第几条

    -D  n  删除第几条   

    对链:

    -N   新建一个自定义链

    -X   删除一个自定义空链

    -E   重命名一条自定义链   

    -F   清空指定链,如果不指定,则清空整个表中的所有链

    -P   设定链的默认策略

    -Z   置零(每条规则都有两个计数器,一个是被本规则匹配到的所有数据包的个数,另一个,被匹配到的数据包的大小之和)

    -L   查看 –v详细  -vv再详细  -vvv 再详细 –line-numbers显示行号

    -x 显示计数器的精确值 –n显示数字地址,不是名称地址

    配置文件: /etc/sysconfig/iptables-config

    服务脚本:/etc/init.d/iptables 不是服务,是让配置脚本生效的

    关机会消失所以  service iptables save

    Iptables 启动不了,先看是不是、服务脚本没有,没有的话就touch一个

     

    匹配条件:

    通用匹配:

    -s 原地址

    -d 目标地址 IP         NETWORK/MASK     ! 取反:例如: ip

    -p [ icmp|tcp|udp ]   

    -i  IN_INTERFACE      prerouting input forward   

    -o OUT_INTERFACE    postrouting output forward

    扩展匹配:

    隐式:-p tcp

    --sport PORT[-PORT2]

    --dport PROT[-PORT2]

    --tcp-flags  URG,,ACK,SYN,,FIN,RST,PSH  SYN   

    先检查SYN,ACK,RST,FIN, SYN必须为1

    --syn        相当于上一条

     -p udp    

    --sport

    --dport

      -p icmp

    --icmp-type    0:echo-reply  8:echo-request

         隐式的意思是:-p udp dport =-p udp m udp --dport

     

    1:拒绝172.16.0.0/16网段的ping自己

    iptables t filter –A INPUT –s 172.16.0.0/16 –p icmp –icmp-type 8 –j DORP

    2:拒绝除了172.16.0.0/16的主机访问自己的web server

     Iptables –A INPUT    -s ! 172.16.0.0/16 –d 172.16.100.1 –p tcp –-dport 80 –j DORP

    3:允许所有主机ssh登陆我的主机

     Iptables –A INPUT –s 0.0.0.0/0 –d 172.16.100.1 –p tcp --dport 22 –j ACCEPT   

     Iptables –A OUTPUT –s 172.16.100.1 –d 0.0.0.0/0 –p tcp –-sport 22 –j ACCEPT

     Iptables –t filter –P INPUT DORP

     Iptables –t filter –P OUTPUT DORP

    4:允许别人ping自己,但是自己不能ping别人

     Iptables –A INPUT –d 172.16.100.1 –p icmp –-icmp-type 8 –j ACCEPT       

     Iptalbes –A OUTPUT –s 172.16.100.1 –p icmp -–icmp-type 0 –j ACCEPT

     

     

    显式:Rpm –ql iptables

    Netfilter扩展模块引入的扩展,用于匹配条件,通常需要额外专用选项来定义

    -m state:用于实现连接的状态监测

    --state 常用四种状态

    NEW,ESTABLISHED,RELATED(多连接如ftp,INVALID(非法的,无效的如)

    -m multiport

    --source-ports

    --destination-ports

    --ports

     

     

    -j TARGET

    ACCEPT

    DORP

    REDIRECT

    DNAT

    SNAT

    MASQUERADE    地址伪装

    LOG

     

     

     

    例如:允许外面主机建立ssh连接,不允许服务器主动向外发起连接

     Iptables –t filter –A INPUT –d 10.10.150.11 –p tcp --dport 22 –m state --state                     NEW,ESTABLISHED –j ACCEPT

    Iptables t filter A OUTPUT –s 10.10.150.1 –p tcp --sport 22 –m state --state

     ESTABLISHED –j ACCEPT

    例如: 放行web服务

    Iptables t filter A INPUT –d 10.10.150.11 –p tcp --dport 80 –m state --state                     NEW,ESTABLISHED –j ACCEPT

    Iptables t filter A OUTPUT –s 10.10.150.1 –p tcp --sport 80 –m state --state

     ESTABLISHED –j ACCEPT

    只要有请求进来我就允许出去

    Iptables A OUTPUT –s 10.10.150.11 –m state --state ESTABLESHED –j ACCEPT

     

    删除一条:iptables –t filter –D INPUT 1

     

    -

    2280端口的请求合成一个:

    Iptables I INPUT d 10.10.150.11 –p tcp –m multiport --destination-ports 22,80

    -m state --state NEW,ESTABLISHED –j ACCEPT

    关于作者:博主思想敏锐,涉猎甚广,英语学士,法律硕士,熟悉c,web,js,java, php,目前主要从事linux服务器运维及计算机硬件维护。
  • 相关阅读:
    针对 jQuery Gridly 控件显示多少列的问题。
    网上找的几款拖拽插件
    商品价格加价区间的实现(策略模式)
    【C#】GC和析构函数(Finalize 方法)
    C#微信开发之旅(一):前言
    Opserver配置Redis、SqlServer监控
    线程安全的方式引发事件
    使用SSL的IIS下WCF配置(CSDN手动迁移)
    由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)
    EF Code First(The model backing the '***' context has changed since the database was created.解决方法)(CSDN手动迁移)
  • 原文地址:https://www.cnblogs.com/Anwar/p/9746668.html
Copyright © 2011-2022 走看看