iptables的详细用法

怎么写规则
iptables

iptables [-t table] COMMND chain CRETIRIA -j ACTION
-t 不定表的话,默认filter
COMMADN  怎么对链进行管理 增加 删除 等
chain:指定链操作 
CRETIRIA:匹配规则 (源地址是什么,目标地址是什么)
-j ACTION: 说明匹配到的结果处理

iptables -t filter -s 172.16.0.0/16 -p udp --dport 53 -j DROP
到本机内部来的访问53号端口的都不允许
REJETCT比DROP更彻底,直接拒绝

iptables -L -n 显示iptables定义的规则链
iptables -t nat -L -n
iptables -L -n -v  可以查看计数器
COMMAND:命令的类
链管理命令
-P  #polocy  表示通策略,设定默认策略(门是是开的还是关的)
    iptables -P INPUT (DROP|ACCEPT) #如果本身是开启的,而改为关
    闭的,操作要小心(比如你的机房在美国,而你把SSH给拒绝了)
-F  #FLUSAH  清空规则链
    iptables -t nat -F PREROUTING  
    清空所有nat的进路由表规则链
-N  #new  新建用户自定义链
    iptables -n inbound_tcp_web
-X  #删除用户定义的空链,如果有规则删除不了,所以删除一个链之前需要把里
    面的规则清空了
-E  #用于重命名用户自定义的链
      iptables -E oldname newname
  -Z  #清空链,及链中规则的计数器
      iptables -L -n -v
       pkts  bytes    #两个计数器  ##看视频
      iptables -Z   清空这些计数器    
规则管理命令
-A   #atend 追加,规则的次序很关键,-A来追加是放在最后 
-I   #insert 插入,插入到num条不能超过总条数!!
     iptables -I num
-R   #replace 替换,替换或者修改某条规则
              iptables -R -s 172.16.0.0/16 -p udp --dport 53
     iptables -R 
-D   #delete 删除
     iptables -D INPUT num
查看命令
-L   #list    它有子选项,组合使用,如果不带自选项,很慢,需要解析地址
 -n  数字方式
 -v  verbos    详细信息 -v -vv -vvv
     iptables -L -n -vvv
 -x  exsicly   精确的值,没有经过单位换算的
 -line-number  显示行号
     iptables -L -n --line-number
####这些都是常用的,必须牢牢记住这些命令
对于TCP协议一共四种状态:
NEW          新发起的连接
ESTABLISHED  已经建立的连接
RELATED      相关联的连接
INVALID      无法识别的连接
--------------------------------------------------------------
匹配标准:
1.通用匹配:大家都可以用
-s   #做源地址匹配,可以取反,加上叹号!      也可有--source
     IP,NETWOER/NEMASK,0.0.0.0/0.0.0.0(匹配所有)
-d   #匹配目标地址     或--destnation
-p   #protocal 用于匹配协议
     -p [tcp|udp|icmp]    一般只定义这三个协议
-i   #inbound 流入接口,后面跟网卡 
     -i eth0      
-o   # outbond 流出接口      
     流入一般用在PRE Input FORW
     流出一般同在POST OUTPURT FORW 
2.扩展匹配:对于某种功能的扩展
     隐含扩展
-p   tcp
    --dport 目标端口 0-65535 
         可以使用21:23表示连续,(但是不能使用非连续的端口)
    --sport 源端口 0-65525
    --tcp-flags  SYN,ACK,FIN,PSH,RST,URG
                  检查的标志位 必须为1标志位 ,syn为1,其他为0
                  --tcp-flags syn,ack,fin,rst,syn
                  三次握手的第一次的数据包,这种匹配方式有一个简写--syn
-p   udp
    --dport    #目标端口
    --sport
    
-p   icmp
    --icmp-types
    ping的报文类型
       echo-request 8  #匹配PING出去的数据包,类型用8表示请求回显
       echo-reply 0    #别人响应数据包,类型用0表示
     显式扩展
-P   tcp -m mutiport --dports   
     #-m mutiport启动多端口扩展,这样可以根很多端口 (这样就可以使
     用多端口了,用,隔开)
      -p tcp -m mutiport --dports 21,23,80  
     #-m 启动模块
    
