Linux防火墙配置

Linux 防火墙:iptables 与 firewalld

概述:防火墙管理工具的演变

自 RHEL 7 系统开始,firewalld防火墙正式取代了 iptables防火墙。

  • 对于熟悉 RHEL 5/6 及更早版本的用户,需要重新学习 firewalld的相关知识。
  • 本质:无论是 iptables还是 firewalld,它们本身都不是真正的防火墙,而是用于定义防火墙策略的管理工具或服务
  • 底层实现
    • iptables服务将配置好的策略交由内核层面的 netfilter​ 网络过滤器处理。
    • firewalld服务则将配置好的策略交由内核层面的 nftables​ 包过滤框架处理。

简言之,Linux 系统中存在多个防火墙管理工具,目的是方便运维管理;通常只需选择并配置其中之一即可。


防火墙策略的基本原理

策略匹配流程

防火墙会按照从上到下的顺序读取策略规则:

  1. 找到匹配项后,立即执行对应的操作(放行或阻止)。
  2. 如果读取完所有规则均无匹配,则执行默认策略

策略设置逻辑

防火墙策略主要分为两种行为:“”(放行)和“”(阻止)。默认策略的选择决定了规则设置的重点:

默认策略规则设置重点目的
拒绝设置允许规则 (“通”)确保必要的流量能够进入,否则所有连接将被阻断。
允许设置拒绝规则 (“堵”)阻止恶意或不需要的流量,否则防火墙将失去安全屏障作用。

iptables 详解

规则与规则链

  • 规则:处理或过滤流量的具体策略条目。
  • 规则链:由多条规则组成,并根据数据包处理位置的不同进行分类。

五链及其作用

规则链处理时机常见应用场景
PREROUTING在进行路由选择处理数据包。通常用于修改目标地址(DNAT)。
INPUT处理流入本机的数据包。最常用,用于保护本机安全,过滤入站流量。
FORWARD处理转发的数据包。当本机作为网关或路由器时使用。
OUTPUT处理流出本机的数据包。过滤本机发出的流量。
POSTROUTING在进行路由选择处理数据包。通常用于修改源地址(SNAT)。

INPUT链是关键:来自外部的入侵尝试主要针对流入的流量,因此精心配置 INPUT链能有效增加黑客从外网入侵的难度。

技术特性与注意事项

  1. 工作层级iptables属于 数据链路层​ 的服务。
  2. 匹配条件:可以根据流量的源/目的地址、传输协议、服务类型(端口)等信息进行匹配。
  3. 匹配顺序策略规则具有严格的顺序性。必须将更严格、优先级更高的规则放在前面,否则可能导致后续规则失效或产生安全漏洞。

2.iptables常用参数

| 参数 | 作用 |
| —————- | —————————————————————— |
| -P | 设置默认策略 |
| -F | 清空规则链 |
| -L | 查看规则链 |
| -A | 在规则链的末尾加入新规则 |
| -I num | 在规则链的头部加入新规则 |
| -D num | 删除某一条规则 |
| -s | 匹配来源地址IP/MASK,加叹号“!”表示除这个IP外 |
| -d | 匹配目标地址 |
| -i 网卡名称 | 匹配从这块网卡流入的数据 |
| -o 网卡名称 | 匹配从这块网卡流出的数据 |
| -p | 匹配协议,如TCP、UDP、ICMP |
| —dport num | 匹配目标端口号 |
| —sport num | 匹配来源端口号 |

3.防火墙配置

# 清空已有的防火墙规则链
iptables -F
# 查看已有的防火墙规则链
iptables -L
# ping客户端 -c [次数]
ping -c 4 192.168.1.3
iptables -P INPUT DROP
iptables -I INPUT -p icmp -j ACCEPT
iptables -D INPUI 1
iptables -P INPUT ACCEPT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j REJECT

4.防火墙部署与管理

检查防火墙状态

firewall-cmd --state
iptables --version

配置服务器

#!/bin/sh
iptables -F
#允许调用localhost的应用访问
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允许接收任意IP地址发送的ICMP的echo类型的报文
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#允许任意IP地址访问TCP的80、443端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#只允许IP地址为192.168.0.7的主机连接TCP的22端口
iptables -A INPUT -p tcp -s 192.168.0.7 --dport 22 -j ACCEPT
#只允许IP地址为192.168.0.7的主机连接UDP的161端口
iptables -A INPUT -p udp -s 192.168.0.7 --dport 161 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
iptables -L -n --line-numbers
touch localsafe.sh
ls
vim localsafe.sh
ls -l
chmod u+x localsafe.sh
sudo ./localsafe.sh
#!/bin/sh
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
#允许来自为192.168.1.0/24网段内的IP地址通过防火墙访问Web服务器、FTP服务器和E-mail服务器
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.10 --dport 80 -j 
ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.11 --dport 21 -j 
ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.11 --dport 20 -j 
ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.12 --dport 25 -j 
ACCEPT
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 220.128.15.12 --dport 110 -j 
ACCEPT
iptables -A INPUT -i eth0 -p icmp -j DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
touch networksafe.sh
ls
vim networksafe.sh
ls -l
chmod u+x networksafe.sh
sudo ./networksafe.sh
文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