防火牆:
保證數據的安全性是繼數據可用性以後的最爲重要的一項工做
防火牆做爲公網和內網之間的保護屏障
防火牆種類:
硬件防火牆:網關服務器
軟件防火牆:裝在操做系統中的軟件
防火牆管理工具
主要功能:依據策略對穿越防火牆的自身流量進行過濾。
在centos和RHEL系統中:
firewalld:7版本以上(centos7.x,RHEL7.x)
iptables:6版本(centos6.x,RHEL6.x)
注:iptables和firewalld都不是真正的防火牆,他們都只是定義防火牆策略的防火牆管理工具而已,或者說,他們只是一種服務
firewalld和iptables的區別:
iptables服務會把配置好的防火牆策略交給內核層的
netfilter網絡過濾器來處理
firewalld服務會把配置好的防火牆策略交給內核層的nftables包過濾框架來處理
firewalld和iptables的區別:
|
firewalld |
iptables |
配置文件 |
/usr/lib/firewalld/ 和 /etc/firewalld/ |
/etc/sysconfig/iptables |
對規則的修改 |
不須要所有刷新策略,不丟失現行鏈接 |
須要所有刷新策略,丟失鏈接 |
防火牆類型 |
動態防火牆 |
靜態防火牆 |
第一個防火牆管理工具——firewalld
centos1版本以上默認使用的防火牆配置管理工具
擁有基於CLI(命令行界面)和GUI(圖形化用戶界面)兩種管理方式。
定義:基於firewalld服務的防火牆會查詢每一個網絡數據包的頭部。
依據頭部中包含的信息,能夠配置規則來過濾每一個數據包。
經過網絡發送信息的過程:
信息在經過網絡發送以前,會被分解成更小的單元(稱爲數據包)。
數據包:數據類型、源ip地址、目標ip地址,還有源端口。
數據包經過網絡到達目的地,防火牆會檢查每個數據包的頭部的字段,按照已配置好的規則,去採起如下動做:
一、容許數據包進入系統
二、若是當前系統時網絡間的網關或者路由器,則將數據包轉發給其餘系統
三、對數據包的傳輸速率進行限制
四、拒絕數據包,並給原始ip地址發送一條消息
五、丟棄數據包,而且不發送任何類型的信息。
-----------------------以上都是有關firewalld的基本概念-------------------------------centos
相較於傳統的防火牆管理工具,firewalld支持動態更新技術,並加入了區域(zone)的概念
簡單來講,firewalld基於區域,區域就是firewalld預先準備了幾套防火牆策略的結合(策略模板),用戶能夠根據生產環境場景的不一樣選擇合適的策略集合
常見區域:
drop(丟棄) |
任何接收的網絡數據包都被丟棄,沒有任何回覆。僅能有發送出去的網絡鏈接 |
block(限制) |
任何接收的網絡鏈接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohited信息所拒絕 |
public(公共) |
在公共區域內使用,不能相信網絡的其餘計算機不會對寧的計算機形成危害,只能接收通過選取的鏈接 |
external(外部) |
特別是爲路由器啓用了假裝功能的外部網。您不能信任來自網絡的其餘計算,不能相信他們不會對您的計算機形成危害,只能接收通過選擇的鏈接 |
dmz(非軍事區) |
用於您的非軍事區內的電腦,此區域內可公開訪問,能夠有限地進入您的內部網絡,僅僅接收通過選擇的鏈接 |
work(工做) |
用於工做區。您能夠基本相信網絡內的其餘電腦不會危害您的電腦。僅僅接收過選擇的鏈接 |
home(家庭) |
用於家庭網絡。您能夠基本信任網絡內的其餘計算機不會危害您的計算機。僅僅接收通過選擇的鏈接 |
internal(內部) |
用於內部網絡。您能夠基本上信任網絡內的其餘計算機。僅僅接收通過限制的鏈接 |
trusted(信任) |
可接收全部的網絡鏈接 |
9大區域:trusted home internal work public external dmz block drop
常見區域元素:
interfaces(接口)網卡 |
與區域相關的網絡接口 |
sources(源地址) |
與區域相關的源ip地址 |
services(服務) |
容許經過區域的入戰服務 |
ports(端口) |
容許經過區域的目標端口 |
protocols(協議) |
目標端口的協議,tcp、udp |
masquerade(假裝) |
指定是否啓用源網絡地址轉換(NAT) |
forward-ports(轉發端口) |
端口轉發規則(將發送給本地端口的流量映射到同一臺或另外一臺主機上的其餘端口上) |
source-ports(源端口) |
|
icmp-blocks(ICMP堵塞) |
用於堵塞ICMP信息 |
rich rules(福規則) |
寫高級的防火牆規則 |
注:若是使用多個區域的話,必須有關聯源地址或接口
firewalld擁有兩種配置模式:
一、運行時配置(runtime) 當前生效模式,重啓會生效
二、永久配置模式(permanent) 不會當即生效,只會從新啓動或者重加載纔會生效。
firewalld配置方法:
一、firewall-cmd 命令行,終端管理工具
二、firewall-config 圖形化界面工具
三、/etc/firewalld中的配置文件
/etc/firewalld:用戶自定義配置文件存放目錄,能夠在、/usr/lib/firewalld中拷貝模板,優先讀取
/usr/bil/firewalld:默認配置文件
firewalld操做:
查看:
firewall-cmd --get-區域元素名 //查看指定的元素有哪些
firewall-cmd --get-default-zone //查看firewall默認區域
firewall-cmd --set-default-zone=區域名 //設置firewalld默認區域
firewalld默認區域是public區域
firewall-cmd --get-zones //列出全部fiewalld區域
注:firewall-cmd 是firewalld防火牆配置管理工具CLI版本使用的命令
永久生效:
firewall-cmd --set-default-zone=區域名 --permanent
firewall-cmd --get-active-zone //查看當前正在運行的區域
網卡
firewall-cmd --zone=work --add-interface=網卡名稱 //添加一塊網卡到指定區域中
firewall-cmd --get-zone-of-interfce=網卡名稱 //查看指定網卡所在區域
firewall-cmd --zone=work --change-interface=網卡名稱 //爲指定區域更改網卡
firewall-cmd --zone=work --remove-interface=網卡名稱 //爲指定區域刪除某塊網卡
firewall-cmd --zone=區域名 --query-unterface=網卡名稱 //判斷指定區域中有沒有該網卡
firewall-cmd --list-all-zones //查看全部區域裏面的詳細信息
firewall-cmd --zone=區域 --list-all // 查看指定區域的詳細信息
firewall-cmd --list-all 當沒有 --zone的選項,查看的是默認區域中詳細信息
源ip地址:
firewall-cmd --zone=work --add-source=源ip地址 爲指定區域添加源ip地址
firewall-cmd --zone=work --remove-source=源ip地址 爲指定區域刪除ip地址
寫一個富規則,規則內容爲:未來自192.168.80.0/24的訪問流量,從端口的80端口轉發到本地的25端口。
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.80.0/24 forward-port port=80 protocol=tcp to-port=25' --permanent
firewalld防火牆富規則,規則內容爲:未來自192.168.10.0/24的訪問流量,從端口的8080端口轉發到本地的5423端口
firewall-cmd --add-rich-rule=’rule family=ipv4 source address=192.168.10.0/24 forward-port port=8080 protocol=tcp toport=5423’ --permanent
firewalld防火牆富規則,規則內容爲:容許來自192.168.80.0/24的流量訪問http服務
firewall-cmd --add-rich-rule=’rule family=ipv4 source address=192.168.80.0/24 service name=http ACCEPT’
firewalld防火牆富規則,規則內容爲:拒絕來自192.168.90.0/24的流量訪問端口3260.
firewall-cmd --add-rich-rule=’rule family=ipv4 source address=192.168.90.0/24 port port=3260 protocol=tcp drop’
防火牆firewalld,將80端口,轉換爲2000端口:
firewall-cmd --add-forward-port=port=80:proto=tcp:to-port=2000 --permanent
在同一臺服務器中端口轉發:
firewall-cmd --add-forward-port=port=源端口:proto=協議:toport=目的端口
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80
在不一樣服務器上端口轉發:
firewall-cmd --add-forward-port=port=源端口:proto=協議:toport=目的端口:toaddr=目標服務器IP地址
192.168.80.101:8000至關於訪問192.168.80.101:80
例子:
192.168.80.105
firewall-cmd --add-forward-port=port=8000:proto=tcp:toport=80:toaddr=192.168.80.100
永久打開轉發功能:
方法一:(centos6和7)
echo 1 > /proc/sys/net/ipv4/ip_forward
方法二:(centos7)
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p //生效
iptables防火牆富規則:
一、讓內網經過外網卡上網
方法一:
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens37 -j SNAT --to 192.168.90.100
方法二:
iptables -t nat -A POSTROUTING -s 192.168.80.100 -o ens37 -j SNAT --to 192.168.90.100
注:192.168.80.100是內網卡ip地址
192.168.90.100是外網卡ip地址
客戶端和內網服務器必須都要指定網關,不然無效
二、當外部客戶端訪問外部地址(90.100)時,服務器將請求轉發給內網服務器(80.102)
iptables -t nat -A PREROUTING -i ens33 -d 192.168.90.100 -p tcp --dport 80 -j DNAT --to 192.168.80.102
注:一樣客戶端和內網服務器都須要網關
iptables策略,訪問192.168.90.100的時候,訪問的是192.168.80.101
iptables -t nat -A PREROUTING -i ens32 -d 192.168.90.100 -j DNAT --to-destination 192.168.80.101
備份保存:iptables-save > /opt/a.txt
還原:iptables-restore < /opt/a.txt
iptables -nL --line //查看 iptables 當前全部規則的命令
請求或禁止來自 10.0.0.188 ip 地址訪問 80 端口的請求
iptables -A INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP/ACCEPT
實現把訪問 10.0.0.8:80 的請求轉到 172.16.1.17:80
iptables -t nat -A PREROUTING -i ens32 -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80
實現 192.168.80.0/24 段全部主機經過 10.0.0.8 外網 IP 共享上網。
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens32 -j SNAT --to 10.0.0.8
禁止ping本機,可是本機能夠ping通其它主機
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables防火牆規則:當一個公網主機去訪問 服務器的外網口公網地址(80.182)的時候,服務器把請求轉發給內網真正提供服務的內網服務器(90.181)。
iptables -t nat -A PREROUTING -i ens33 -d 192.168.80.182 -j DNAT --to 192.168.90.181
實現172.16.1.0/24段全部主機經過124.32.54.26外網IP共享上網。
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o ens32 -j SNAT --to 124.32.54.26
未來自192.168.10.0/24的數據,其源地址轉換爲192.168.90.100
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens34 -j SNAT --to-source 192.168.90.100
iptables策略,訪問192.168.90.100的時候,訪問的是192.168.80.101
iptables -t nat -A PREROUTING -i ens32 -d 192.168.90.100 -j DNAT --to-destination 192.168.80.101
iptables防火牆規則: 拒絕轉發源地址是80網段的,目的地址是192.168.90.100,且協議是TCP21端口的數據包。
iptables -A INPUT -s 192.168.80.0/24 -d 192.168.90.100 -p tcp --dport 21 -j REJECT
拒絕192.168.0.0/24網段的1024-65534的源端口訪問SSH
iptables -A INPUT -p tcp -s 192.168.0.0/24 --sport 1024-65534 --dport ssh -j REJECT
寫一個防火牆配置腳本,只容許遠程主機訪問本機的80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -P INPUT DROP
拒絕源地址是80網段的,目的地址是90網段的,且協議是TCP的21端口的數據包。
iptables -I FORWARD -s 192.168.80.0/24 -d 192.168.90.0/24 -p tcp --dport 21 -j DROP/REJECT
禁止轉發源IP地址位於192.168.80.21與192.168.80.28之間的TCP數據包。
iptables -A FORWARD -m iprange --src-range 192.168.80.21-192.168.80.28 -p tcp -j DROP/REJECT
容許192.168.80.20到192.168.80.100的ip地址主機的ICMP流量可以訪問本服務器
iptables -A INPUT -p icmp -m iprange --src-range 192.168.80.20-192.168.80.100 -j ACCEPT
iptables的匹配類型:
通用匹配:協議-p,-s,-d,-i,-o
隱含匹配:--sport,--dport,TCP協議標記,icmp類型
顯式匹配:多端口,mac地址,ip地址範圍,數據包狀態
iptables控制類型有哪些:
ACCEPT 容許
REJECT 拒絕
DROP 丟棄
LOG 記錄日誌
iptables中規則、規則鏈、規則表的關係:
多條規則組成規則鏈,規則鏈在規則表中,規則鏈中設置默認策略。
將nat的默認策略設置爲drop:
iptables -t nat -P INPUT DROP
刪除nat表OUTPUT鏈中的第5條策略:
iptables -t nat -D OUTPUT 5
iptables -t nat -F OUTPUT