iptable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptable相关的知识,希望对你有一定的参考价值。

iptable 组成
四张表
1 raw 对IP包做状态跟踪
2 mangle 对IP包打标记
3 nat 做地址转换
4 filter(默认) 对IP包做过滤

五条链 匹配IP包传输方向
1 INPUT 进入防火墙本机的IP包
2 OUTPUT 从防火墙出去的IP包
3 FORWARD 经过防火墙的包
4 POSTROUTING 路由后处理
5 PREROUTING 路由前处理

格式
#iptables -t 表名 管理选项 链名 匹配条件 -j 处理动作

匹配即停止!没匹配到走默认规则(accept)

管理选项
-L 列出所有规则
#iptables -t raw -L
#iptables -t mangle -L
#iptables -t nat -L
#iptables -t filter -nL --line-numbers
-nL 以数字显示服务的端口 --line-numbers 加行号显示

-F 清空所有规则 -X清除自定义链
#iptables -t filter  -F
#service  iptables save #保存规则
#cat /etc/sysconfig/iptables
#service  iptables restart
#cat /etc/sysconfig/iptables

-P 定义默认策略
#iptables  -t  filter  -P  INPUT  DROP

-A 添加规则
-I 插入规则
#iptables -t filter -A INPUT -p icmp -j REJECT  #拒绝ping
#iptables -t filter -I INPUT 1 -p icmp -s 192.168.4.10 -j ACCEPT    #接受ping #在第一条前添加

-D 删除规则
#iptables -t filter -D INPUT 1  #删除第一条

处理动作
ACCEPT(允许) DROP(丢弃) REJECT(拒绝)
SNAT(源地址转换) DNAT(目标地址转换) REDIRECT(端口转换)

匹配条件
--dport 端口
-p 协议 --port
-s 源地址
-d 目标地址
#iptables -t filter -A INPUT -s 192.168.4.254 -p tcp --dport 22 -j ACCEPT
#iptables -t filter -A INPUT -p tcp --dport 80 -j DROP
#iptables -t filter -A INPUT -s 192.168.4.102 -p tcp --dport 22 -j REJECT

设置自己可以ping别人 但别人不能ping我
这里主要是学习一定思路 如何应对一些陌生问题
#iptables -t filter -A INPUT -p icmp --help #遇到不会help啊~一顿找
#iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP


网络型防火墙
内网------防火墙------外网
#iptables -t filter -F
#iptables -t filter -P FORWARD DROP
#iptables -t filter -nL
#iptables -t filter -A FORWARD -p tcp --dport 80 -j ACCEPT #仅允许进来访问80端口请求包(目标端口80),但进来了无法回去
#iptables -t filter -A FORWARD -p tcp --sport 80 -j ACCEPT #允许回应的包通过(源端口80)
#iptables -t filter -nL --line-numbers

#iptables -t filter -I FORWARD -s 192.168.4.50 -p tcp --dport 80 -j REJECT

#iptables -t filter -A FORWARD -p tcp --dport 22 -j ACCEPT  #允许目标端口是22的包通过
#iptables -t filter -A FORWARD -p tcp --sport 22 -j ACCEPT  #允许来源端口是22的包通过
#iptables -t filter -nL --line-numbers

#iptables -t filter -I FORWARD -s 192.168.4.0/24 -p tcp --dport 80 -j REJECT

iptables NAT表的使用 编写防火墙脚本
SNAT源地址转换 POSTROUTING---->私有网络共享一个公有IP地址上网
DNAT目标地址转换 PREROUTING---->发布私有网络内的服务器

#iptables -t nat -A POSTROUTING -o eth1 -s 192.168.4.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.2.253
##路由后处理 路由后修改 匹配 从eth1出去来源是4.0网段的 tcp/80 包 将源地址改为192.168.2.253
(SNAT --to-source 192.168.2.253可以简写为 MASQUERADE 自动识别)
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1234 -j DNAT --to-destination 192.168.4.55:22
##路由前处理 匹配 从eth1进来的端口为 tcp/1234的包 将目标地址改为192.168.4.55:22 再做路由处理

INPUT 主要用于主机防火墙,设置规则屏蔽处理进入本机的数据包

禁止 192.168.4.15 这个机器访问我本机的 web 服务
#iptables -t filter -A INPUT -s 192.168.4.15 -p tcp --dport 80 -j DROP

除了 192.168.4.12 这个机器 ,其他 192.168.4.0 网段的机器禁止 ping 我
#iptables -t filter -A INPUT ! -s 192.168.4.12 -j DROP

FORWARD 主要用于网络防火墙,设置规则处理穿过本机的数据包
禁止 192.168.4.11 的机器穿过防火墙访问后端的机器
#iptables -t filter -A FORWARD -s 192.168.4.11 -j DROP

nat 防火墙,需要打开内核 ip 转发 (sysctl -w net.ipv4.ip_forward=1)

POSTROUTING 源地址伪装
通过伪装 192.168.4.0 网段的机器上网,首先防火墙本机可以访问互联网
#iptables -t nat -A POSTROUTING -s 192.168.4.0 -j SNAT --to-source 防火墙外网ip地址

PERROUTING 目的地址转换
所有访问防火墙 10022 端口的请求都转发给后端的 192.168.4.15 的 22 端口
#iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to-destination 192.168.4.15:22

以上是关于iptable的主要内容,如果未能解决你的问题,请参考以下文章

CentOS中iptables防火墙 开放80端口方法

Iptables 网络安全

iptables防火墙

iptables基础知识

Linux中iptables防火墙指定端口范围

iptables防火墙