OsoLinux 快速安装指南
学习掌握 firewalld 指令:
# 查看安全设置:
firewall-cmd --list-all # 显示默认安全区域的所有设置
firewall-cmd --query-panic # 查看是否拒绝
firewall-cmd --get-zones # 显示安全区域列表 系统配备了多个不同的方案
firewall-cmd --reload # 重新加载防火墙规则
# 更改方案为 public,非专业其实不用去切换或利用方案:
firewall-cmd --set-default-zone=public
# 改变拒绝状态,永久生效再加上 --permanent,否则 firewall-cmd --reload 就清空了:
firewall-cmd --panic-on # 拒绝所有包
firewall-cmd --panic-off --permanent # 取消拒绝状态
# 查看局部设置:
firewall-cmd --list-ports # 查看所有打开的端口
firewall-cmd --list-services # 列出默认安全方案放行的所有服务
# 默认安全区域加入、移除一个端口或服务:
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --remove-port=233/udp --permanent # 拒绝通过udp访问233
firewall-cmd --remove-service=smtp --permanent
# 临时允许 Samba 服务通过 600 秒:
firewall-cmd --add-service=samba --timeout=600
#direct 可以直接在防火墙的链(chain)中添加规则,0 代表了最高的优先级:
firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
将 80 端口转发至 8080 端口:
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080
# 将 80 端口的流量转发至 192.168.0.1:
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1
# 将 80 端口的流量转发至 192.168.0.1 的 8080 端口:
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080
# 接下来我们来看富规则的设置,即 rich rules,允许 192.168.2.208 主机的所有流量:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208" accept"
# 允许 192.168.2.208 主机的 icmp 协议,即允许 192.168.2.208 主机 ping:
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp"
accept"
# 取消允许 192.168.2.208 主机的所有流量:
firewall-cmd --zone=drop --remove-rich-rule="rule family="ipv4" source address="192.168.2.208" accept"
# 允许 192.168.2.208 主机访问ssh服务:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208"
service name="ssh" accept"
# 禁止 192.168.2.208 访问 https 服务,并返回错误信息:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.208"
service name="https" reject"
# 允许 192.168.2.0/24 网段的主机访问 22 端口:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24"
port protocol="tcp" port="22" accept"
每分钟允许2个新连接访问 ftp 服务
firewall-cmd --add-rich-rule="rule service name=ftp limit value=2/m accept"
# 允许新的 ipv4 和 ipv6 连接 ftp,并使用日志和审核,每分钟允许访问一次:
firewall-cmd --add-rich-rule="rule service name=ftp log limit value="1/m" audit accept"
# 拒绝来自 192.168.2.0/24 网段的连接,10 秒后自动取消:
firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 reject" --timeout=10
# 允许 ipv6 地址为 2001:db8::/64 子网的主机访问 dns 服务,并且每小时审核一次,300 秒后自动取消:
firewall-cmd --add-rich-rule="rule family=ipv6 source address="2001:db8::/64" service name="dns"
audit limit value="1/h" reject" --timeout=300
# 将来自 192.168.2.0/24 网段访问本机80端口的流量转发到本机的22端口:
firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24
forward-port port=80 protocol=tcp to-port=22"
# 将来自 192.168.2.0/24 网段访问本地80端口的流量转发到 192.168.2.208 主机的 22 端口:
firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24
forward-port port=80 protocol=tcp to-port=22 to-addr=192.168.2.208"
#伪装 IP:
firewall-cmd --query-masquerade # 检查是否允许伪装 IP
firewall-cmd --add-masquerade # 允许防火墙伪装 IP
firewall-cmd --remove-masquerade # 禁止防火墙伪装 IP
# 将来自局域网 192.168.2.0/24 网段访问外网的流量映射为网络出口公网IP,即修改源 IP 地址:
firewall-cmd --zone=drop --add-masquerade
firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 masquerade"