1. 安装iptables
#检查是否安装了iptables
service iptables status
#安装iptables
yum install -y iptables
#安装iptables-services
yum install iptables-services
使用了iptables之后,记得把系统自带得
firewalld
给禁用掉
# 停止firewalld服务
systemctl stop firewalld
# 禁用firewalld服务
systemctl mask firewalld
1.1 规则
iptables会包含多个Rules(一个条件和一个目标值)
如果满足条件,就执行规则中得目标值。
如果不满足条件,就判断下一条Rules。
目标值
iptables支持下列目标值
- ACCEPT – 允许数据包
- DROP – 丢弃包
- QUEUE – 数据包移交到用户空间
- RETURN – 停止执行当前链中的后续Rules
1.2 规则表
规则表之间的优先顺序:Raw—>mangle—>nat—>filter
filter
表,三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 内核模块:iptables_filter.Nat
表,三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口) 内核模块:iptable_natMangle
表,五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型、TTL、并且可以配置路由实现QOS内核模块:iptable_mangle(别看这个表这么麻烦,咱们设置策略时几乎都不会用到它)Raw
表,两个链:OUTPUT、PREROUTING
作用:决定数据包是否被状态跟踪机制处理 内核模块:iptable_raw
2. 基本命令
# 查看iptables现有规则
iptables -nvL
# 开放22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 封停一个IP,使用下面这条命令
iptables -I INPUT -s 106.54.212.96 -j DROP
# 查看mangle/nat/raw 表
iptables -t mangle/nat/raw --list
3. 高级功能
添加规则
iptables -t 表名 -A INPUT/OUTPUT -p 协议 -d 目标ip --dport 目标端口 -j 动作
-A
添加规则到尾部-I
插入规则-D
删除规则
3.1 目标地址转换(DNAT)
访问 192.168.1.101:8080端口,转换到访问 192.168.1.102:80 端口
iptables -t nat -A OUTPUT -p tcp -d 192.168.1.101 --dport 8080 -j DNAT --to-destination 192.168.1.102:80
4. 常用基本设置
#!/bin/sh
#允许所有
iptables -P INPUT ACCEPT
#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X
#所有计数器归0
iptables -Z
iptables -A INPUT -i lo -j ACCEPT
#开放22,21,80,443端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允许接受本机请求之后的返回数据 RELATED,是为FTP设置的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丢弃
iptables -P INPUT DROP
#所有出站一律接收
iptables -P OUTPUT ACCEPT
#所有转发一律丢弃
iptables -P FORWARD DROP
#保存设置
service iptables save
#重启iptables
systemctl restart iptables