iptables防火墙

一 概念介绍
1.四表五链

在这里插入图片描述 表, 链, 规则 三者为包含关系:表中存放的是链,链中存放的是规则

四表:优先级:filter<nat<mangle<raw
名称作用
filter表确定是否被放行该数据包(过滤);负责包过滤(默认)
NAT表修改数据包中的源、目标IP地址或端口;负责地址转发
mangle表为数据包设置标记;负责对数据包进行修改和追踪
raw表确定是否对该数据包进行状态跟踪;有限级最高,设置raw是一般是为了不在iptables做数据包的链接跟踪处理,提高性能
五链:
名称作用
INPUT处理入站数据包
OUTPUT处理出站数据包
FORWARD处理转发数据包
PREROUTING在进行路由选择前处理数据包
POSTROUTING在进行路由选择后处理数据包
链路顺序:
入站: PREROUTING→INPUT    路由选择前→入站
出站:OUTPUT→POSTROUTING   出站→路由选择后
转发:PREROUTING→FORWARD→POSTROUTIN  路由选择前→转发→路由选择后

不管是路由入站还是转发,都要选择路由选择前
不管是路由出站还是转发,都要选择路由选择后
二 iptables操作命令

1.防火墙

#查看防火墙的状态
systemctl status iptables.service
#停止防火墙
systemctl stop iptables.service    
#启动防火墙
systemctl start iptables.service
#重启防火墙
systemctl restart iptables.service
#重载防火墙等价于restart
systemctl reload iptables.service
#禁止开机启动防火墙
systemctl disable iptables.service
#开机启动防火墙
systemctl enable iptables.service

2.防火墙规则基本语法:

iptables [-t 表名] 选项&参数 [链名][匹配条件][-j 动作控制类型]

注意事项:
  不指定表名时,默认指filter表
  不指定链名时,默认指表内的所有链
  除非设置链的默认策略,否则必须指定匹配条件
  选项、链名、控制类型使用大写字母,其余均为小写

常见动作控制类型:

类型解析
ACCEPT允许通过
DROP直接丢弃,不给出任何回应
REJECT拒绝通过,必要时会给出提示
LOG记录日志信息,然后传给下一条规则继续匹配

选项参数列表:

选项参数介绍
-t指定表,默认filter
-A追加一条规则 -A 链名 [序号] 匹配条件 -j 动作
-I插入一条规则 -I 链名 [序号] 匹配条件 -j 动作;默认第一行(也可以自己指定序号)
-R修改规则 -R 链名 序号 匹配条件 -j 动作
-D删除指定规则 -D 链名 序号 (-s <IP地址> -j <目标>)
-P设置默认规则 -P 链名 动作(ACCEPT,DROP,REJECT,LOG)
-p指定协议 TCP,UDP,ICMP;
–sport指定源端口 ;
–dport指定目标端口
-L查看防火墙规则,后可以指定链
-F清空防火墙规则;也可以指定清空某一个表的所有规则
-v以更详细的方式显示规则信息
-n以数字形式显示,不被解析域名或端口服务;要和-L配合看
–line-numbers或–line显示规则编号;要和-L配合看
-s指定源IP地址
-d指定目标IP地址
-iinput 进入时指定网卡
-ooutput 流出时指定网卡
-m指定模块,没有指定模块,默认使用与-p选项同名的模块

2.使用案例:

  • 查看指定表的规则并展示规则序号
iptables -t filter -nL --line

对IP地址进行限制

  • 以追加形式(放在链的最下层)增加一条规则,使192.168.0.1 禁止访问
iptables -A INPUT -s 192.168.0.1 -j REJECT

  • 插入(使用-I 插入放入链的第一条)一条规则,允许192.168.0.1访问
iptables -I INPUT -s 192.168.0.1 -j ACCEPT
  • 修改规则,将filter表(默认可不指定)中INPUT链上序号为1的规则修改为限制192.168.0.1 不能访问
iptables -R INPUT 1 -s 192.168.0.1 -j DROP

对端口进行限制

  • 允许目标端口8000的 tcp 访问请求
iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

对网卡进行限制

  • 限制指定网卡eth1的访问流入
iptables -I INPUT -i eth1 -j DROP
  • 限制指定网卡eth1的访问流出
iptables -I OUTPUT -o eth1 -j DROP

删除规则

  • 使用链上序号删除规则:删除filter表 INPUT链上序号为2的规则
iptables -D INPUT 2
  • 删除指定规则条件的规则:和新建类似,之间把 -I 或 -A 改为 -D,匹配不上时给提示信息并不做任何操作
iptables -t filter -D INPUT -p tcp --dport 24 -j DROP

保存防火墙规则

service iptables save

保存防火墙规则到配置文件,否则重启就失效了

iptables-save > /etc/sysconfig/iptables

3.nat 表的常用操作(共享上网和端口映射)即:SNAT与DNAT

3.1. 共享上网:
	在与外界通信时需要是使用公网进行通信,
	局域网无法使用局域网IP与公网进行通信,
	所以需要在局域网通信是将源IP(请求自身的IP)
	替换为可以与公网进行通信的某个公网IP(SNAT)。
	**完成共享网卡的公网IP需要进行三步操作**
	1. 配置防火墙SNAT规则
	2. 开启内核转发功能(虚拟机):sysctl -p  设置:net.ipv4.ip_forward = 1
	3. 虚拟机的网关指向该防火墙: vi /etc/sysconfig/network-scripts/ifcfg-eth1  加上网关配置:GATEWAY=172.25.10.10  DNS1=223.5.5.5  #(网关地址和DNS解析地址)
	
	添加路由转发规则:给指定表nat的 POSTOUTING链(因为需要在出口处设置源地址转换) 添加 一条规则将 局域网: 192.168.10.0/24网段的请求 源地址替换为外部网卡(有公网IP)的地址:172.25.10.10
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 172.25.10.10
3.2 通常都是将某个公网IP的服务器作为入口,接受来自公网的请求信息,
在分发给局域网内部的各服务器进行处理,可以使用(DNAT)来进行端口映射,
将公网服务器的不同端口映射到不同局域网服务的的不同端口上。

给nat表 PREROUTING链(因为是在请求进入前),将目的IP为:172.25.10.10的80端口的tcp请求转发给内网服务器的 192.168.0.1的8000端口进行处理

iptables -t nat -A PREROUTING -d 172.25.10.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1:8000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值