iptables

systemctl stop firewalld
systemctl disable firewalld
yum -y install iptables-services
systemctl start iptables
systemctl enable iptables

iptables防火墙服务的组成

表:服务的功能分类

  • raw:状态跟踪
  • mangle:包标记
  • nat(地址转换):源ip/目标ip/端口
  • filter:过滤

链:服务处理对应方向的数据包

  • INPUT 处理进入防火墙的包
  • OUTPUT 处理从防火墙本机发出的包
  • FORWARD 处理转发的包
  • POSTROUTING 路由后处理
  • PREROUTING 路由前处理

规则链之间的顺序
入站:PREROUTING–>INPUT
出战:OUTPUT–>POSTROUTING
转发:PREROUTING–>FORWARD–>POSTROUTING

命令格式:

iptables [-t 表名] 选项 [链名] [条件] [-j 目标操作]

注意事项:

  • 可以不指定表,默认为filter表
  • 可以不指定链,默认为对应表的所有链
  • 如果没有匹配的规则,则使用防火墙的默认规则
  • 选项/链名/目标操作使用大写字母,其余为小写
] iptables -L | head -1 # 查看filter表的规则的第一行
Chain INPUT (policy ACCEPT) # 括号中内容表示该链默认规则为accept允许 
] iptables -nL   # -n以数字形式显示地址、端口等
] iptables -F  # 清空filter表的所有链的所有规则
] iptables -F FORWARD # 清空filter表的FORWARD链的所有规则
] iptables -L --line-numbers # 查看filter表的规则,并显示规则编号
] iptables -D INPUT 2 # 删除filter表中INPUT链编号为2的规则
] iptables -P INPUT DROP|ACCEPT   # 修改filter表的INPUT链的默认规则为DROP或者ACCEPT
] iptables -A INPUT -p tcp --dport 22 -j ACCEPT  # 在filter表的INPUT链尾插入规则,允许访问本机tcp22端口
] iptables -I INPUT -p icmp -j ACCEPT   # 在filter表的INPUT链的制定编号位置插入规则,默认为编号1,即链的开头
] iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT  # 在filter表的INPUT链编号2位置插入规则,允许访问本机的tcp80端口

基本的目标操作(-j)

  • ACCEPT 允许通过/放行
  • DROP 直接丢弃,不做任何回应
  • REJECT 拒绝通过
  • LOG 记录日志,然后传给下一条规则
  • DNAT 目标地址转换
  • SNAT 源地址转换

包过滤匹配规则

  • 顺序比对,匹配即停止(LOG除外)
  • 若无任何匹配,则按该链的默认策略处理

基本的匹配条件

  • 通用匹配
    1. 可直接使用,不依赖于其他条件或扩展
    2. 包括网络协议、IP地址、网络接口等条件
分类内容
协议匹配-p 协议名
地址匹配-s 源地址-d 目标地址
接口匹配-i 接收数据的网卡-o 发数据的网卡
  • 隐含匹配
    1. 要求以特定的协议匹配作为前提
    2. 包括端口、TCP标记、ICMP类型等条件
分类内容
端口匹配--sport 源端口--dport 目标端口
ICMP类型匹配--icmp-type icmp类型

附: 匹配条件前加 ! 表示取反

保存防火墙规则

cat /etc/sysconfig/iptables  # 防火墙规则文件
iptables-save > /etc/sysconfig/iptables  # 将防火墙当前配置保存到配置文件实现永久生效

filter表控制

防护类型

  • 主机型防火墙 (INPUT)
  • 网络型防火墙 (FORWARD)

作为网关/路由的必要条件:开启路由转发

echo 1 > /proc/sys/net/ipv4/ip_forward    # 开启路由转发(临时设置)
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf   # 写入内核配置文件(永久设置)
sysctl -p  # 从文件中读取values(应用配置文件),并输出到终端

配置网关

route add default gw 192.168.5.52   # 配置网关
route del default gw 192.168.5.52   # 删除网关
iptables -t filter -I FORWARD -s 192.168.4.53 -j DROP 
iptables -t filter -I FORWARD -s 192.168.4.0/24 -j DROP
iptables -t filter -I FORWARD -d 192.168.5.51 -p tcp --dport 80 -j DROP

ICMP类型匹配

  • ping请求包 echo-request
  • ping回应包 echo-reply

配置只允许本机ping别人,不允许别人ping本机

iptables -I INPUT -p icmp --icmp-type echo-request -j DROP

扩展匹配条件

-m 模块 --扩展条件

模块名用法
MAC地址匹配-m mac --mac-source MAC地址
多端口匹配-m multiport --sports 端口列表-m multiport --dports 端口列表
IP范围匹配-m iprange --src-range IP1-IP2-m iprange --dst-range IP1-IP2
user
limit
status

使用多端口匹配同时放行多个服务

iptables -A FORWARD -p tcp -m multiport --sports 22,80,8080,3306,6379 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dports 22,80,8080,3306,6379 -j ACCEPT
iptables -I FORWARD -p tcp --dport 80 -m iprange --src-range 192.168.4.53-192.168.4.60 -j DROP
iptables -I FORWARD -p icmp -m mac --mac-source 00:0c:29:c7:85:6b -j DROP

NAT地址转换

iptables -t nat -I POSTROUTING -s 192.168.4.0/24 -p tcp -j SNAT --to-source 192.168.5.52   
# NAT地址转换,使4.0内网网段ip转换为本机可以访问外网的5.52

地址伪装策略

  • 共享动态公网ip实现上网
  • 主要针对外网接口IP地址不固定的情况
  • 将SNAT改为MASQUERADE
  • 对于ADSL宽带拨号连接,网络接口写为ppp+
iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -o eth1 -j MASQUERADE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值