iptables基本操作
防火墙
过滤数据包
默认策略:拒绝所有数据包从入口方向进入
安全和性能永远是成反比
selinux
/var/www/html/index.html
内核态
netfilter
用户态
iptables
firewalld
实验环境:
192.168.1.186 iptables-client
192.168.1.187 iptables-server
centos7:
#yum install iptables iptables-services iptables-devel -y
清空防火墙规则:
# iptables -F
# iptables -Z
# iptables -X
语法:
# iptables -t 表名 动作 链名 匹配条件 -j 目标动作
-t 表名 //默认不指定的情况下是filter表
表:
raw 数据包跟踪
mangle 标记数据包
nat 网络地址转换
filter 数据包过滤
读表顺序:按上面的顺序从上到下
动作:
-A 追加规则
例子
# iptables -t filter -A INPUT -p icmp -j REJECT
查看防火墙规则:
# iptables -nL --line-numbers -t nat -v
-L 列出规则
-n 以数字的形式显示协议和主机
--line 显示规则行号 --line-numbers的另一种写法
-t nat 可以跟不同的表
-v verbose 重点是数据包的统计(计数)信息
# iptables -nL INPUT 1 -v | awk '{print $2}'
1428
清零规则计数:
# iptables -Z
修改规则:
-R
# iptables --R INPUT 1 -p tcp -j REJECT
删除规则:
-D
# iptables -D INPUT 1
插入规则:
-I
# iptables -I INPUT -p tcp --dport 23 -j DROP
# iptables -I INPUT 2 -p tcp --dport 23 -j DROP
链:
PREROUTING 路由之前
INPUT 数据包流入
FORWARD 数据包经过
OUTPUT 数据包流出
POSTROUTING 路由之后
raw:
PREROUTING 路由之前
OUTPUT 数据包流出
mangle:
PREROUTING 路由之前
INPUT 数据包流入
FORWARD 数据包经过
OUTPUT 数据包流出
POSTROUTING 路由之后
nat:
PREROUTING 路由之前
INPUT 数据包流入
OUTPUT 数据包流出
POSTROUTING 路由之后
filter:
INPUT 数据包流入
FORWARD 数据包经过
OUTPUT 数据包流出
名字suibian 自定义链 保留规则 如果你不主动调用 不会生效
NAT
SNAT
DNAT
创建自定义链:
# iptables -N wing
添加规则到自定义链:
# iptables -A wing -p icmp -j DROP
关联自定义链:
# iptables -A INPUT -j wing
修改自定义链名称:
# iptables -E wing WING
删除自定义链:不能有关联 不能有规则
# iptables -X WING
删除自定义链有两个条件:
1. 自定义链中没有规则
2. 自定义链没有被引用
清空自定义链规则: iptables -t filter -F wing
删除链引用规则: iptables -t filter -D INPUT 1
删除自定义链: iptables -X wing
企业环境:
我们内网 互联网
高安全区域 防火墙 低安全区域
进来的数据包默认全部拒绝,只放行你想接收的包
修改默认策略:只能写DROP或者ACCEPT
# iptables -P INPUT DROP
查看规则:显示形式和-L不同
# iptables -S INPUT
#iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -p tcp --sport 80 -j ACCEPT
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
匹配条件:
协议:
-p tcp
-p udp
-p icmp
端口:必须和协议一起写
--dport 目标端口
--sport 源端口
# iptables -A INPUT -p tcp --dport 80 -j DROP
端口范围匹配:
--sport 源端口1:源端口2
--dport 目标端口1:目标端口2
多端口匹配:
-m multiport --dports 23,80,3306
-m multiport --sports 23,80,3306
# iptables -A INPUT -p tcp -m multiport --dports 23,80,3306 -j DROP
IP
-s 源ip1,源ip2,...
-d 目标ip
ip地址范围:
-m iprange --src-range 192.168.1.8-192.168.1.29
-m iprange --dst-range 192.168.1.8-192.168.1.29
# iptables -A INPUT -p tcp --dport 80 -m iprange --src-range 192.168.1.8-192.168.1.29 -j DROP
mac
#iptables -A INPUT -p tcp -m mac --mac-source 00:0c:29:22:eb:ff -j DROP
测试forward:
1.8-------->1.2--路由--3.2 ------->3.8
echo 1 > /proc/sys/net/ipv4/ip_forward
目标动作:
DROP
REJECT
ACCEPT
LOG
-j LOG
网关10.0.1.3 10.0.2.2
10.0.1.2 ---->10.0.1.3/10.0.2.2------->10.0.2.3
SNAT
修改源IP地址
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 202.106.18.8
DNAT
修改目标IP地址
# iptables -t nat -A PREROUTING -d 202.106.18.8 -j DNAT --to 192.168.1.8
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
dst-ip 192.168.1.9:80 192.168.1.8:3306
(协议头)数据头+数据
源ip 源mac 目标ip 目标mac
私有IP和共有IP不能直接通信
192.168.1.8 1.9 2.3----->公有IP202.106.18.8--|--->公网服务器
mangle:
# iptables -t mangle -A PREROUTING -s 192.168.1.9 -p tcp --dport 80 -j MARK --set-mark 50

浙公网安备 33010602011771号