Linux 防火墙配置使用

本文主要介绍三种在 Linux 系统中常用的防火墙,可以通过whereis xxx命令来查看是否系统已经安装有

Linux 防火墙配置使用

一、Ubuntu 自带防火墙 ufw 使用

# 安装
$ sudo apt install ufw

# 开启/关闭防火墙 (默认设置是’disable’)
$ sudo ufw enable|disable
# 设置默认策略 (比如 “mostly open” vs “mostly closed”)
$ ufw default allow|deny

1. ufw 命令示例

# 查看ufw状态和已设置防火墙的所有规则
ufw status

# 启动 ufw 防火墙
ufw enable

# 关闭防火墙
ufw disable

# 启动默认防御(阻止外部连接,放行对外连接)
ufw default deny

# 允许其它主机访问本机 53 端口,协议包含 tcp 和 udp
ufw allow 53

# 允许其它主机使用 tcp 协议访问本机 25 端口
ufw allow 25/tcp

# ufw 也可以检查 /etc/services 文件,明白服务器的名字及对应的端口和协议
ufw allow smtp

#UFW同时支持出入口过滤。用户可以使用in或out来指定向内还是向外。如果未指定,默认是inufw allow in http 许可访问本机http端口

# 禁止访问外部 smtp 端口,不告知"被防火墙阻止"
ufw reject out smtp

# 禁止本机 192.168.1.1 对外访问,告知"被防火墙阻止"
uwf deny out to 192.168.1.1

# 要删除规则,只要在命令中加入 delete 就行
uwf delete allow 80/tcp

# 系统日志保存于/var/log/ufw.log,LEVEL指定不同的级别 ,默认级别是'低'
ufw logging on|off  LEVEL

# 允许来自192.168.0.0-192.168.255.255的数据通过eth0网卡进入主机
ufw allow out on eth1 to 10.0.0.0/8

# 拒绝来自10.0.0.0/8域tcp协议指向192.168.0.1端口25的数据进入本机
ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25

# 允许经eth1进入,eth2发出的数据经本机路由
ufw route allow in on eth1 out on eth2

实例

允许访问 SSH

sudo ufw allow 22/tcp

设置允许访问 HTTP

sudo ufw allow 80/tcp

设置允许访问 HTTPS

sudo ufw allow 443/tcp

二、firewalld 防火墙使用

防火墙服务简述与安装

Centos7 默认的防火墙是 firewall,替代了以前的 iptables

firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。

# firewall 安装
yum install firewalld

# 查看 firewall 版本
firewall-cmd --version

firewalld 服务基本使用

目的 命令
查看防火墙状态 systemctl status firewalld
关闭防火墙,停止 firewall 服务 systemctl stop firewalld
开启防火墙,启动 firewall 服务 systemctl start firewalld
重启防火墙,重启 firewall 服务 systemctl restart firewalld
查看 firewall 服务是否开机自启 systemctl is-enabled firewalld
开机时自动启动 firewall 服务 systemctl enable firewalld.service
开机时自动禁用 firewall 服务 systemctl disable firewalld.service

firewalld-cmd 防火墙命令使用

1.查看 firewall-cmd 状态

# 查看 firewall-cmd 状态
firewall-cmd --state

# 查看已打开的所有端口
firewall-cmd --zone=public --list-ports

# 开启指定端口(--permanent 永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

# 关闭指定端口
firewall-cmd --zone=public --remove-port=9898/tcp --permanent
firewall-cmd --reload

通过修改 public.xml 文件修改防火墙端口

vim /usr/lib/firewalld/zones/public.xml

Linux 防火墙配置使用

三、iptables 防火墙配置使用

查看防火墙配置信息

iptables -L

Linux 防火墙配置使用

添加配置 iptables.rules

Ubuntu默认没有 iptables 配置文件,需通过`iptables-save > /etc/network/iptables.up.rules` 生成

iptables配置文件路径及文件名建议为 /etc/network/iptables.up.rules ,因为执行 iptables-apply 默认指向该文件,也可以通过-w参数指定文件

Ubuntu 没有重启 iptables 的命令,执行`iptables-apply`生效

Ubuntu iptables 默认重启服务器后清空,需在 /etc/network/interfaces 里写入 `pre-up iptables-restore < /etc/network/iptables.up.rules` 才会开机生效

常用 iptables 命令

# 允许所有访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 拒绝所有访问22端口
iptables -A INPUT -p tcp --dport 22 -j DROP

# 只允许10.0.0.2访问22端口
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.2 -j ACCEPT

允许策略一定要写到拒绝的上面,否则没用

# 查看iptables策略
iptables -L

# 保存策略到指定文件(后面文件路径及文件名可自定义)
iptables-save > /etc/network/iptables.up.rules

# 应用策略
iptables-apply

# 删除策略
需先 `cat /etc/network/iptables.up.rules` 确认删除第几行,或者直接操作 `/etc/network/iptables.up.rules` 文件也行
iptables -D INPUT 2
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!