• home > OS > Linux > Devops >

    Linux如何打开端口和设置防火墙:firewall-cmd与iptables配置

    Author:[email protected] Date:

    在公司拿了个 centos 6 0 的包 …(百度网盘有然后,重新配置……像打开 80 端口 ,3360 8080 端口什么的,难搞方法一:命令行方

    linux防火墙端口设置

    • linux 防火墙关闭某个端口

      firewall-cmd --permanent --zone=public --remove-port=8080/tcp

    • linux 防火墙打开某个端口

      firewall-cmd --permanent --add-port=10086/tcp

    • 重新加载防火墙策略:

      firewall-cmd --reload

    • 查看防火墙端口开放情况

       firewall-cmd --list-ports

    直接修改配置文件

    比如:修改 /etc/firewalld/zones/public.xml 

    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>Public</short>
      <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
      <service name="ssh"/>
      <service name="dhcpv6-client"/>
      <port protocol="tcp" port="20"/>
      <port protocol="tcp" port="21"/>
      <port protocol="tcp" port="22"/>
      <port protocol="tcp" port="80"/>
      <port protocol="tcp" port="8888"/>
      <port protocol="tcp" port="39000-40000"/>
      <port protocol="tcp" port="3306"/>
    </zone>

    修改完成,保存重启即可

    selinux设置

    设置selinux给web目录读权限

     chcon -v -R --type=httpd_sys_content_t /data/www/

    设置selinux给web目录写权限

    chcon -R -t httpd_sys_rw_content_t /data/www/

    具体参看《centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755

    centos 6.0 iptables  设置

    在公司拿了个 centos 6.0 的包 …(百度网盘有

    然后,重新配置…… 

    像打开 80 端口 ,3360  8080 端口什么的,难搞


    方法一:命令行方式

                   1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

                   2.保存:/etc/rc.d/init.d/iptables save

                   3.重启服务:/etc/init.d/iptables restart

                   4.查看端口是否开放:/sbin/iptables -L -n

        

    方法二:直接编辑/etc/sysconfig/iptables文件


    vi /etc/sysconfig/iptables 

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) 

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙) 

    特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面

      注:需要注意开放端口的具体协议(标黄的是端口或协议),我当时开放一个端口时,协议搞错了,找了好久才找到原因


    添加好之后防火墙规则如下所示:(可以下面文件编辑好后,粘贴覆盖 源文件

    ###################################### 

    # Firewall configuration written by system-config-firewall 

    # Manual customization of this file is not recommended. 

    *filter 

    :INPUT ACCEPT [0:0] 

    :FORWARD ACCEPT [0:0] 

    :OUTPUT ACCEPT [0:0] 

    -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT 

    -A INPUT -p icmp -j ACCEPT 

    -A INPUT -i lo -j ACCEPT 

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT 

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT 

    -A INPUT -j REJECT –reject-with icmp-host-prohibited 

    -A FORWARD -j REJECT –reject-with icmp-host-prohibited 

    COMMIT 

    #####################################

    /etc/init.d/iptables restart   #最后重启防火墙使配置生效

    重启防火墙,这里有两种方式重启防火墙   

    a) 重启后生效

      开启: chkconfig iptables on

      关闭: chkconfig iptables off   

    b) 即时生效,重启后失效

      开启: service iptables start

      关闭: service iptables stop

    3、或者用menu-system-administration-firewall 去添加用户需要的端口。

    By the way:

     a.  netstat -tanp 去显示端口状态。

         /usr/sbin/lsof -i 


    b. telnet ipaddr port

        to check if ip and port is available before making connection. 



    转载本站文章《Linux如何打开端口和设置防火墙:firewall-cmd与iptables配置》,
    请注明出处:https://www.zhoulujun.cn/html/OS/Linux/LinuxDevops/7891.html