iptables的简单的介绍
1. 防火墙服务概念介绍
防火墙作用: 火灾(危险) 防火墙 人(安全)
外网 防火墙 内网
防火墙实现: 软件实现(firewalld iptables) 硬件实现(思科 华为 H3C 深信服)
PS: 中小企业网络防护(软件) 大型企业(硬件) 2-3s
防火墙应用: 应用在OSI7层 二层(MAC) 三层(IP) 四层(端口) 80 443
nginx+lua(WAF) --> 应用层
防火墙名词:
1) 什么是容器: 装东西 盛东西 的 器皿
防火墙服务容器 ---> 防火墙表 ---> 链信息 ---> 规则信息
2) 什么是规则: 安全策略
对客户端数据包信息进行过滤判断
只有符合规则流量可以放行或者阻止
当第一个规则没有匹配, 会继续匹配下一条规则
直到所有规则都没有匹配, 匹配默认规则
3) 什么是表: 不同规则信息分类到不同表中进行配置
filter: 主要实现防火墙流量过滤功能
nat : 主要实现防火墙端口或IP地址映射 10.0.0.1 --防火墙 --- 公网地址
mangle: 对数据包进行标记
raw : 对数据包标记进行取消
4) 什么是链: 对数据包做不同的处理
filter:
· INPUT: 对进入防火墙流量进行规则控制
· OUTPUT: 防火墙主机产生流量是否可以出去
· FORWARD: 经过流量进行控制 外网 --> 防火墙服务 --> 内网
2. 防火墙服务安装部署
yum install -y iptables-services
systemctl start iptables
外网 防火墙 内网
防火墙实现: 软件实现(firewalld iptables) 硬件实现(思科 华为 H3C 深信服)
PS: 中小企业网络防护(软件) 大型企业(硬件) 2-3s
防火墙应用: 应用在OSI7层 二层(MAC) 三层(IP) 四层(端口) 80 443
nginx+lua(WAF) --> 应用层
防火墙名词:
1) 什么是容器: 装东西 盛东西 的 器皿
防火墙服务容器 ---> 防火墙表 ---> 链信息 ---> 规则信息
2) 什么是规则: 安全策略
对客户端数据包信息进行过滤判断
只有符合规则流量可以放行或者阻止
当第一个规则没有匹配, 会继续匹配下一条规则
直到所有规则都没有匹配, 匹配默认规则
3) 什么是表: 不同规则信息分类到不同表中进行配置
filter: 主要实现防火墙流量过滤功能
nat : 主要实现防火墙端口或IP地址映射 10.0.0.1 --防火墙 --- 公网地址
mangle: 对数据包进行标记
raw : 对数据包标记进行取消
4) 什么是链: 对数据包做不同的处理
filter:
· INPUT: 对进入防火墙流量进行规则控制
· OUTPUT: 防火墙主机产生流量是否可以出去
· FORWARD: 经过流量进行控制 外网 --> 防火墙服务 --> 内网
2. 防火墙服务安装部署
yum install -y iptables-services
systemctl start iptables
3. 防火墙服务配置应用
查看默认配置信息:
iptables -L -n
-L list 列表显示表的链和规则信息
-n number 将部分信息以数字形式显示
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
将默认规则先清除
iptables -F --- 清除默认规则信息(filter表)
iptables -Z --- 清除计数器功能 (统计流量数据包个数 所有数据包字节数) 排错
iptables -X --- 删除用户自定义链 ???
Filter表配置方法:
1) 阻止用户访问远程服务22端口
INPUT链
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP(ACCEPT DROP* REJECT)
OUTPUT链:
iptables -A OUTPUT -d 10.0.0.1 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -d 172.16.1.0/24 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j DROP(ACCEPT DROP* REJECT)
2) 允许外网地址可以连接22端口(10.0.0.6)
iptables -I OUTPUT -o eth0 -d 10.0.0.6 -p tcp --sport 22 -j ACCEPT
3) 除了10.0.0.1地址可以访问80端口,其他主机都不能访问80端口
方法一:
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
方法二:
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
默认规则阻止
iptables -P INPUT DROP
方法三:
iptables -A INPUT ! -s 10.0.0.1 -p tcp --dport 80 -j DROP
4) 允许10.0.0.6用户访问防火墙服务 80 81 82 83端口
iptables -A INPUT -s 10.0.0.6 -p tcp --dport 80:83 -j ACCEPT
5) 允许10.0.0.6用户访问防火墙服务 80,443,8080端口
iptables -A INPUT -m multiport -s 10.0.0.6 -p tcp --dport 80,443,8080 -j ACCEPT
6) 删除规则信息
iptables -D INPUT 2
查看默认配置信息:
iptables -L -n
-L list 列表显示表的链和规则信息
-n number 将部分信息以数字形式显示
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
将默认规则先清除
iptables -F --- 清除默认规则信息(filter表)
iptables -Z --- 清除计数器功能 (统计流量数据包个数 所有数据包字节数) 排错
iptables -X --- 删除用户自定义链 ???
Filter表配置方法:
1) 阻止用户访问远程服务22端口
INPUT链
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP(ACCEPT DROP* REJECT)
OUTPUT链:
iptables -A OUTPUT -d 10.0.0.1 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -d 172.16.1.0/24 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j DROP(ACCEPT DROP* REJECT)
2) 允许外网地址可以连接22端口(10.0.0.6)
iptables -I OUTPUT -o eth0 -d 10.0.0.6 -p tcp --sport 22 -j ACCEPT
3) 除了10.0.0.1地址可以访问80端口,其他主机都不能访问80端口
方法一:
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
方法二:
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 80 -j ACCEPT
默认规则阻止
iptables -P INPUT DROP
方法三:
iptables -A INPUT ! -s 10.0.0.1 -p tcp --dport 80 -j DROP
4) 允许10.0.0.6用户访问防火墙服务 80 81 82 83端口
iptables -A INPUT -s 10.0.0.6 -p tcp --dport 80:83 -j ACCEPT
5) 允许10.0.0.6用户访问防火墙服务 80,443,8080端口
iptables -A INPUT -m multiport -s 10.0.0.6 -p tcp --dport 80,443,8080 -j ACCEPT
6) 删除规则信息
iptables -D INPUT 2
7) 实现禁ping功能
其他主机 --- 禁止访问防火墙服务器
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP
禁止防火墙主机 --> 其他主机
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP
icmp 0: 回显应答(Ping应答)
icmp 8: 回显请求(Ping请求)
总结禁ping
iptables -A INPUT -m icmp -p icmp --icmp-type any -j DROP
问题: 还回接口(逻辑接口) loopback
iptables -I INPUT -i lo -m icmp -p icmp --icmp-type any -j ACCEPT
8) 实现网络流量数据包限速
-m limit --- 使用限速功能(数据包发送频率)
--limit n/{second/minute/hour}: --- 限制每秒钟/每分钟/每小时产生多少个数据包
--limit-burst [n] --- 定义限制数据包一个标准
iptables -I INPUT -s 10.0.0.6 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
iptables -A INPUT -m icmp -p icmp --icmp-type any -j DROP
NAT表配置方法:
HTTPS:
openvpn
L2TP
0X: iptables命令参数信息
-A 链信息 : 在指定链上可以添加规则
-I 链信息 : 在指定链上可以插入规则
-I 链信息 编号 : 自定插入到第几个规则之上
-p 协议信息 : 指定过滤处理数据协议信息(tcp udp icmp)
--dport 端口: 指定访问目标端口号码
--sport 端口: 指定访问源端口号码
-s 源IP地址 : 访问源IP地址信息
-d 目标IP地址 : 访问目标IP地址信息
-i 接口 : 流量流入的接口信息
-o 接口 : 流量流出的接口信息
其他主机 --- 禁止访问防火墙服务器
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A OUTPUT -p icmp --icmp-type 0 -j DROP
禁止防火墙主机 --> 其他主机
iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j DROP
icmp 0: 回显应答(Ping应答)
icmp 8: 回显请求(Ping请求)
总结禁ping
iptables -A INPUT -m icmp -p icmp --icmp-type any -j DROP
问题: 还回接口(逻辑接口) loopback
iptables -I INPUT -i lo -m icmp -p icmp --icmp-type any -j ACCEPT
8) 实现网络流量数据包限速
-m limit --- 使用限速功能(数据包发送频率)
--limit n/{second/minute/hour}: --- 限制每秒钟/每分钟/每小时产生多少个数据包
--limit-burst [n] --- 定义限制数据包一个标准
iptables -I INPUT -s 10.0.0.6 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
iptables -A INPUT -m icmp -p icmp --icmp-type any -j DROP
NAT表配置方法:
HTTPS:
openvpn
L2TP
0X: iptables命令参数信息
-A 链信息 : 在指定链上可以添加规则
-I 链信息 : 在指定链上可以插入规则
-I 链信息 编号 : 自定插入到第几个规则之上
-p 协议信息 : 指定过滤处理数据协议信息(tcp udp icmp)
--dport 端口: 指定访问目标端口号码
--sport 端口: 指定访问源端口号码
-s 源IP地址 : 访问源IP地址信息
-d 目标IP地址 : 访问目标IP地址信息
-i 接口 : 流量流入的接口信息
-o 接口 : 流量流出的接口信息
-j 动作信息 : 指定需要对匹配数据包执行什么动作
-F : 清除默认规则信息(filter表)
-Z : 清除计数器功能 (统计流量数据包个数 所有数据包字节数) 排错
-X : 删除用户自定义链 ???
--line-number --- 显示规则编号
-F : 清除默认规则信息(filter表)
-Z : 清除计数器功能 (统计流量数据包个数 所有数据包字节数) 排错
-X : 删除用户自定义链 ???
--line-number --- 显示规则编号