• CentOS 7 的防火墙开启2


     

    在虚拟机 CentOS 7 上装了 Nginx,结果发现另一台电脑无法访问其默认页面,通过 telnet 192.168.1.88 80 监听发现是 http 80 端口被 CentOS 7 的防火墙 Firewalld(CentOS 6 的防火墙是 iptables)给阻止通信了。

    接下来就讲下如何添加防火墙规则。

    先查看防火墙是否开启的状态,以及开放端口的情况:

    systemctl status firewalld.service
    sudo firewall-cmd --list-all
    

    如下显示,services: dhcpv6-client ssh 表示 ssh 服务是放行的,而 ports: 这里为空,表示无端口号放行。

    接下来通过以下命令开放http 80 端口:

    sudo firewall-cmd --add-service=http --permanent
    sudo firewall-cmd --add-port=80/tcp --permanent
    

    命令末尾的--permanent表示用久有效,不加这句的话重启后刚才开放的端口就又失效了。

    然后重启防火墙:

    sudo firewall-cmd --reload
    

    再次查看端口的开放情况:

    sudo firewall-cmd --list-all
    

    就会发现 services: 里出现了 http 服务,ports:里也出现了 80 端口:

    最后换另一台电脑重新访问虚拟机的IP地址,成功了~

    延伸阅读:

    Firewall 的 Zone 还能将不同的网络连接归类到不同的信任级别:

    drop: 丢弃所有进入的包,而不给出任何响应
    block: 拒绝所有外部发起的连接,允许内部发起的连接
    public: 允许指定的进入连接
    external: 同上,对伪装的进入连接,一般用于路由转发
    dmz: 允许受限制的进入连接
    work: 允许受信任的计算机被限制的进入连接,类似 workgroup
    home: 同上,类似 homegroup
    internal: 同上,范围针对所有互联网用户
    trusted: 信任所有连接
    

    过滤规则解释如下:

    source: 根据源地址过滤(优先级最高)
    interface: 根据网卡过滤(优先级次高)
    service: 根据服务名过滤
    port: 根据端口过滤
    icmp-block: icmp 报文过滤,按照 icmp 类型配置
    masquerade: ip 地址伪装
    forward-port: 端口转发
    rule: 自定义规则
    
    # 查看是否开启
    systemctl status firewalld.service
    # 打开防火墙
    systemctl start firewalld.service
    # 停用防火墙
    systemctl disable firewalld
    # 禁用防火墙
    systemctl stop firewalld.service
    
    # 开机启动
    systemctl enable firewalld
    # 取消开机启动
    systemctl disable firewalld
    
    # 查看运行状态
    firewall-cmd --state
    # 查看接口信息
    firewall-cmd --list-all
    
    # 更新防火墙规则方法1:无需断开连接,动态更改规则
    firewall-cmd --reload
    # 更新防火墙规则方法2:断开连接,以重启的方式更改规则
    firewall-cmd --complete-reload
    
    # 查看帮助
    firewall-cmd --help
    --zone=NAME # 指定 Zone
    --permanent # 为永久生效
    --timeout=seconds # 持续一段时间,到期后自动移除,经常用于调试,且不能与 --permanent 同时使用
    
    # 追加一个8181端口,永久有效
    firewall-cmd --add-port=8181/tcp --permanent
    # 追加一段端口范围
    firewall-cmd --add-port=6000-6600/tcp
    # 开放 ftp 服务
    firewall-cmd --add-service=ftp
    # 添加eth0 接口至 public 信任等级,永久有效
    firewall-cmd --zone=public --add-interface=eth0 --permanent
    
    # 配置 public zone 的端口转发
    firewall-cmd --zone=public --add-masquerade
    # 然后转发 tcp 22 端口至 9527
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527
    # 转发 22 端口数据至另一个 ip 的相同端口上
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.123
    # 转发 22 端口数据至另一 ip 的 9527 端口上
    firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=9527:toaddr=192.168.1.100
    
    # IP 封禁
    firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.123' reject"
    # 通过 ipset 来封禁 ip
    firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:ip
    firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.123
    # 封禁网段
    firewall-cmd --permanent --zone=public --new-ipset=blacklist --type=hash:net
    firewall-cmd --permanent --zone=public --ipset=blacklist --add-entry=192.168.1.0/24
    # 倒入 ipset 规则 blacklist,然后封禁 blacklist
    firewall-cmd --permanent --zone=public --new-ipset-from-file=/path/blacklist.xml
    firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset=blacklist drop'
  • 相关阅读:
    关于GCD同步组实现多个异步线程的同步执行中的注意点
    (七)Redis对键key的操作
    (六)Redis有序集合Sorted set操作
    (五)Redis集合Set操作
    (四)Redis哈希表Hash操作
    (三)Redis列表List操作
    (二)Redis字符串String操作
    (一)Redis简介及安装
    Python对文件和文件夹的高级操作模块shutil
    Python文件传输模块ftplib
  • 原文地址:https://www.cnblogs.com/yuanfang0903/p/11102695.html
Copyright © 2020-2023  润新知