Linux 防火墙配置使用
本文主要介绍三种在 Linux 系统中常用的防火墙,可以通过whereis xxx
命令来查看是否系统已经安装有
一、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
三、iptables 防火墙配置使用
查看防火墙配置信息
iptables -L
添加配置 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 协议》,转载必须注明作者和本文链接
推荐文章: