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

posted on 2018-10-06 09:35  Anwar¢  阅读(353)  评论(0编辑  收藏  举报