一、默認(rèn)防火墻firewall
由于centos7默認(rèn)是使用firewall作為防火墻
- 安裝firewalld 防火墻
yum install firewalld - 開啟服務(wù)
systemctl start firewalld.service
關(guān)閉防火墻
systemctl stop firewalld.service - 開機(jī)自動啟動
systemctl enable firewalld.service
關(guān)閉開機(jī)制動啟動
systemctl disable firewalld.service
- 啟動報錯
Failed to start firewalld.service: Unit is masked.
image.png - 執(zhí)行命令,即可實(shí)現(xiàn)取消服務(wù)的鎖定
systemctl unmask firewalld
- 使用firewall-cmd 命令
查看狀態(tài):running 表示運(yùn)行
firewall-cmd --state
獲取活動的區(qū)域firewall-cmd --get-active-zones
這條命令將用以下格式輸出每個區(qū)域所含接口:
<zone1>: <interface1> <interface2> ..<zone2>: <interface3> ..獲取所有支持的服務(wù)firewall-cmd --get-service
在不改變狀態(tài)的條件下重新加載防火墻:firewall-cmd --reload
- 開啟https或者某個端口
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 --permanent --zone=public --remove-port=8080-8081/tcp //永久
- 使用命令加載設(shè)置(
生效
)
firewall-cmd --reload
例如:
systemctl start firewalld.service
systemctl enable firewalld.service
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --permanent --zone=public --add-port=4000-20000/tcp
firewall-cmd --permanent --zone=public --list-ports
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload
- 查看開啟的端口和服務(wù)
firewall-cmd --permanent --zone=public --list-services //服務(wù)空格隔開 例如 dhcpv6-client https ss
firewall-cmd --permanent --zone=public --list-ports //端口空格隔開 例如 8080-8081/tcp 8388/tcp 80/tcp
效果如下:
image.png
- 設(shè)置某個ip 訪問某個服務(wù)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
ip 192.168.0.4/24 訪問 http
- 刪除上面設(shè)置的規(guī)則
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
- 檢查設(shè)定是否生效
iptables -L -n | grep 21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
執(zhí)行命令firewall-cmd --list-all
顯示:
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
查詢服務(wù)的啟動狀態(tài)
firewall-cmd --query-service ftp
yes
firewall-cmd --query-service ssh
yes
firewall-cmd --query-service samba
no
firewall-cmd --query-service http
no
自行加入要開放的 Port
firewall-cmd --add-port=3128/tcp
firewall-cmd --list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 3128/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
二、防火墻iptables
- 停止firewall
systemctl stop firewalld.service - 禁止firewall開機(jī)啟動
systemctl disable firewalld.service
- 安裝iptables
yum install iptables-services - 設(shè)置開機(jī)啟動、不啟動
systemctl enable iptables
systemctl disable iptables - 編輯防火墻文件 (建議都在配置文件配置,不要命令配置)
vi /etc/sysconfig/iptables
添加80和3306端口 等等(自己配置)
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT #80端口開放 - 重啟防火墻使配置文件生效
systemctl restart iptables.service
設(shè)置iptables防火墻為開機(jī)啟動項(xiàng)
systemctl enable iptables.service
service iptables start #啟動服務(wù)
service iptables stop #停止服務(wù)
service iptables restart #重啟服務(wù) - 關(guān)閉SELINUX
vi /etc/selinux/config #注釋以下配置
SELINUX=enforcing
SELINUXTYPE=targeted #增加以下配置
SELINUX=disabled #使配置立即生效
setenforce 0