iptables

1.iptables包括四种表

filter表:包过滤

nat表:网络地址转换

mangle表:包重构(修改)

raw表:数据跟踪处理

2.链

filter表:INPUT ,FORWARD ,OUTPUT

nat表:PREROUTING ,OUTPUT ,POSTROUTING

mangle表:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

每一条链中可以有一 条或数条规则,规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。

3.数据流向

(1)数据包的目的地址是本机

系统将数据包送到Input链,若通过规则检查,则该包被发给相应的本地进程处理,若没有通过规则检查,系统会丢掉

PREROUTING-->INPUT

(2)目的地址不是本机

系统将数据包送往Forward链,若通过检查,则该包被发给相应的本地进程处理,若没有通过检查,系统将丢掉这个包

PREROUTING-->FORWARD-->POSTROUTING

(3)数据包是本地进程产生

系统将数据包送到Output链,若通过检查,该包被发到相应的本地进程处理,若没有通过,则丢掉

OUTPUT-->POSTROUTING

4.使用方法

iptables [-t TABLE] COMMAND CHAIN [CRETRIA] -j ACTION

-t: filter,nat等
COMMAND:对链或链中的规则进行管理
-A 追加一条规则
-I 插入一条规则
-R 替换
-D 删除
-P 设置链的默认规则
CHAIN:
-N 新建一个自定义链
-X 删除一个自定义链
-F 清空指定链
-P 设定链的默认策略
-Z 置零(每条规则,包括默认策略都有两个计数器,一个是被本规则匹配到的所有数据包的个数,另一个是被本规则匹配到的大小之和)
ACTION:
DROP   悄悄丢弃
REJECT 明示拒绝
ACCEPT 接受
 
iptables -L #查看

5.配置

服务脚本:/etc/rc.d/init.d/iptables

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

规则保存的位置:/etc/sysconfig/iptables

注意:在修改iptables后

先执行/etc/rc.d/init.d/iptables save,再执行service iptables restart

iptables-restore 命令
开机的时候,它会自动加载/etc/sysconfig/iptabels

如果开机不能加载或者没有加载,而你想让一个自己写的配置文件(假设为iptables.2)手动生效的话:

iptables-restore < /etc/sysconfig/iptables.2

则完成了将iptables中定义的规则手动生效

6.匹配条件

(1)通用匹配:
-s:源地址
-d:目标地址
-p:icmp,tcp,udp
-i: -i eth0 一般用在INPUT和PREROUTING上,指定进来的网络接口
-o: -o eth0 一般在OUTPUT和POSTROUTING上,指定出去的网络接口
(2)扩展匹配:
-p tcp :
--sport PORT[-PORT2],指定单个端口或者多个连续端口,不能同时指定多个非连续端口
--dport PORT[-PORT2]
--tcp-flags  
TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)对于它,一般要跟两个参数:
1.检查的标志位
2.必须为1的标志位
--tcpflags syn,ack,fin,rst syn
表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做--syn
-p udp :
--sport
--dport
-p icmp:
--icmp-type   0:echo-reply   8:echo-request
(3)显示匹配
netfilter:扩展模块引入扩展,用于扩展匹配条件
-m state:用于实现连接的状态监测
( 什么是状态检测?对于整个TCP协议来讲,它是一个有连接的协议,三次握手中,第一次握手,我们就叫NEW连接,而从第二次握手以后的,ack都为1,这是正常的数据传输,和tcp的第二次第三次握手,叫做已建立的连接(ESTABLISHED),还有一种状态,比较诡异的,比如:SYN=1 ACK=1 RST=1,对于这种我们无法识别的,我们都称之为INVALID无法识别的。还有第四种,FTP这种古老的拥有的特征,每个端口都是独立的,21号和20号端口都是一去一回,他们之间是有关系的,这种关系我们称之为RELATED。)
-m multiport:表示启用多端口扩展  之后我们就可以启用比如 --dports 21,23,80

7.例子

(1)iptables -F   #清空filter的所有过滤条件:不加-t指定表,则默认是filter表
(2)iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT:接受所有的连接
(3)禁用172.17.21.1ping本机,ping别人是通的
    iptables -t filter -A INPUT -s 172.17.21.1 -p icmp --icmp-type 8 -j DROP
(4)删除
    先使用iptables -L -n --line-numbers查询行号
    iptables -t filter -D INPUT(那个链上的) 行号
(5)添加规则
   加入则可以远程ssh
   iptables -I INPUT 8 -p tcp --dport 22 -j ACCEPT  #表示将这条规则插入到第8行
   iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
(6)将192.168.198.136的ftp链接包丢掉
先尝试在192.168.198.136上进行登录服务器192.168.198.129
ftp 192.168.198.129,发现是可以登录的
然后在服务其上面配置过滤规则,注意ftp占用两个端口
iptables -I INPUT -s 192.168.198.136 -p tcp --dport 20 -j DROP
iptables -I INPUT -s 192.168.198.136 -p tcp --dport 21 -j DROP
(7)允许主机从eth0访问ssh服务
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
(8)设置链的默认规则
iptables -P INPUT (DROP|ACCEPT)
(9)修改链的第几条规则
iptables -R INPUT [行号] (后面接要修改的内容)
8.NAT链

NAT(Network Address Translation网络地址翻译)是出于某种特殊需要而对数据包的源ip地址、目的ip地址、源端口、目的端口进行改写的操作

为什么要有NAT?

(1)实现内网访问外网

(2)实现外网访问内网

(3)SNAT:改变转发数据包的源地址

(4)DNAT:改变转发数据包的目的地址

1.假如我要让公司192.168.10.0/24段的地址都通过linux服务器的eth0 :172.17.111.13上网
 iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.17.111.13
2.更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 1.2.3.4
3.更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4
iptables -t nat -A PREROUTING -d 192.168.1.0/24 -i eth1 -j DNAT --to 1.2.3.4

PREROUTING: 可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;

POSTROUTING:可以在这里定义进行 源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。

OUTPUT:定义对本地产生的数据包的目的NAT规则







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值