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


















































posted @ 2020-07-28 10:15  Noleaf  阅读(127)  评论(0)    收藏  举报