iptables 防火墙操作介绍

Iptables简介

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统,所以它并不是真正的防火墙,可以将它理解为一个代理,我们通过这个代理,将规则对应到安全框架netfilter中。
因此,信息包过滤系统实际由netfilter和iptables两个组件构成。Netfilter是集成在内核中的一部分,它的作用是定义、保存相应的规则。而iptables是一种工具,用以修改信息的过滤规则及其他配置。用户可以通过iptables来设置适合当前环境的规则,而这些规则会保存在内核空间中。由此可以看出,Netfilter才可以算是真正的防火墙。

4种规则表

我们把具有相同功能的规则集合叫作表,不同功能的规则,我们放在不同的表当中。这样就方便了我们的管理。
在iptables中定义了4种表。如下:

raw表确定是否对该数据包进行状态跟踪
mangle表为数据包设置标记
nat表修改数据包中的源、目标ip地址或端口
filter表确定是否放行该数据包(过滤)

5种规则链

什么叫规则链呢?我们知道防火墙的作用就在于对所经过的报文进行规则的匹配,然后执行对应的动作。那么有可能我们制定的规则会是多条,当我们把这些规则串到一个链条上的时候,就形成了链。防火墙在匹配的时候,就会把链上所有的规则都匹配一遍,如果有符合条件的则执行对应操作。

INPUT处理入站数据包
OUTPUT处理出站数据包
FORWARD处理转发数据包
POSTROUTING在进行路由选择后处理数据包
PREROUTING在进行路由选择前处理数据包

其中input、output链主要用在“主机型防火墙”中,主要针对服务器本机进行保护;
而FORWARD\POSTROUTING\PREROUTING多用在“网络型防火墙”中,如使用Linux防火墙作为网关服务器,在公司内网与Ineternet之间进行安全控制。

匹配顺序

(1)规则表之间的顺序:raw --> mangle–> nat–> filter
(2)规则链之间的顺序:不同链的处理时机比较固定,顺序取决于数据包的流向。
入站数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目的地址是防火墙本机,交给INPUT链进行处理,通过以后再交给系统上层应用程序进行响应。
转发数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目标地址是其他外部地址,则交给FORWARD链进行处理,最后交给POSTROUTING链进行处理。
出站数据流向:防火墙本机向外部地址发送数据包,首选被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链进行处理。
(3)规则链内部各条防火墙规则之间的顺序:从上往下,一旦匹配,立即终止。

一个报文的走向如下:
在这里插入图片描述
根据这个图,我们可以总结出以下数据包的流向:
到本机某进程的报文:prerouting------>input
由本机转发的报文:prerouting------>forward---->postrouting
由本机的某进程发出的报文:output----->postrouting

使用iptables

systemctl stop firewalld  #关闭防火墙
yum install iptables-services #安装或更新服务
systemctl start iptables #打开iptables
再执行service iptables save #保存设置规则
systemctl restart iptables  # 重启服务新规则生效

语法规则

iptables [-t 表名]  管理选项  [链名] [条件匹配] [-j 目标动作]

注:不指定表名,默认为filter表
不指定链名,默认表示表中所有链
除非设置规则链的缺省策略,否则需要制定匹配条件

管理选项:

-A在链尾追加一条新规则
-I在指定位置插入一条新规则(默认行首)
-P设置指定链的默认策略
-L列表查看各条规则信息
-D删除指定位置或内容的规则
-F清空规则链内的所有规则
-h查看iptables命令的使用帮助

匹配条件

-p协议名
-s源地址
-d目标地址
-i网络接口名(接收)
-o网络接口名(发送)
-sport源端口
-dport目标端口
–tcp-flags检查范围 如–tcp-flags syn,rst表示检查syn,rst两个标记。syn为1满足条件
–icmp-typeicmp的类型,如echo-request、echo-reply
-m mac结合- -mac-source匹配mac地址
-m multiport多端口匹配,结合- -sports源端口或者- -dports目标端口(多个端口用“,”隔开,连续端口用“:”分隔)
-m iprangeip范围匹配,结合- -src-range源ip或者- -dst-range目标ip(以“-”连接起始结束ip地址)

处理动作

ACCEPT允许数据包通过
DROP直接丢弃数据包不给任何回应信息。用户请求就会显示超时
REJECT拒绝数据包通过,客户端刚请求就会收到拒绝的嘻信息
SNAT源地址转换,通常指私有地址转换为公有地址(内部发往外网的数据),对应postrouting
DNAT目的地址转换 ,通常指公有地址转换为私有地址(外网发往内网的数据)对应prerouting
MASQUERADE是SNAT的一种特殊形式,使用于动态的、临时会变的ip上
REDIRECT在本机做端口映射
LOG在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配。

举例

iptables -L  没有-t 指定表名,默认查看的是fileter表中的信息
iptables -L --line-number  查看的是fileter表中的信息,并显示行号  
iptables -F  没有-t 指定表名,默认清空fileter表中的信息
iptables -A INPUT -d 127.0.0.1 -p tcp --dport 22 -j ACCEPT  在链尾追加一条规则
iptables -I INPUT -s 192.168.75.1 -d 127.0.0.1 -p tcp --dport 22 -j ACCEPT  在第一个位置插入一条规则
iptables -I INPUT 2 -s 192.168.75.1 -d 127.0.0.1 -p tcp --dport 22 -j DROP 在第2条规则前插入一条规则
iptables -D INPUT 1  删除INPUT链中的第一条规则
iptables -P INPUT DROP    设置默认策略为拒绝所有连接
iptables -P INPUT ACCEPT  设置默认策略为允许已建立的规则进行连接
iptables  -A INPUT -s 192.168.0.1 -p tcp --dport 80 -j REJECT 拒绝192.168.0.1访问web服务
iptables -A INPUT -s 192.168.0.0/24 -p icmp -j REJECT  拒绝192.168.0.0/24ping通服务器
iptables -A INPUT -s 192.168.1.0/24 -m multiport -p tcp --dports 21,80 -j ACCEPT   允许192.168.1.0/24访问服务器的21与80端口
iptables -h        查看帮助信息
man iptables      查看iptables手册

附:

备份规则集:iptables-save > /etc/iptables-save
恢复规则集:iptables-restore < /etc/iptables-save
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值