iptables的应用
防火墙的名词解释
表 table 用来存放链的容器
链 chain 用来存放规则的容器
规则 policy 里面是具体的每一条规则
iptables工作流程
1. 防火墙规则匹配到第一行之后不会继续向下匹配;
2. 如果所有的规则都没有匹配到,那么会匹配到默认规则;
3. 防火墙的默认规则是所有的规则执行完才执行的;
4. 防火墙是层层过滤的,实际是按照配置规则的顺序从上到下,从前到后进行过滤的;
5. 匹配到拒绝也是匹配成功;
iptables表(tables)和链(chains)
一共有4表5链
重点掌握FILTER和NAT表
PREROUTING pre routing 数据来之前
POSTROUTING post routing 数据离开
FILTER表信息详细介绍
对于filter表的控制使我们实现防火墙功能的重要手段,特别是对INPUT链的控制。
NAT表信息详细介绍
iptables包处理简化流程图
案例:
1. 局域网上网共享,使用NATNAT的POETROUTING链。
2. 外部IP和端口映射为内部IP和端口,使用NAT的PREROUTING链。
3. 主机服务器防火墙,使用FILTER的INPUT链。
部署iptables
在安装之前首先要把系统中原本的firewalld关闭。
1.安装iptables
yum install -y iptables iptables-services
安装完成之后检查一下是否安装成功。
rpm -qa iptables iptables-services
rpm -ql iptables iptables-services
- 启动iptables
systemctl start iptables
systemctl enable iptables
注意:
如果iptables没有启动成功,有很大可能是系统中firewalld的服务没有关掉。
iptables规则及使用规则
查看当前防火墙的规则
iptables -nL
注意:
如果iptables关闭时候,请不要使用iptables -nL查看规则,防火墙会自动开启。
加载模块到内核
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
可以通过以下命令查看:
lsmod |grep "nat|filter|ipt"
清除默认规则
iptables -F <- 清除所有的规则,不会处理默认的规则
iptables -X <- 删除用户自定义的链
iptables -Z <- 链的计数器清零
添加规则
-A 将规则追加到最后面
-I 将规则插入到最前面
-p 指定协议
--dport 指定目标端口/IP地址
-j 指定动作
DROP 拒绝
ACCEPT 允许
-D 删除规则
--line-number 在规则前面显示标号
#关闭22端口
iptables -A INPUT -p tcp --dport 22 -j DROP
#只允许某个网段的22端口通过
iptables -A INPUT -p tcp ! -s 172.16.1.0/24 --dport 22 -j DROP
#只允许80和443端口通过
iptables -A INPUT -p tcp -m multiport ! --dport 80,443 -j DROP
#删除一个规则
iptables -nL --line-number <- 查看规则
<--
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports !22,80,443
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
-->
iptables -D INPUT 1 <- 删除规则
iptables规则备份及永久生效
保存规则,只是显示在屏幕
iptables-save
保存规则到配置文件中,永久生效
iptables-save > /etc/sysconfig/iptables
备份iptables规则
iptables-save > /tmp/ip.rules
还原iptables规则
iptables-restore < /tmp/ip.rules