linux防火墙

防火墙前提得是路由能通,这个封包能过来,封包进入本机
防火墙主机内部要有路由
防火墙链上(chain)规则是有先后顺序,封包表头信息满足某条规则就action,并不会进行下面的规则匹配,
如果上面的都没有匹配到,那么就执行默认的规则,也就是policy的action。

规则里先过滤精确的,在放通全部的就可以限制指定的IP

tables
filter 管理本机的表【默认的表】
input 从外部进入本机的封包。从外部主机访问本机时候
output 从本机发出的封包。从本机访问外部主机时候
forward 转发到后端主机上

nat 用在linux路由器主机上,管理防火墙内部的主机。进行来源ip+port与目的ip+port之间的转换。需要结合filter表中的forward链。
prerouting 进入本机。在进行路由判断之前进行的规则,修改目标IP地址。dnat
postrouting 从本机出去。在路由判断之后进行的规则,修改来源IP地址。snat
input
output

POSTROUTING 在修改来源 IP ,
PREROUTING 则在修改目标 IP 。
mangle 管理标志的
options 自定义表

查看指定表上的防火墙规则
v会显示统计信息
iptables -t nat -L -nv
iptables -t nat -L -n

列出防火墙的规则命令
iptables-save
iptables-save -t nat

防火墙规则解释
target代表要执行的动作,有ACCEPT DROP REJECT
prot 代表封包的协议,有tcp udp icmp
opt 额外说明
source 代表封包上的来源ip地址
destination 代表封包的上目标ip地址

清理防火墙规则
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

设定防火墙
1、设定防火墙filter表上的INPUT链上的默认策略为drop
iptables -t filter -P INPUT DROP

2、设定常见的参数
没有指定的参数,就是接受
-A 在原本规则最后面追加一条
-I 默认插入在第1条规则
-A 链名称

-i 封包进入的网卡名称,与INPUT链结合
-o 封包出去的网卡名称,与OUTPUT 链结合

-p 封包的协议,有tcp udp icmp all

-s 封包表头的来源地址,可以是ip,也可以网段
-s 192.168.1.1
-s 192.168.1.1/24
-s 192.168.1.1/255.255.255.0
如果不允许
-s ! 192.168.1.1
-d 封包表头上的目标地址,可以是ip,也可以网段

–sport 封包表头上的来源地址的端口,通常结合tcp或者udp协议使用
-p tcp --sport 1521
-p udp --sport 1521:1588
–dport 封包表头上的目标地址的端口,通常结合tcp或者udp协议使用

-j 动作,有ACCEPT DROP REJECT LOG

iptables -A INPUT -p tcp -s 172.16.0.131 -j DROP
iptables -A INPUT -p tcp -i eth0 -s 172.16.0.132 -j DROP

-m 外挂模块,state(状态模块)mac(网卡地址)
–state 封包状态
INVALID 无效封包
ESTABLISHED 已经联机成功的封包
NEW 想新建立联机的封包
RELATED 我们主机发送出去的封包有关

-m state --state ESTABLISHED,RELATED
-m mac --mac-source mac地址

禁ping
iptables -A INPUT -i eth34 -p icmp --icmp-type 8 -j DROP

常见的设定

  1. 清除规则
    iptables -F
    iptables -X
    iptables -Z
  2. 设定政策
    iptables -P INPUT DROP
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    3.制定规则
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    #iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
    iptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport 1024:65534 -j ACCEPT
    4.写入防火墙规则文件里/etc/sysconfig/iptables
    /etc/init.d/iptables save

SNAT 用于内部主机访问外网
出去:POSTROUTING 经过路由后,将来源地址从私网ip修改成public ip
返回:PREROUTING 经过路由前,将目标地址从public ip修改成私网ip地址

eth1是内网网卡 eth0是外网网卡
iptables -A INPUT -i eth1 -j ACCEPT
echo “1” > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.0.20/24 -o ens32 -j MASQUERADE

直接修改ip
iptables -t nat -A POSTROUTING -o ens32 -j SNAT --to-source 192.168.1.100

DNAT 用于外部主机访问内部主机,外部先请求到linux路由器上,然后由DNAT将真正的需要转发到内部服务器上
进去:PREROUTING 经过路由之前,将目标地址从public ip修改成私网IP
回来:POSTROUTING 经过路由后,扔到了public ip上,将来源地址从私网ip修改成public ip
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080

DNAT和SNAT刚好相反

iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.20/24 -o ens32 -j MASQUERADE

### Linux 防火墙概述 Linux 系统中的防火墙主要通过 `iptables` 或更现代的工具如 `firewalld` 和 `nftables` 来实现网络流量控制。这些工具允许管理员定义规则来过滤传入和传出的数据包,从而保护服务器免受未经授权访问。 #### iptables 的基本概念 `iptables` 是一种基于命令行的工具,用于管理 IPv4 数据包过滤。它支持多种匹配条件以及动作执行方式。以下是其核心组件: - ** (Chain)**:预设的有 INPUT、OUTPUT 和 FORWARD。 - **规则 (Rule)**:指定如何处理数据包。 - **目标 (Target)**:决定数据包的命运,比如 ACCEPT(接受)、DROP(丢弃)或 REJECT(拒绝并通知发送方)。[^1] ```bash sudo iptables -L -v ``` 上述命令可以查看当前设置的所有规则及其详细信息。 #### firewalld 功能特点 相比传统的 `iptables`,`firewalld` 提供了一个动态管理防火墙的功能集,并且支持区域的概念以便于分类不同的信任级别。它的优势在于能够实时修改而无需重启服务。[^2] 安装与启动 service: ```bash sudo apt install firewalld # 对Debian/Ubuntu系统适用 sudo systemctl start firewalld sudo systemctl enable firewalld ``` 添加端口开放示例: ```bash sudo firewall-cmd --add-port=80/tcp --permanent sudo firewall-cmd --reload ``` 以上两条指令分别永久开启 HTTP 协议对应的 80 号端口,并重新加载配置使更改生效。 #### nftables 新特性介绍 作为下一代框架替代品之一,`nftables` 设计上更加灵活高效,在语法结构上有显著改进。它引入了集合(Set)机制简化复杂场景下的策略制定过程。同时提供了丰富的扩展模块满足特定需求。[^3] 简单例子展示创建一条阻止所有外部SSH连接的新规: ```bash sudo nft add table inet filter sudo nft add chain inet filter input { type filter hook input priority 0 \; } sudo nft add rule inet filter input tcp dport 22 counter drop ``` 这组脚本先声明一个新的格及关联条,最后一步则具体指定了针对TCP协议下目的端口号为22(即ssh默认值)的所有请求都予以拦截操作。 ### 结论部分 综上所述,无论是经典方案还是新兴技术路线都能很好地完成linux平台上的网络安全防护任务;选择哪款取决于实际应用场景和个人偏好等因素考量之后再做定夺比较合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值