Linux防火墙

iptables

在这里插入图片描述

四表:主要用filter表和nat表

  • filter:过滤数据包,防火墙
  • nat:network address translathion 网络地址转换
  • mangle:拆解报文,做出修改,封装报文
  • raw:关闭nat 表上启用的链路追踪机制,决定数据包是否被状态跟踪机制处理
    在这里插入图片描述

五链:

  • prerouting :在对数据包作路由选择之前,应用此链中的规则。
  • input:当接收到访问本机地址的数据包(入站)时,应用此链中的规则。
  • forward:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则。
  • output:当防火墙本机向外发送数据包(出站)时,应用此链中的规则。
  • postrouting:在对数据包作路由选择之后,应用此链中的规则。

规则优化原则:

  • 规则不要写太多,否则匹配缓慢
  • 把匹配范围大的规则写在下面

规则表之间的优先顺序:raw>mangle>nat>filter

iptables规则

  • 添加、插入、删除、清空规则和查看规则是最常用的管理选项
  • 最基本的两种策略为ACCEPT(允许)、DROP(丢弃)
  • 在iptables命令中使用-s 源地址和-d 目标地址的形式,分别对应于源(–source)地址和目标(–destination)地址。
  • -A参数 是添加规则到结尾
  • -I参数 是添加规则到最前面

filter表:

iptables -L  #查看filter过滤规则表

设置filter表的INPUT链 插入一条允许出入站,一般只配置入站

iptables -t filter -A INPUT -p tcp --dport 10050 -j ACCEPT    #表末尾添加允许入站10050端口.
iptables -I  INPUT -p tcp --dport 10050 -j ACCEPT   #表最上面添加允许入站10050端口.默认使用filter表不用-t参数
iptables -t filter -I  INPUT 5  -p tcp --dport 10050 -j ACCEPT #插入规则到第五条
iptables -I INPUT -s 58.246.139.82 -p tcp -m tcp --dport 40022 -j ACCEPT #允许58.246.139.82访问40022端口
iptables-I INPUT -s 58.246.139.82 -j ACCEPT #允许58.246.139.82 访问本机所有端口
service iptables save  #保存修改

添加规则禁止出入站

iptables -I INPUT -s 0.0.0.0 -p tcp --dport 25 -j DROP  #禁用任意IP入站25端口
iptables -I OUTPUT -s 0.0.0.0 -p tcp --dport 25 -j DROP  #禁用任意IP出站25端口
service iptables save  #保存修改

删除规则,清空规则 慎用

iptables -L -n --line-number  #查询规则所在行号
iptables -F #清空filter表、nat表、mangle表各链中的所有规则 
iptables -t filter -D INPUT 2  #删除filter表INPUT链中的第2条规则。
iptables -t nat -D PREROUTING  17 删除nat表PREROUTING链的行号17的规则

设置规则链的默认策略

iptables -t filter -P FORWARD DROP #将filter表中FORWARD规则链的默认策略设为DROP

设置filter表的forward链转发策略

iptables -A FORWARD -s 192.168.1.11 -j REJECT   #拒绝转发来自192.168.1.11主机的数据
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT  #允许转发来自192.168.0.0/24网段的数据

NAT表

DNAT 目的地址转换,通常被叫做目的映射 (外网想访问内网端口)

web服务器放在内网,配置内网ip,前端有个防火墙,配置公网ip,互联网上的访问者使用公网ip来访问这个网站。当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网ip。防火墙会把这个数据包的报头改写一次,将目标地址改写成web服务器的内网ip,然后再把这个数据包发送到内网的web服务器上这样,数据包就穿透了防火墙,并从公网ip变成了一个对内网地址的访问了,即DNAT,基于目标的网络地址转换 。

SNAT 源地址转换,通常被叫做源映射 (内网想访问外网)

PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip。当外部网络的服务器比如网站web服务器接到访问请求的时候,他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip。这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了。所以叫做SNAT,基于源地址的地址转换。

查看NAT表的规则

iptables -t nat -L -n --line-number

NAT 地址转发

如本机有公网IP,其他服务器在同一个子网,在本机做NAT地址转发,可以实现公网访问本机33389端口转发到内网的其他服务器的3389端口,实现公网的远程访问

设置NAT表的PREROUTING链 (公网远程访问内网)

iptables -t nat -A PREROUTING -d 0.0.0.0/0  -p tcp -m tcp --dport 33389 -j DNAT --to-destination 10.73.0.4:3389   
#访问本机的33389端口转发到10.73.0.4服务器的3389端口

防火墙规则还原

#查看启动配置
which iptables

/etc/init.d/iptables
#查看iptables文件位置
/etc/sysconfig/iptables
#备份
cp iptables  iptables.202402181531
#还原
iptables-restore < iptables.202402181531
#保存
iptables-save > /etc/sysconfig/iptables

firewalld 规则配置

概念

启动新规则时,不会像ipatbles一样,先清空规则,再启动所有规则,如此会对现在程序有影响,哪怕只是一条规则。而firewalld 规则变更不需要对整个防火墙规则重载,可直接添加新规则

iptables与firewalld的关系:

  • firewalld底层使用iptables作为防火墙规则管理入口。
  • firewalld内核模块还是netfilter,只是firewalld修改了daemon和service。
  • 添加规则还是通过iptables管理的,可以通过iptables查看规则。
  • firewalld没有链的概念
  • redhat6用iptables,redhat7用firewalld/iptables用的少

相关配置文件位置

firewalld 配置:储存在/usr/lib/fierwalld//etc/firewalld/目录中的XML文件中
/usr/lib/fierwalld/services/  #模块目录,里面有每个服务对应的模板,配置默认端口
/etc/firewalld/ #配置目录

firewalld zone

firewalld将网卡对应到不同的区域(zone)
zone默认共有9个:block,dmz,drop,external,home,internal,public,trusted,work.
区域相当于iptables的表 
drop区域:配置的规则为丢弃的规则
public区域:公共规则

规则配置

列出所支持的zone和查看当前的默认zone

firewall-cmd --get-zones

默认使用区域

firewall-cmd --get-default-zone

查看防火墙规则

firewall-cmd --list-all

查看规则状态

firewall-cmd --state

加载规则

firewall-cmd --reload

开放3306端口

firewall-cmd --add-port=3306/tcp --permanent

开放网段

firewall-cmd --permanent --add-source=192.168.0.0/22

移除规则

firewall-cmd --permanent --remove-source=192.168.0.0/22

开放服务

firewall-cmd --permanent --add-service=http

移除服务

firewall-cmd --permanent --remove-service=http

允许192.168.0.10访问80端口(富规则)

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.10" port protocol="tcp" port="80" accept"
#family  对哪个协议
#source address	源地址
#accept	允许
#drop	拒绝

拒绝192.168.0.10访问80端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.10" port protocol="tcp" port="80" drop"
firewall-cmd --reload

配置完规则一定要重新加载防火墙:firewall-cmd --reload

同一规则允许及拒绝时,效果为拒绝,不会跟iptables一样,没有先后顺序优先匹配,为全文匹配,拒绝大于允许

端口转发

开启转发功能

vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
#sysctl -p
#或者
#echo 1 >/proc/sys/net/ipv4/ip_forward

将访问192.168.1.10(本机)主机8080端口的请求转发至80端口

firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.1.10

将访问192.168.1.10(本机)主机8080端口的请求转发至192.168.1.111的80端口

firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.111:toport=80

将本机的80端口转发至192.168.1.109 8080端口

firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.109

转发时,要开启伪装,伪装就是SNAT

firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload
firewall-cmd --query-masquerade                         
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值