iptables是组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。在日常Linux运维工作中,经常会设置iptables防火墙规则,用来加固服务安全
Netfilter:
iptables:
包过滤的工作层次:
规则链:
规则表之间的顺序:
关闭firewalld防火墙:
[root@promote ~]# systemctl stop firewalld.service
[root@promote ~]# systemctl disable firewalld.service
安装iptables防火墙:
[root@promote ~]# yum -y install iptables iptables-services
设置iptables开机启动:
[root@promote ~]# systemctl start iptables.service
[root@promote ~]# systemctl enable iptables.service
[root@promote ~]# iptables -t filter -I INPUT -p icmp -j REJECT
数据包的常见控制类型:
添加新的规则:
[root@promote ~]# iptables -I INPUT -p udp -j ACCEPT ##允许UDP协议通过
[root@promote ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT ##允许TCP协议通过
[root@promote ~]# iptables -I INPUT 2 -p icmp -j ACCEPT ##在第二条当中允许TCP协议通过
查看规则列表:
不加-t直接 -F清空的是默认filter表的内容
[root@promote ~]# iptables -F
清空指定列表要加 -t 表名称
[root@promote ~]# iptables -t nat -F ##清空nat表
设置默认策略:
-P:为指定的链设置默认规则清空所有默认策略
要么是ACCEPT要么是DROP表的所有链
[root@promote ~]# iptables -filter -P FORWARD DROP
[root@promote ~]# iptables -P OUTPUT ACCEPT
通用匹配:
可直接使用,不依赖于其他条件或扩展
包括网络协议,IP地址,网络接口等条件
隐含匹配:
要求以特定的协议匹配作为前提
包括端口,TCP标记,ICMP类型等条件
显示匹配:
常见的通用匹配条件:
[root@promote ~]# iptables -I INPUT -p icmp -j DROP
INPUT链路中icmp协议直接被拒绝
[root@promote ~]# iptables -A FORWARD ! -p icmp -j ACCEPT
除了icmp协议以外其他的所有协议都放通
举例:
[root@promote ~]# iptables -A INPUT -i ens33 -s 192.168.0.0/16 -j DROP ##16.0网段私网地址全部被拒绝
[root@promote ~]# iptables -A INPUT -i ens33 -s 10.0.0.0/8 -j DROP ##10.0公网地址全部被拒绝
[root@promote ~]# iptables -A INPUT -i ens33 172.16.0.0/12 -j DROP ##172网段全部被丢弃
[root@promote ~]# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
##在转发链中源地址为4.0端口,协议为UDP协议,53端口允许通过;也就是DNS的服务功能允许通过;DNS端口号为53
[root@promote ~]# iptables -A INPUT -p tcp --dport 20:21 -j ##ACCEPTftp服务允许通过
常用的显示匹配条件
SNAT策略的典型应用环境:
SNAT策略主机共享单个公网IP地址接入Internet
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包源地址
前提条件:
实验环境:
推荐步骤:
防火墙主机配置:
1.先将作为防火墙的那台虚拟机配置内网的网关
2.另一个网卡配置作为外部主机的网关
3.修改完后,要重启网卡,再用命令查看网卡信息
4.配置数据转发功能;修改配置文件/etc/sysctl.conf
让他生效
5.清空防火墙规则,因为马上要自己配置
客户端配置:
1.配置内部虚拟机的IP地址为内部地址,配置完后要重启网卡
2. 这时Ping一下防火墙主机看是否ping通
外网主机配置:
1.安装httpd服务,并启用服务,这边服务之前已经安装好了,只需启用就可以了
2.关闭防火墙功能,和临时防护功能
3.绑定仅主机模式网卡
4.返回的内网主机在网站上访问来自外网的apache服务
5.返回外网主机查看日志文件,发现有内网访问服务的记录
6.防火墙主机配置防火墙规则:配置指定NAT表,在首部插入postrouting链,指向源地址192.168.100.10,指定外网出口ens37,将地址解析为12.0.0.1
7.在返回的外网主机查看日志文件发现,来访的地址发生变化
DNAT策略的典型应用环境:
在Internat中发布位于企业局域网内的服务器
DNAT策略的原理:
目标地址转换修改数据包的目标地址
1.在内部虚拟机中启动阿帕奇服务;在防火墙主机配置将目标地址12.0.0.1地址做转换,指定TCP协议,指向80端口
2.返回到外网主机发现可以访问来自内网的apache服务
将iptables规则保存到文件中进行备份:
iptables-save > /路径/名称
重新加载备份文件中的iptables规则:
iptables-restore < 备份文件的完整路径