CentOS7防火牆firewalld操做

firewalld Linux上新用的防火牆軟件,跟iptables差很少的工具。html

firewall-cmdfirewalld 的字符界面管理工具,firewalldCentOS7的一大特性,最大的好處有兩個:支持動態更新,不用重啓服務;第二個就是加入了防火牆的 zone 概念。linux

firewalldiptables比起來至少有兩大好處:ssh

  1. firewalld能夠動態修改單條規則,而不須要像iptables那樣,在修改了規則後必須得所有刷新才能夠生效。
  2. firewalld在使用上要比iptables人性化不少,即便不明白「五張表五條鏈」並且對TCP/IP協議也不理解也能夠實現大部分功能。

firewalld自身並不具有防火牆的功能,而是和iptables同樣須要經過內核的netfilter來實現,也就是說firewalldiptables同樣,他們的做用都是用於維護規則,而真正使用規則幹活的是內核的netfilter,只不過firewalldiptables的結 構以及使用方法不同罷了。tcp

安裝啓動

# 安裝firewalld
yum install firewalld firewall-config

# 開機啓動
systemctl enable firewalld

# 禁止開機啓動
systemctl disable firewalld

# 啓動/中止/重啓 firewalld
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld

# 查看狀態
systemctl status firewalld

# 或者經過  firewall-cmd 查看狀態
firewall-cmd --state

固然你也能夠換會iptables工具

yum install iptables-services
systemctl start iptables
systemctl enable iptables

查看狀態

firewall-cmd --version  # 查看版本
firewall-cmd --help     # 查看幫助

# 查看設置:
firewall-cmd --state  # 顯示狀態
firewall-cmd --get-active-zones  # 查看區域信息
firewall-cmd --get-zone-of-interface=eth0  # 查看指定接口所屬區域
firewall-cmd --panic-on  # 拒絕全部包
firewall-cmd --panic-off  # 取消拒絕狀態
firewall-cmd --query-panic  # 查看是否拒絕
firewall-cmd --permanent --list-all # 查看被firewalld容許的服務

經常使用操做

服務管理

Amanda, FTP, Samba和TFTP等最重要的服務已經被FirewallD提供相應的服務,可使用以下命令查看:.net

# 顯示服務列表
firewall-cmd --get-services

# 容許SSH服務經過
firewall-cmd --enable service=ssh

# 禁止SSH服務經過
firewall-cmd --disable service=ssh

# 打開TCP的8080端口
firewall-cmd --enable ports=8080/tcp

# 臨時容許Samba服務經過600秒
firewall-cmd --enable service=samba --timeout=600

# 顯示當前服務
firewall-cmd --list-services

# 添加HTTP服務到內部區域(internal)
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload     # 在不改變狀態的條件下從新加載防火牆

端口管理

# 打開443/TCP端口
firewall-cmd --add-port=443/tcp

# 永久打開3690/TCP端口
firewall-cmd --permanent --add-port=3690/tcp

# 永久打開端口須要reload一下,臨時打開不用,若是用了reload臨時打開的端口就失效了
firewall-cmd --reload

# 查看防火牆,添加的端口也能夠看到
firewall-cmd --list-all

能夠經過兩種方式控制端口的開放,一種是指定端口號另外一種是指定服務名。雖然開放 http 服務就是開放了 80 端口,可是仍是不能經過端口號來關閉,也就是說經過指定服務名開放的就要經過指定服務名關閉;經過指定端口號開放的就要經過指定端口號關閉。還有一個要注意的就是指定端口的時候必定要指定是什麼協議,tcp 仍是 udp。知道這個以後之後就不用每次先關防火牆了,可讓防火牆真正的生效。rest

重載規則

firewall-cmd --reload # 更新防火牆規則
firewall-cmd --complete-reload
# 二者的區別就是第一個無需斷開鏈接,就是firewalld特性之一動態添加規則,第二個須要斷開鏈接,相似重啓服務

直接模式

Firewall 包括一種直接模式,使用它能夠完成一些工做,例如打開TCP協議的9999端口code

firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
firewall-cmd --reload

假裝 IP

firewall-cmd --query-masquerade # 檢查是否容許假裝IP
firewall-cmd --add-masquerade   # 容許防火牆假裝IP
firewall-cmd --remove-masquerade# 禁止防火牆假裝IP

端口轉發

端口轉發能夠將指定地址訪問指定的端口時,將流量轉發至指定地址的指定端口。轉發的目的若是不指定 ip 的話就默認爲本機,若是指定了 ip 卻沒指定端口,則默認使用來源端口。 若是配置好端口轉發以後不能用,能夠檢查下面兩個問題:htm

好比我將 80 端口轉發至 8080 端口,首先檢查本地的 80 端口和目標的 8080 端口是否開放監聽了 其次檢查是否容許假裝 IP,沒容許的話要開啓假裝 IPblog

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 將80端口的流量轉發至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 # 將80端口的流量轉發至192.168.0.1
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 將80端口的流量轉發至192.168.0.1的8080端口

當咱們想把某個端口隱藏起來的時候,就能夠在防火牆上阻止那個端口訪問,而後再開一個不規則的端口,以後配置防火牆的端口轉發,將流量轉發過去。 端口轉發還能夠作流量分發,一個防火牆拖着好多臺運行着不一樣服務的機器,而後用防火牆將不一樣端口的流量轉發至不一樣機器。

連接

  1. CentOS7防火牆firewalld的配置
  2. firewall-cmd
相關文章
相關標籤/搜索