首頁 > 軟體

CentOS7中firewall防火牆詳解和設定以及切換為iptables防火牆

2020-06-16 16:25:40

CentOS7中預設使用firewalld

firewall設定

注意:以下firewalld 的操作只有重新啟動之後才有效:service firewalld restart 重新啟動

  1. 系統設定目錄
/usr/lib/firewalld/services

目錄中存放定義好的網路服務和埠引數,系統引數,不能修改。

  1. 使用者設定目錄
/etc/firewalld/
  1. 如何自定義新增埠
    使用者可以通過修改組態檔的方式新增埠,也可以通過命令的方式新增埠,注意,修改的內容會在/etc/firewalld/ 目錄下的組態檔中還體現。
  • 命令的方式新增埠
firewall-cmd --permanent --add-port=9527/tcp 

引數介紹:

1、firewall-cmd:是Linux提供的操作firewall的一個工具;
2、--permanent:表示設定為持久;
3、--add-port:標識新增的埠;

另外,firewall中有Zone的概念,可以將具體的埠制定到具體的zone組態檔中。
例如:新增8010埠

firewall-cmd --zone=public --permanent --add-port=8010/tcp
--zone=public:指定的zone為public;
[root@app-test zones]# more 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="8082"/>
  <port protocol="tcp" port="8080"/>
  <port protocol="tcp" port="8081"/>
</zone>

如果–zone=dmz 這樣設定的話,會在dmz.xml檔案中新增一條。

  • 修改組態檔的方式新增埠
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas.</description>
  <rule family="ipv4">
    <source address="122.10.70.234"/>
    <port protocol="udp" port="514"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="123.60.255.14"/>
    <port protocol="tcp" port="10050-10051"/>
    <accept/>
  </rule>
 <rule family="ipv4">
    <source address="192.249.87.114"/> 放通指定ip,指定埠、協定
    <port protocol="tcp" port="80"/>
    <accept/>
  </rule>
<rule family="ipv4"> 放通任意ip存取伺服器的9527埠
    <port protocol="tcp" port="9527"/>
    <accept/>
  </rule>
</zone>

上述的一個組態檔可以很好的看出:

1、新增需要的規則,開放通源ip為122.10.70.234,埠514,協定tcp;
2、開放通源ip為123.60.255.14,埠10050-10051,協定tcp;/3、開放通源ip為任意,埠9527,協定tcp;

firewall常用命令

  1. 重新啟動、關閉、開啟firewalld.service服務
service firewalld restart 重新啟動
service firewalld start 開啟
service firewalld stop 關閉
  1. 檢視firewall服務狀態
systemctl status firewall 
  1. 檢視firewall的狀態
firewall-cmd --state
  1. 檢視防火牆規則
firewall-cmd --list-all 
[root@app-test firewalld]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp8s0
  sources:
  services: ssh dhcpv6-client
  ports: 8082/tcp 8080/tcp 8081/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

CentOS切換為iptables防火牆

切換到iptables首先應該關掉預設的firewalld,然後安裝iptables服務。

  1. 關閉firewall
service firewalld stop
systemctl disable firewalld.service #禁止firewall開機啟動
  1. 安裝iptables防火牆
yum install -y iptables-services #安裝
  1. 編輯iptables防火牆設定
vi /etc/sysconfig/iptables #編輯防火牆組態檔

下邊是一個完整的組態檔:

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

:wq #儲存退出

service iptables start #開啟
systemctl enable iptables.service #設定防火牆開機啟動

使用命令開啟INPUT伺服器端口

iptables -I INPUT -p tcp --dport 8011 -j ACCEPT #開啟8011埠 
/etc/rc.d/init.d/iptables save #儲存設定 
/etc/rc.d/init.d/iptables restart #重新啟動服務 
/etc/init.d/iptables status #檢視埠是否已經開放

IT145.com E-mail:sddin#qq.com