iptables基本语法和操作
Posted anwar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables基本语法和操作相关的知识,希望对你有一定的参考价值。
Iptables
查看路由表:route –n netstat –rn
开启转发: /proc/sys/net/ipv4/ip_forward
规则链: INPUT, OUTPUT,FORWARD,PREROUTING ,POSTROUTING(路由选择后)
table(功能):filter 、nat、mangle、raw
流向:
- 到本机 PREROUTING->INPUT
- 转发 PREROUTING->FORWARD->POSTROUTING
- 从本机出发 OUTPUT->POSTROUTING
raw: PREROUTING,OUTPUT
mangle:全部5种
nat:PREROUTING,OUTPUT,POSTROUTING
filter:INPUT,FORWARD,OUTPUT
filter:
匹配条件:1、netfilter 检查模块 2、扩展模块
处理动作:1、ACCEPT 2、DROP, REJECT(给对方返回信息)
添加规则:
添加格式:iptables [-t TABLE] command CHAIN [CRETIRIA](匹配条件) -j ACTION
-t : raw、mangle 、nat、filter(默认)
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
-
对22和80端口的请求合成一个:
Iptables –I INPUT –d 10.10.150.11 –p tcp –m multiport --destination-ports 22,80
-m state --state NEW,ESTABLISHED –j ACCEPT
以上是关于iptables基本语法和操作的主要内容,如果未能解决你的问题,请参考以下文章