啓動CentOS/RHEL 7後,防火牆規則設置由firewalld服務進程默認管理。
一個叫做firewall-cmd的命令行客戶端支持和這個守護進程通信以永久修改防火牆規則.
查看 firewall 狀態 :
# firewall-cmd --state # eg :running
查看 firewall 版本 :
# firewall-cmd --version #eg : 0.4.3.2
重啓防火牆
# systemctl restart firewalld
#查看所有的zone信息
# firewall-cmd --list-all-zones
#查看默認zone是哪一個
# firewall-cmd --get-default-zone
#臨時修改接口p3p1所屬的zone爲internal
# firewall-cmd --zone=internal --change-zone=p3p1
#暫時開放http
# firewall-cmd --add-service=http
#永久開放http
# firewall-cmd --permanent --add-service=http
#在public中永久開放80端口
# firewall-cmd --zone=public --add-port=80/tcp --permanent
#從public zone中移除服務
# firewall-cmd --permanent --zone=public --remove-service=ssh
#重新加載配置
# firewall-cmd --reload
查看一下防火牆現在開啓了哪些服務和端口
[root@localhost ~]# firewall-cmd --list-all
public (default, active)
interfaces: eno16777736
sources:
services: dhcpv6-client ssh
ports: 8080/tcp
masquerade: no
forward-ports: port=80:proto=tcp:toport=8080:toaddr=
icmp-blocks:
rich rules:
設置默認的zone
irewall-cmd --get-default-zone
firewall-cmd --set-default-zone=trusted
#開放80 端口
# firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含義:
--zone #作用域
--add-port=80/tcp #添加端口,格式爲:端口/通訊協議
--permanent #永久生效,沒有此參數重啓後失效
從public移除 interface
# firewall-cmd --zone=public --remove-interface=eno16777736
查詢外網端口
# firewall-cmd --permanent --query-port=8080/tcp
刪除8080端口,禁止外網訪問
# firewall-cmd --permanent --remove-port=8080/tcp
添加8080端口,供外網訪問
# firewall-cmd --permanent --add-port=8080/tcp
暫時開放ftp服務
firewall-cmd --add-service=ftp
永久開放ftp服務
firewall-cmd --add-service=ftp --permanent
永久關閉ftp服務
firewall-cmd --remove-service=ftp --permanent
打開mysql 3306端口並 設置外部訪問
mysql安裝後默認是localhost訪問,如果需要外部訪問可以設置一個新的賬號把host改爲%,意味着所有ip均可以訪問
grant all privileges on *.* to 'outUser'@'%' identified by '12' with grant option
然後
flush privileges;
就可以使用outUser賬戶密碼12來外部訪問,有的時候無法訪問需要打開防火牆開放端口
centos 7 中使用的是firewall-cmd命令
打開3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
centos7 firewall 防火牆 命令
如果你的系統上沒有安裝使用命令安裝
#yum install firewalld //安裝firewalld 防火牆
開啓服務
# systemctl start firewalld.service
關閉防火牆
# systemctl stop firewalld.service
開機自動啓動
# systemctl enable firewalld.service
關閉開機制動啓動
# systemctl disable firewalld.service
查看狀態
#systemctl status firewalld
得到到的結果如果是
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2016-09-05 02:34:07 UTC; 15min ago
Main PID: 3447 (firewalld)
CGroup: /system.slice/firewalld.service
└─3447 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Sep 05 02:34:07 vultr.guest systemd[1]: Starting firewalld - dynamic firewall daemon...
Sep 05 02:34:07 vultr.guest systemd[1]: Started firewalld - dynamic firewall daemon.
這樣的說明沒有問題
設置 firwall
使用firewall-cmd 命令
查看狀態
#firewall-cmd --state //running 表示運行
獲取活動的區域
#firewall-cmd --get-active-zones
這條命令將用以下格式輸出每個區域所含接口:
獲取所有支持的服務
#firewall-cmd --get-service
每個服務以空格分隔 例如:
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-http
獲取永久選項所支持的服務 就是重啓後也支出的
#firewall-cmd --get-service --permanent //在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic
開啓應急模式阻斷所有網絡連接
#firewall-cmd --panic-on //在 0.3.0 之前的 FirewallD版本中, panic 選項是 –enable-panic 與 –disable-panic
關閉應急模式
#firewall-cmd --panic-off
查看應急模式的狀態
#firewall-cmd --query-panic
在不改變狀態的條件下重新加載防火牆:
#firewall-cmd --reload
防火牆預定義的服務配置文件是xml文件 目錄在 /usr/lib/firewalld/services/
在 /etc/firewalld/services/ 這個目錄中也有配置文件 但是/etc/firewalld/services/目錄 優先於 /usr/lib/firewalld/services/ 目錄
修改配置文件後 使用命令重新加載
#firewall-cmd --reload
啓用某個服務
# firewall-cmd --zone=public --add-service=https //臨時
# firewall-cmd --permanent --zone=public --add-service=https //永久
開啓某個端口
#firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp //永久
#firewall-cmd --zone=public --add-port=8080-8081/tcp //臨時
使用命令加載設置
#firewall-cmd --reload
查看開啓的端口和服務
#firewall-cmd --permanent --zone=public --list-services //服務空格隔開 例如 dhcpv6-client https ss
#firewall-cmd --permanent --zone=public --list-ports //端口空格隔開 例如 8080-8081/tcp 8388/tcp 80/tcp
參考地址:
CentOS7防火牆管理firewall-cmd