一、redhat7中防火牆的配置和使用
RHEL7 雖然仍有
iptables
,但不建議使用了,而是使用新的firewalld
服務。
1.systemctl:redhat7中使用了firewalld代替了原來的iptables
systemctl unmask firewalld #執行命令,即可實現取消服務的鎖定
systemctl mask firewalld # 下次需要鎖定該服務時執行
systemctl start firewalld.service #啓動防火牆
systemctl stop firewalld.service #停止防火牆
systemctl reloadt firewalld.service #重載配置
systemctl restart firewalld.service #重啓服務
systemctl status firewalld.service #顯示服務的狀態
systemctl enable firewalld.service #在開機時啓用服務
systemctl disable firewalld.service #在開機時禁用服務
systemctl is-enabled firewalld.service #查看服務是否開機啓動
systemctl list-unit-files|grep enabled #查看已啓動的服務列表
systemctl --failed #查看啓動失敗的服務列表
2.防火牆常用命令:
常用命令介紹
firewall-cmd --version ##查看版本
firewall-cmd --state ##查看防火牆狀態,是否是running
firewall-cmd --reload ##重新載入配置,更新防火牆規則,執行結果success
firewall-cmd --list-all ##查看防火牆所有配置情況
firewall-cmd --list-ports ##查看所有打開的端口
firewall-cmd --list-services ##查看所有允許的服務
firewall-cmd --get-services ##獲取所有支持的服務,在列表中的服務是放行的
firewall-cmd --query-service ftp ##查看ftp服務是否支持,返回yes或者no
firewall-cmd --zone=public --list-ports ##查看所有打開的端口
#區域相關
firewall-cmd --list-all-zones ##查看所有區域信息
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-active-zones ##查看活動區域信息
firewall-cmd --get-zone-of-interface=eth0 ##查看指定接口所屬區域
firewall-cmd --set-default-zone=public ##設置public爲默認區域
firewall-cmd --get-default-zone ##查看默認區域信息
firewall-cmd --zone=public --add-interface=eth0 ##將接口eth0加入區域public
#開飯服務或端口
firewall-cmd --add-service=ftp ##臨時開放ftp服務
firewall-cmd --add-service=ftp --permanent ##永久開放ftp服務
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服務
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看規則,這個命令是和iptables的相同的
firewall-cmd --help ##查看幫助
man firewall-cmd ##查看幫助
firewall-cmd --panic-on ##拒絕所有包
firewall-cmd --panic-off ##取消拒絕狀態
firewall-cmd --query-panic ##查看是否拒絕
#接口相關
firewall-cmd --zone=public --remove-interface=eth0 #從區域public中刪除接口eth0
firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所屬區域爲default
firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所屬區域
#端口控制
firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久刪除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(區域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久刪除80端口例外(區域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(區域public)
firewall-cmd --query-port=8080/tcp # 查詢端口是否開放
firewall-cmd --permanent --add-port=80/tcp # 開放80端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload #重啓防火牆(修改配置後要重啓防火牆)
-------------------------------------示例--------------------------------------------
# 添加服務端口
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和訪問類型) --permanent(永久生效)
firewall-cmd --zone=public(作用域) --add-service=http(服務) --permanent(永久生效)
firewall-cmd --reload # 重新載入,更新防火牆規則
firewall-cmd --zone= public --query-port=80/tcp #查看
# 刪除
firewall-cmd --zone= public --remove-port=80/tcp --permanent # 刪除
# 控制IP段訪問
# firewall-cmd --list-all 查看 默認是允許所有的訪問
# firewall-cmd --permanent --remove-service=ssh 禁掉
# firewall-cmd --permanent --add-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.1.0/24 accept' 允許訪問
# firewall-cmd --permanent --add-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.2.0/24 reject' 拒絕訪問
# firewall-cmd --reload 重啓一下
# firewall-cmd --list-all 在看一下變化。
# firewall-cmd --permanent --remove-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.1.0/24 accept' 刪除策略
## 檢查設置是否生效
iptables -L -n | grep 21
## 設置黑/白名單
firewall-cmd --permanent --zone=trusted --add-source=ip 執行結果success
## 重新加載配置
firewall-cmd --reload # 執行結果success
## 列出白名單
firewall-cmd --permanent --zone=trusted --list-sources 執行結果所有的ip
## 刪除所有
firewall-cmd --zone=drop --list-all 需要重新加載配置
## 刪除指定
firewall-cmd --permanent --zone=drop --remove-source=ip 需要重新加載配置
參數解釋 :
–add-service #添加的服務
–zone #作用域
–add-port=80/tcp #添加端口,格式爲:端口/通訊協議
–permanent #永久生效,沒有此參數重啓後失效
3.開啓端口
# 開啓端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 命令含義:
--zone #作用域
--add-port=80/tcp #添加端口,格式爲:端口/通訊協議
--permanent #永久生效,沒有此參數重啓後失效
二、iptables 使用(Redhat7 以下版本)
yum install iptables-services #安裝iptables
systemctl stop firewalld.service #停止firewalld
systemctl mask firewalld.service #禁止自動和手動啓動firewalld
systemctl start iptables.service #啓動iptables
systemctl start ip6tables.service #啓動ip6tables
systemctl enable iptables.service #設置iptables自啓動
systemctl enable ip6tables.service #設置ip6tables自啓動
- iptables 語法:
iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> –sport 源端口 <-d 目標IP/目標子網> –dport 目標端口 -j 動作
-t<表>:指定要操縱的表;
-A:向規則鏈中添加條目;
-D:從規則鏈中刪除條目;
-i:向規則鏈中插入條目;
-R:替換規則鏈中的條目;
-L:顯示規則鏈中已有的條目;
-F:清楚規則鏈中已有的條目;
-Z:清空規則鏈中的數據包計算器和字節計數器;
-N:創建新的用戶自定義規則鏈;
-P:定義規則鏈中的默認目標;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型;
-m:加載其他模塊功能;
-s:指定要匹配的數據包源ip地址;
-j<目標>:指定要跳轉的目標;
-i<網絡接口>:指定數據包進入本機的網絡接口;
-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。
1.開放80,22,8080 端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存
/etc/rc.d/init.d/iptables save
3.查看打開的端口
/etc/init.d/iptables status
4.關閉防火牆
1) 永久性生效,重啓後不會復原
開啓: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啓後復原
開啓: service iptables start
關閉: service iptables stop
————————————————
版權聲明:本文參考爲CSDN博主「朽木o0」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/s_p_j/article/details/80979450