iptables防火墙
iptables防火墙管理
防火墙的分类:
硬件,购买设备
软件,安装软件
iptables的功能:
强制访问指定站点
发布内网服务器nat/snat/dnat
智能型DNS
iptables的格式:
Iptables -t filter -A INPUT -p tcp --dport 23 -j REJECT
命令 4表 5链 数据描述 处理方式
4表:
filter 过滤(数据过,默认) INPUT/OUTPUT/FORWARD
nat 转换(地址转换) PREROUTING/POSTROUTING/OUTPUT
mangle 校正(数据包打标记) INPUT/OUTPUT/FORWARD/PREROUTING/POSTROUTING
raw
5链:
INPUT:接收,发送方不一定是你,但接收方一定是你
OUTPUT:发送,接收方不一定是你,但发送方一定是你
FORWARD:转发,接收方和发送方全都不是你
PREROUTING:路由前时,指代在决定去向前处理
POSTROUTING:路由后时,指代在决定去向后处理
外出的包:
1. 本地程序
2. 路由判断(决定包使用源地址,外出接口)
3. mangle表OUTPUT链(标记、生存时间、服务类型)
4. nat表OUTPUT链(对防火墙自己发出的包做DNAT)
5. filter表OUTPUT链(过滤)
6. mangle表POSTROUTING链(标记、生存时间、服务类型)
7. nat表POSTROUTING链(对数据包做SNAT)
8. 离开接口
9. 网络传输
进入的包:
1. 网络传输
2. 进入接口
3. mangle表PREROUTING链(标记、生存时间、服务类型)
4. nat表PREROUTING链(对数据包做DNAT)
5. 路由判断(决定包的去向,给自己的)
6. mangle表INPUT链(标记、生存时间、服务类型)
7. filter表INPUT链(过滤)
8. 交给本地程序处理
转发的包:
1. 网络传输
2. 进入接口
3. mangle表PREROUTING链(标记、生存时间、服务类型)
4. nat表PREROUTING链(对数据包做DNAT)
5. 路由判断(决定包的去向,发给别人)
6. mangle表FORWARD链(标记、生存时间、服务类型)
7. filter表FORWARD链(过滤)
8. mangle表POSTROUTING链(标记、生存时间、服务类型)
9. nat表POSTROUTING链(对数据包做SNAT)
10. 离开接口
11. 网络传输
走向:
不考虑链 mangle>nat>filter
不考虑表 PREROUTING>INPUT>(FORWARD)>OUTPUT>POSTROUTING
firewalld替换iptables
# systemctl stop firewalld
# systemctl disable firewalld
# yum -y install iptables*
# systemctl start iptables
# systemctl enable iptables
iptables命令格式:
iptables 表 链 描述 处理方式
Chain INPUT (policy ACCEPT 359packets,28671bytes)
链的名称 默认规则 数据流量
Pkts bytes in Out
数据包数 数据大小 入口网卡 出口网卡
Target prot opt source destination
处理方式 协议 选项 来源 目的 数据描述
iptables -L INPUT --lin 显示INPUT链序号
iptables -L --lin 显示规则序号
iptables-save >> /etc/sysconfig/iptables 保存规则
Iptables -A INPUT -p --dport 22:80 22到80端口
iptables参数:
-A 在所选择的链末尾添加规则
iptables -A INPUT -s 192.168.1.123 -p tcp --dport 22 -j ACCEPT
-R 替换规则
iptables -R INPUT 1 -s 192.168.0.123 -j DROP
-D 删除规则
iptables -D INPUT -p tcp --dport 80 -j DROP
iptables -D INPUT 3
-I 插入规则
iptables -I INPUT 3 -s 192.168.1.222 -j DROP
插入过程中如果没有指定编号,默认第一条
-L 查看规则 iptables -t filter -L INPUT
-X 删除非内建链 iptables -X birdteam
-F 清空规则 iptables -t nat -F OUTPUT
-Z 将计数器清空(包计数器、字节计数)iptables -Z
-N 新创建链(规则) iptables -N birdteam
-P 修改默认规则 iptables -P INPUT DROP
-E 自定义链改名 iptables -E birdteam net
选项:iptbles -L
-v 详细信息
-vx 精确显示信息
-n 显示端口
--line-numbers 显示规则序号
通用匹配:
-p 匹配协议,协议有tcp,udp,icmp,all
-s 匹配来源地址
iptables -A INPUT -s 192.168.1.123 -j ACCEPT
-d 匹配目的地址
-i 匹配包进入的接口 iptables -A INPUT -i ens33
-o 匹配包送出的接口OUTPUT/FORWARD /POSTROUTING
!p 取反
TCP的端口:
Sport 匹配来源端口
dport 匹配目的端口
tcp-flags 匹配TCP的封包标记SYN/ACK/FIN/RST/URG/PSH
iptables -A INPUT -p tcp --tcp-flags syn,ack,fin syn -j ACCEPT
简写iptables -A INPUT -p tcp --syn -j ACCEPT
syn
UDP的端口:
sport 匹配来源端口
dport 匹配目的端口
显示匹配(需要用-m来启用)
iptables -A INPUT -p tcp -m multiport --port 22,25 -j ACCEPT
multiport 不连续多端口匹配 --source-port
--destination-port
--port
state 匹配包的状态 --state
状态:
ESTABLISHED 已连接数据包
NEW 新数据包
RELATED 相关联数据包
INVALID 错误的数据包
应用实例:
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 23 -j ACCEPT