1974 字
10 分钟
iptables 防火墙笔记
iptables
1 防火墙介绍
防火墙作为内部网与外部网之间的一种访问控制设备, 常常安装在内部网络和外部网络的边际上。防火墙具有很好的网络安全保护作用。入侵者必须首先穿越防火墙的安全防线,才能接触目标计算机。你可以将防火墙配置成许不同保护级别。高级别的保护可能会禁止一些服务,如视频流等,但至少这是你自己的保护选择。1.1 防火墙分类
①硬件防火墙②软件防火墙1.2 防火墙功能
①Internet防火墙可以防止Internet上的危险传播到网络内部;②能强化安全策略;③能有效记录Internet上的活动;2 iptables和Firewalls介绍
netfilter ----- iptables和Firewalls
firewalld跟iptables主要有以下区别:1 firewalls的默认规则是拒绝,需要时设置开启,iptables正好相反。2 firewalls可以动态修改单条规则,而且直接生效3 firewalls简单易用,即使不理解各种数据包规则,也可以实现大部分功能。4 想要真正学会防火墙规则,强烈推荐学习iptables。
firewall-config //触发图形化3 实验环境准备
三台虚拟机client:VM5 1.1.1.1 网关:2.2.2.2
出口路由/server:VM5 2.2.2.2 / VM6 3.3.3.3 route add -net 1.1.1.0/24 dev ens33 route add -net 4.4.4.0/24 dev ens36 如果你期间重启网络服务,默认删除添加的路由信息 /proc/sys/net/ipv4/ip_forward 路由转发功能有开启,就能访问
web:VM6 4.4.4.4 网关:3.3.3.3
关闭Firewalls和selinux4 iptables内容详解
• iptables不是一个单一的软件工具,而是一套C/S样式的软件组,它是由工作在用户空间的iptables和工作在内核空间的Netfilter模块组成,一般统称为Iptables。• 用户基于用户空间的iptables软件,来设定各种包过滤规则,借助于后端内核空间的Netfilter模块实现非常强大的防火墙功能,Netfilter实现的功能主要体现在数据包过滤、数据包重定向、网络地址转换等方面。• 默认情况下,iptables主要工作在0SI模型中的的2~4层,我们还可以通过重编内核,让iptables支持7层的数据包管理。4.1 五条链
PREROUTING 你找谁?我推荐你去找XXX- 数据包进行路由决策前应用的规则,一般用于改变数据包的目标地址,不让别人知道我找谁
INPUT 来了老弟- 数据包经过路由决策后,进入到本机处理时应用的规则,一般用于本机进程处理的数据包OUTPUT 走了老弟- 新建数据包经路由决策后,从本机输出时应用的规则,一般用于本机处理后的数据包FORWARD 来去匆匆- 数据包经过路由决策后,本机不做处理,仅仅是转发数据包时应用的规则
POSTROUTING 去哪?我给你指另一条路- 数据包作从本机出去前,对数据包应用的规则,一般用于更改数据包的源地址信息,不让给别人知道我是谁4.2 五张表
在netfilter的内存区域中,这五个表是security表、filter表、NAT表、mangle表和raw表,他们分别作用的对象是不一样的security表: 主要针对的是数据链路层的管理规则组合,只不过它是基于target(目标)来做操作的。☆filter表:是netfilter中最重要的表,也是默认的表,主要负责数据包的过滤功能。☆nat表:主要实现网络地址转换的表。可以自由转换数据报文中IP和PORT。mangle表:主要实现数据包的拆分-修改-封装动作。raw表:通过关闭nat表的追踪功能,从而实现加速防火墙过滤的表。4.3 链与表之间的关系
表中链security表 :input 、output、forwardfilter过滤表 :input 、output、forwardnat 转换表 :postrouting、prerouting、input 、outputmangle封装表 :input、output、forward、prerouting、postroutingraw自定义表 :prerouting、output
链属表prerouting :nat、mangle、rawpostrouting :nat、mangleinput :filter、mangle、securityoutput :filter、nat、mangle、raw、securityforward :filter、mangle、security5 安装iptables
①永久关闭firewalldsystemctl stop firewalldsystemctl disable firewalld②查看iptables软件包yum list | grep iptables③安装iptables与iptables-servicesyum –y install iptablesyum –y install iptables-services服务相关命令:systemctl start|stop iptables// 开启|关闭 iptablessystemctl status iptables// 查看iptables状态systemctl enable|disable iptables// 开机自启|永久关闭 iptablesiptables –help// 查看帮助文档5.1 iptables配置操作
查看现有规则 iptables -Ltarget prot opt source destination动作 协议 参数 源地址 目标地址
iptables -t 表 -L //查看其他表的规则
查看现有规则,主机名和端口不做解析 iptables -nL显示现有规则详细信息 iptables –nvL显示带标号的规则 iptables -nL --line-number清除规则 iptables -D INPUT 1全部清空规则 iptables -F
常用命令选项:-A 追加,放置最后一条-I 插入,默认插入成第一条-D 删除-F 清空flush-P 设置默认策略policy-j {ACCEPT|DROP|REJECT}-p {TCP|UDP|ICMP}5.2 iptables需求配置
需求1:禁止web端访问server端和client端iptables -t filter -A INPUT -s 4.4.4.4 -j DROPiptables -t filter -A FORWARD -s 4.4.4.4 -j DROP
需求2:①只允许server端ping通其他主机,不允许其他主机ping通server端iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -t filter -A INPUT -p icmp --icmp-type 0 -j ACCEPTiptables -t filter -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT 0 是应答包 8 是请求包
②允许client端ping通web端,不允许web端ping通client端iptables -P FORWARD DROPiptables -t filter -A FORWARD -s 1.1.1.1 -p icmp --icmp-type 8 -j ACCEPTiptables -t filter -A FORWARD -p icmp --icmp-type 0 -j ACCEPT
需求3:禁止web端访问client端的80和22号端口iptables -t filter -A FORWARD -s 4.4.4.4 -p tcp --dport 80 -j DROPiptables -t filter -A FORWARD -s 4.4.4.4 -p tcp --dport 22 -j DROP优化:iptables -t filter -A FORWARD -s 4.4.4.4 -p tcp --dport 22:80 -j DROP 22-80端口优化:iptables -t filter -A FORWARD -s 4.4.4.4 -p tcp -m multiport --dport 22,80 -j DROP multiport模块,提供多端口同时选取的功能,减少iptables的匹配量
需求4:禁止4.4.4.1 - 4.4.4.20网段内的主机访问server端的22和80号端口iptables -t filter -A INPUT -m iprange --src-range 4.4.4.1-4.4.4.20 -p tcp -m multiport --dport 22,80 -j DROP iprange 模块进行多ip同时选取
需求5:只开放主机server端的FTP服务vim /etc/sysconfig/iptables-configIPTABLES_MODULES="nf_conntrack_ftp"systemctl restart iptables.service
iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPTiptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
state模块,五个报文NEW、ESTABLISHED、RELATED、INVALID、UNTRACKED
NEW:连接中的第一个包,状态就是NEW,我们可以理解为新连接的第一个包的状态为NEW。ESTABLISHED:我们可以把NEW状态包后面的包的状态理解为ESTABLISHED,表示连接已建立。RELATED:主机与目标主机已经进行通信,目标主机发起新链接。INVALID:如果一个包没有办法被识别,或者这个包没有任何状态,那么这个包的状态就是INVALID,我们可以主动屏蔽状态为INVALID的报文。UNTRACKED:报文的状态为untracked时,表示报文未被追踪,当报文的状态为Untracked时通常表示无法找到相关的连接。
拓展:只开放主机web端的FTP服务vim /etc/sysconfig/iptables-configIPTABLES_MODULES="nf_conntrack_ftp"systemctl restart iptables.service
iptables -P FORWARD DROPiptables -t filter -A FORWARD -p tcp --dport 20:21 -j ACCEPTiptables -t filter -A FORWARD -p tcp --sport 20:21 -j ACCEPTiptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT6 iptables的nat实践操作
6.1 环境变更
client 2.2.2.1 网关 2.2.2.2出口路由 不变web 3.3.3.1 删除网关6.2 需求解决
snat内网访问外网 ---- 私有地址转换公有地址iptables -t nat -A POSTROUTING -s 2.2.2.0/24 -j SNAT --to 3.3.3.3
dnat外网访问内网 ---- 公有地址转换私有地址iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.1 iptables 防火墙笔记
https://wangyi187.top/posts/os-20-iptables/
闽公网安备 35050402880173号