Linux防火墻配置及iptables與firewalld的使用解讀
更新時(shí)間:2025年01月13日 10:18:29 作者:火苗06
防火墻是一種網(wǎng)絡(luò)安全設(shè)備,通過規(guī)則控制進(jìn)出網(wǎng)絡(luò)的訪問行為,它分為硬件防火墻和軟件防火墻兩大類,iptables是Linux系統(tǒng)中用于配置防火墻的工具,具有4個(gè)表和5個(gè)鏈,firewall命令用于配置和管理防火墻,有drop、block、public、external、dmz等不同的區(qū)域配置
1 防火墻定義
- 防火墻是一種高級訪問控制設(shè)備,置于不同網(wǎng)絡(luò)安全域之間,他通過相關(guān)的安全策略來控制(允許,拒絕,監(jiān)視,記錄)進(jìn)出網(wǎng)絡(luò)的訪問行為。
- 防火墻是一組規(guī)則,當(dāng)數(shù)據(jù)包進(jìn)出受保護(hù)的網(wǎng)絡(luò)區(qū)域時(shí),進(jìn)出內(nèi)容(特別是關(guān)于其來源、目標(biāo)和使用的協(xié)議等信息)會根據(jù)防火墻規(guī)則進(jìn)行檢測,以確定是否允許其通過。
2 防火墻分類
- 硬件防火墻
- 軟件防火墻
- 主機(jī)防火墻
- 網(wǎng)絡(luò)防火墻
3 iptables
3.1 iptables 四表五鏈
3.1.1 功能(表)
filter
:防火墻過濾數(shù)據(jù)包,默認(rèn)表nat
:網(wǎng)絡(luò)地址轉(zhuǎn)換(network address translation)mangle
:拆分,做出修改raw
:關(guān)閉nat表上啟用的連接追蹤功能
3.1.2 鏈
PREROUTING (previous routing路由前) INPUT OUTPUT FORWARD POSTROUTING (postpone routing路由后)
3.1.3 功能(表)中的鏈
filter:INPUT,FORWARD,OUTPUT nat:PREROUT(DNAT),INPUT,OUTPUT,POSTROUTING(SNAT) mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING raw:PREROUTING,OUTPUT
3.2 優(yōu)先級
策略應(yīng)用優(yōu)先級:raw,mangle,nat,filter 策略常用優(yōu)先級:filter,nat,mangle,raw
3.3 iptables 命令的使用
iptables工具: -t:指定表 -L:查看規(guī)則 -n:以數(shù)字形式查看 -F:清空所有規(guī)則 -X:清除自定義鏈 -P:指定鏈的默認(rèn)規(guī)則 -j:指定要執(zhí)行的動作 ACCEPT:接受 DROP:丟棄 REJECT:拒絕 DNAT:目標(biāo)地址轉(zhuǎn)換 SNAT:源地址轉(zhuǎn)換 -A:append追加策略 -s:source源ip(網(wǎng)段) -d:destination目標(biāo)ip(網(wǎng)段) -I:insert插入策略 -p:protocol指定協(xié)議 --dport:指定目標(biāo)端口 --sport:指定源端口 --line-num:顯示規(guī)則行號 -D:按照行號刪除某鏈中的規(guī)則 -i:指定網(wǎng)卡
3.3.1 filter表
清空所有策略: iptables -F 清空自定義鏈: iptables -X 自定義一個(gè)鏈 iptables -N old_forward 修改自定義鏈的名字 iptables -E old_forward new_forward 把filter中forward鏈的默認(rèn)策略打成drop iptables -P FORWARD DROP 查看filter表中的策略并且顯示行數(shù): iptables -L -n --line-number 刪除filter表中forward鏈中的第9條策略: iptables -t filter -D FORWARD 9 #限制所有主機(jī)(0.0.0.0)拒絕ping本主機(jī) iptables -t filter -A INPUT -s 0.0.0.0 -d 192.168.254.24 -p icmp -j REJECT #顯示所有主機(jī)(0.0.0.0)拒絕通過ens33網(wǎng)卡ping本主機(jī) iptables -t filter -A INPUT -d 192.168.254.24 -i ens33 -p icmp -j REJECT #只允許10.159.32.65訪問本地80端口 iptables -I INPUT -p TCP --dport 80 -j DROP //拒絕所有機(jī)器訪問 iptables -I INPUT -s 10.159.32.65-p TCP --dport 80 -j ACCEPT //對某個(gè)ip放行 或 iptables -P INPUT -j DROP //設(shè)置INPUT鏈的默認(rèn)規(guī)則 iptables -I INPUT -s 10.159.32.65-p TCP --dport 80 -j ACCEPT //對某個(gè)ip放行
3.3.2 nat表
##開啟轉(zhuǎn)發(fā)模式 ╭─root@localhost.localdomain ~ ╰─? cat /proc/sys/net/ipv4/ip_forward 0 ╭─root@localhost.localdomain ~ ╰─? echo 1 > /proc/sys/net/ipv4/ip_forward 或者 # vim /etc/sysctl.conf ... net.ipv4.ip_forward = 1 ... # sysctl -p
#源地址為192.168.250.0網(wǎng)段的ip地址經(jīng)過防火墻都轉(zhuǎn)換成192.168.31.100這個(gè)ip地址(SNAT:源地址轉(zhuǎn)換) iptables -t nat -A POSTROUTING -s 192.168.250.0/24 -d 192.168.250.0/24 -j SNAT --to-source 192.168.31.100 ------------------------------------------------------- #訪問目標(biāo)地址為192.168.31.200這個(gè)機(jī)器并且是tcp協(xié)議80號端口的都轉(zhuǎn)發(fā)給192.168.250.1(DNAT目標(biāo)地址轉(zhuǎn)換) iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.250.1:80 ------------------------------------------------------- #訪問目標(biāo)地址為192.168.31.200這個(gè)機(jī)器并且是tcp協(xié)議80號端口的都轉(zhuǎn)發(fā)給192.168.31.100的9999號端口(DNAT目標(biāo)端口地址轉(zhuǎn)換) iptables -t nat -A PREROUTING -d 192.168.31.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.31.100:9999
4 firewall相關(guān)配置使用
firewall-cmd --state #查看狀態(tài) firewall-cmd --list-all #查看過濾的列表信息 firewall-cmd --add-port=80/tcp --permanent #永久添加一個(gè)80端口(重啟生效) firewall-cmd --remove-port=4444/tcp #移除4444/tcp端口 firewall-cmd --reload #重新加載firewall
firewall 有zone的概念
[root@node1 ~]# firewall-cmd --get-zones work drop internal external trusted home dmz public block
drop
(丟棄) 任何接收到的網(wǎng)絡(luò)數(shù)據(jù)都被丟棄,沒有任何回復(fù),公有發(fā)送出去的網(wǎng)絡(luò)連接block
(限制)任何接收的網(wǎng)絡(luò)連接都被IPV4 的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒絕public
(公共) 在公共區(qū)域內(nèi)使用,不能相信網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會對你的計(jì)算機(jī)造成危害,只接收經(jīng)過選取的連接external
(外部)特別是為路由器啟用了偽裝功能的外部網(wǎng)。你不能信任來自網(wǎng)絡(luò)的其它計(jì)算,不能信任它們不會對你的計(jì)算機(jī)造成危害,只能接收經(jīng)過選擇的連接。dmz
(非軍事區(qū)) 用于你的非軍事區(qū)的電腦 ,此區(qū)域內(nèi)可公開訪問,可以有限的進(jìn)入你的內(nèi)部網(wǎng)絡(luò),僅接收經(jīng)過選擇的連接。work
(工作) 可以基本信任網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會危害你的計(jì)算機(jī),僅接收經(jīng)過選擇的連接。home
(家庭) 用于家庭網(wǎng)絡(luò),可以基本信任網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會危害你的計(jì)算機(jī),僅接收經(jīng)過選擇的連接。internal
(內(nèi)部)用于內(nèi)部網(wǎng)絡(luò),可以基本信任網(wǎng)絡(luò)內(nèi)的其它計(jì)算機(jī)不會危害你的計(jì)算機(jī),僅接收經(jīng)過選擇的連接trusted
(信任) 可接收所有的網(wǎng)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)現(xiàn)一臺或者多臺Linux實(shí)例解綁SSH密鑰對
在本篇文章中我們給大家分享了一篇如何為一臺或者多臺 Linux 實(shí)例解綁 SSH 密鑰對的相關(guān)內(nèi)容,有興趣的朋友們學(xué)習(xí)下。2018-10-10Linux加入windows ad域步驟詳解(winbindsamba方案)
本文主要實(shí)驗(yàn)centos加入windows AD的方法,大家參考使用2013-12-12Apache?Flink?如何保證?Exactly-Once?語義(其原理分析示例)
Apache?Flink?是一個(gè)流處理和批處理的開源平臺,它提供了豐富的語義保證,其中之一就是?Exactly-Once?語義,本文將深入探討?Flink?是如何保證?Exactly-Once?語義的,包括其原理分析和相關(guān)示例,感興趣的朋友跟隨小編一起看看吧2024-06-06