- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
linux防火墙——iptables
功能概述
封端口、封IP
实现NAT功能
共享上网
端口映射(端口转发),IP映射
种类
硬件
三层路由 H3C 华为 Cisco
防火墙 深信服
软件
iptables 写入到linux内核中 服务docker 在4层
firewalld centos7
nftables Centos8
ufw ubuntu
云防火墙
waf防火墙 针对协议 sql注入
名词解释
表(table)存放链的容器,防火墙最大概念
链(chain)存放规则的容器
规则(rule)允许或拒绝的规则
iptables执行过程
防火墙是层层过滤的,实际是按照排至规则的顺序从上到下进行过滤的
如果匹配成功规则,即明确表示是拒绝(DROP)还是接收(ACCEPT),数据包就不再向下匹配新的规则
一直没有匹配,则执行默认规则
防火墙的默认规则是所有规则都匹配完才会匹配的,默认全部接收,可以更改
注:拒绝的规则应该放在上面
表与链
简介
四表五链
四表:filter表 nat表 raw表 mangle表
五链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING
表的说明
1)filter表
实现防火墙功能:屏蔽或允许 ip、端口
真正负责系统防火墙功能的,是iptables的默认表,该表定义了三个链:
INPUT 过滤入方向数据
OUTPUT 过滤出方向数据
FORWARD 转发流经主机的数据包,和NAT关系很大
2)nat表
实现nat功能:共享上网(内网服务器上外网)、端口映射和IP映射,定义了三个链:
OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的目的地址
PREROUTING 在数据包到达防火墙时,进行路由判断之前执行的规则,作用是改变数据包的目的地址,目的端口等
POSTROUTING 在数据包离开防火墙时,进行路由判断之后执行的规则,作用是改变数据包的源地址,源端口
iptables的安装
# 开启firewalld服务的需要先关闭
systemctl disable --now firewalld
# iptables已经写入到内核中,但需要安装工具管理iptables
yum -y install iptables-services
rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables # 防火墙的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service
/usr/libexec/initscripts/legacy-actions/ip6tables
/usr/libexec/initscripts/legacy-actions/ip6tables/panic
/usr/libexec/initscripts/legacy-actions/ip6tables/save
/usr/libexec/initscripts/legacy-actions/iptables
/usr/libexec/initscripts/legacy-actions/iptables/panic
/usr/libexec/initscripts/legacy-actions/iptables/save
/usr/libexec/iptables
/usr/libexec/iptables/ip6tables.init
/usr/libexec/iptables/iptables.init
# 可通过systemctl管理iptables
systemctl enable --now iptables
# 但此时相关模块还未加载到内核中
lsmod|grep filter
lsmod|grep nat
# 加载到内核
cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable-filter
modprobe iptable-nat
modprobe ip-conntrack
modprobe ip-conntrack-ftp
modprobe ip-nat-ftp
modprobe ipt-state
EOF
[14:34:50 root@XksRain ~]#lsmod|egrep "filter|nat"
nf_nat_ftp 16384 0
nf_conntrack_ftp 20480 1 nf_nat_ftp
iptable_nat 16384 0
nf_nat 45056 2 nf_nat_ftp,iptable_nat
iptable_filter 16384 0
ip_tables 28672 2 iptable_filter,iptable_nat
nf_conntrack 172032 5 xt_conntrack,nf_nat,nf_nat_ftp,xt_state,nf_conntrack_ftp
libcrc32c 16384 4 nf_conntrack,nf_nat,nf_tables,xfs
iptables的使用
iptables的基本语法格式
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
说明:
表名、链名用于指定 iptables命令所操作的表和链
命令选项用于指定管理iptables规则的方式,比如:插入、增加、删除、查看等;
条件匹配用于指定对符合什么样 条件的数据包进行处理;
目标动作或跳转用于指定数据包的处理方式,比如允许通过、拒绝、丢弃、跳转(Jump)给其它链处理。
iptables命令的管理控制选项
-A 在指定链的末尾添加(append)一条新的规则
-D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除
-I 在指定链中插入(insert)一条新的规则,默认在第一行添加
-R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换
-L 列出(list)指定链中所有的规则进行查看
-E 重命名用户定义的链,不改变链本身
-F 清空(flush)
-N 新建(new-chain)一条用户自己定义的规则链
-X 删除指定表中用户自定义的规则链(delete-chain)
-P 设置指定链的默认策略(policy)
-Z 将所有表的所有链的字节和数据包计数器清零
-n 使用数字形式(numeric)显示输出结果
-v 查看规则表详细信息(verbose)的信息
-V 查看版本(version)
-h 获取帮助(help)
防火墙处理数据包的四种方式
ACCEPT 允许数据包通过
DROP 直接丢弃数据包,不给任何回应信息
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息。
# LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则
iptables防火墙规则的保存与恢复
iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载
使用命令iptables-save来保存规则。一般用
iptables-save > /etc/sysconfig/iptables
生成保存规则的文件 /etc/sysconfig/iptables,
也可以用
service iptables save
它能把规则自动保存在/etc/sysconfig/iptables中。
当计算机启动时,rc.d下的脚本将用命令iptables-restore调用这个文件,从而就自动恢复了规则。
fileter表实际案例
删除INPUT链的第一条规则
iptables -D INPUT 1
iptables防火墙常用的策略
# 1.拒绝进入防火墙的所有ICMP协议数据包
iptables -I INPUT -p icmp -j REJECT
# 2.允许防火墙转发除ICMP协议以外的所有数据包
iptables -A FORWARD -p ! icmp -j ACCEPT
# 说明:使用“!”可以将条件取反。
# 3.拒绝转发来自192.168.1.10主机的数据,允许转发来自192.168.0.0/24网段的数据
iptables -A FORWARD -s 192.168.1.11 -j REJECT
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
# 说明:注意要把拒绝的放在前面不然就不起作用了啊。
# 4.丢弃从外网接口(eth1)进入防火墙本机的源地址为私网地址的数据包
iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
# 5.只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。
iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
# 说明:这个用法比较适合对设备进行远程管理时使用,比如位于分公司中的SQL服务器需要被总公司的管理员管理时。
# 6.允许本机开放从TCP端口20-1024提供的应用服务。
iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT
# 7.允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。
iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT
# 8.禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机
iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
# 9.允许防火墙本机对外开放TCP端口20、21、25、110以及被动模式FTP端口1250-1280
iptables -A INPUT -p tcp -m multiport --dport 20,21,25,1,1250:1280 -j ACCEPT
# 说明:这里用“-m multiport –dport”来指定目的端口及范围
常用的 Linux iptables 规则
# 1. 删除所有现有规则
iptables -F
# 2. 设置默认的 chain 策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
售前咨询
售后咨询
备案咨询
二维码
TOP