-j    # 指定action 匹配后对应的处理动作
           DROP      悄悄丢弃数据包,不返回拒绝信息
           REJIECT   明确丢弃数据包,返回拒绝信息,在网络上一般使用DROP
  ACCEPT    接受
  custom_chain   使用自定义的链
  DNAT   目标地址转换
  SNAT   源地址转换 
  MASQUERADE   源地址伪装
  REDIRECT   重定向,主要实现端口重定向
  MARK       在mangel表利用的,打标记
  RETUREN    返回,调用用户链后按链处理,处理接受后,返回到下一个内
             置链   
其实有数十个动作,这里只是常用的


状态检测:


对于TCP协议一共四种状态:
NEW          新发起的连接
ESTABLISHED  已经建立的连接
RELATED      相关联的连接

INVALID      无法识别的连接

----------------------------------------
假设一台主机只允许172.16.0.0访问ssh
到本机内部访问的最好定义在INPUT
从本机内部出去的最好定义在OUTPUT
iptables -t filter -A INPUT -s 172.16.0.0/16 172.16.100.1 -p tcp --dport 22 -j ACCEPT
iptables -L -n -v
iptables -t filter -A OUTPUT -s 172.16.100.1 -d 172.16.0.0/16 -p tcp 

在互联网上比较通用的是通策略,默认关闭
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
将来应用时,一定要保证远程链接是开起的
------------------------------------------------------------


模块开启
-m state --state

通过下面几个子命令来实现模块的控制管理:
connlimit  
帮你限定某一个特定的客户,可以发起的并发请求
对于服务器而言,比如WEB,有一个下载站,如果一个用户使用P2P或者多线程同时发起数十个连接,势必造成占用过多资源,conlimit可以限定这些链接数
[!] --connlimit-above n    
iptables -p tcp -syn -dport 23 -m connlimit --connlimit-above 2 -j REJECT

iprange    对源地址段进行限定

iptables -A FORWARD -m iprange --src-range 172.16.100.1-172.16.100.100 -dst-range 172.16.0.1-172.16.0.2 -p tcp --dport 80

limit   匹配一个限定的速率,令牌通机制,它不是用来限定带宽的,只是做速率匹配的
它可以通过burst 和 rete来限定某些特定应用的速率
#看视频
令牌通机制,收集空闲令牌
--limit rate 3/minutes   没分钟匹配3个数据包       
--limit-burst number       

tc 一个小工具,使用简单,可以实现流量控制


mac  匹配源mac地址,在互联网上匹配目标mac是没有意义的
--mac-source [!] adress


multiport    开启多端口机制,最多一次指15个
--soure-ports
--destination-ports
--ports
例子:
iptables -A FORWARD -p tcp -m multiport --destination-ports 22,25,80,110 -m iprange --src-range 172.16.0.1-172.14.100.254 -m state --state NEW,ESTABLISHED -j ACCEPT

stirng  根据某个字符串来限定
# string 匹配汉字能力有限,但是匹配英文字母,拼音很好用
--algo bm|kmp   使用哪种算法来匹配,必须选一个
   bm由Boyer-Moore开发    kmp由Knuth-Pratt-Morris
例子:只要有qq.com就不能访问
iptables -A FORWARD -m string --string "qq.com" --algo bm -j REJECT


time   指定起始时间和结束时间来限定  例如周一到周五可以上网 
--timestart value    HH:MM
--timestop value
--days listofdays
--datestart date
--datestop date
-m time --timestart


LOG   使用log可以记录日志,limit主要和log一起用
--log-level level
--log-prefix prefix  
给日志加一个前缀,这样可以在messages里更方便的查看特定的日志,例如给22
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 22 -m limit --limit 6/minute -j LOG --log-prefix "Iptables SSHD"

#一般我们使用limit来限定日志速率,这样可以减轻磁盘的压力

REJECT   拒绝理由
--reject-with type
The type given can be
 icmp-net-unreachable
 icmp-host-unreachable
 icmp-port-unreachable
 icmp-proto-unreachable
 icmp-net-prohibited
 icmp-host-prohibited ro
 icmp-amin-prohibited (*)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值