1. 防火墻概述
- 目標(biāo):
- 封或開啟端口
- 封或開啟ip
2. 防火墻
2.1 防火墻種類及使用說明
- 硬件: 整個企業(yè)入口
- 三層路由: H3C 華為 Cisco(思科)
- 硬件防火墻: 深信服,綠盟,奇安信…
- 棱鏡門 0day. 勒索病毒。 國內(nèi)互聯(lián)網(wǎng)企業(yè)去IOE運動。
Juniper
- 軟件: 開源軟件 網(wǎng)站內(nèi)部 封ip 封ip
- iptables 寫入到Linux內(nèi)核中 以后服務(wù)docker 工作在 4層(大部分)
- firewalld C7 底層也是iptables.
- nftalbes C8
- ufw (ubuntu firewall) Ubuntu
- 云防火墻(公有云)
- 阿里云:
- 安全組 (封ip,封端口)
- NAT網(wǎng)關(guān)(共享上網(wǎng),端口映射…)
- waf應(yīng)用防火墻
- 阿里云:
- waf防火墻(應(yīng)用防火墻,處理7層的攻擊) SQL注入,等攻擊.
- 書寫規(guī)則(描述攻擊過程,關(guān)鍵提示,關(guān)鍵操作.)
企業(yè)選型建議:
中小企業(yè): 使用公有云,安全組,waf防火墻,態(tài)勢感知.
訪問量巨大: 使用硬件防火墻,waf防火墻,硬件服務(wù)器+云服務(wù)器
2.2 必須熟悉的名詞
- 容器: 瓶子 罐子 存放東西
- 表(table): 存放==鏈==的容器,防火墻最大概念
- 鏈(chain): 存放==規(guī)則==的容器
- 規(guī)則(policy): 準(zhǔn)許或拒絕規(guī)則 ,未來書寫的防火墻條件就是各種防火墻規(guī)則
掌握表和鏈之間聯(lián)系即可。
Netfilter | 表(tables) | 鏈(chains) | 規(guī)則(Policy) |
---|---|---|---|
一棟樓 | 樓里的房子 | 房子里的柜子 | 柜子里衣服,擺放規(guī)則 |
2.3 iptables 執(zhí)行過程※※※※※
工作流程小結(jié):※※※※※
- 防火墻是層層過濾的,實際是按照配置規(guī)則的順序從上到下,從前到后進行過濾的。
- 如果**匹配成功規(guī)則,即明確表示是拒絕(DROP)還是接收(ACCEPT)**,數(shù)據(jù)包就不再向下匹配新的規(guī)則。
- 如果規(guī)則中沒有明確表明是阻止還是通過的,也就是沒有匹配規(guī)則,向下進行匹配,直到**匹配默認(rèn)規(guī)則**得到明確的阻止還是通過。
- 防火墻的**默認(rèn)規(guī)則是所有規(guī)則都匹配完才會匹配的**。
2.4 表與鏈※※※※※
2.4.1 簡介
-
表(table)是對功能的分類,防火墻功能(filter表),共享上網(wǎng),端口轉(zhuǎn)發(fā)(nat表)
-
鏈對數(shù)據(jù)流進行處理,需要使用不同的鏈(數(shù)據(jù)流入(INPUT),數(shù)據(jù)流出(OUTPUT))
-
iptables 是4表5鏈
-
4表: filter 表 nat表 raw表 mangle表
-
伍鏈: INPUT OUTPUT FORWARD PREROUTING POSTROUTING
2.4.2 每個表說明
2.4.2.1 filter表 ??????????
- 是iptables默認(rèn)的表,filter表示過濾.
- 實現(xiàn)防火墻功能:(對數(shù)據(jù)包的filter過濾)屏蔽或準(zhǔn)許,端口,ip.
filter 表 | 強調(diào):主要和主機自身相關(guān),真正負(fù)責(zé)主機防火墻功能的(過濾流入流出主機的數(shù)據(jù)包) filter表示iptables默認(rèn)使用的表,這個表定義了三個鏈(chains) 企業(yè)工作場景:主機防火墻 |
---|---|
INPUT ?????????? | 負(fù)責(zé)過濾所有目標(biāo)地址是本機地址的數(shù)據(jù)包 通俗來說:就是過濾進入主機的數(shù)據(jù)包 (能否讓數(shù)據(jù)包進入服務(wù)器) |
FORWARD | 路過: 負(fù)責(zé)轉(zhuǎn)發(fā)流經(jīng)主機的數(shù)據(jù)包。起轉(zhuǎn)發(fā)的作用,和NAT關(guān)系很大,后面會詳細(xì)介紹 LVS NAT模式,net.ipv4.ip_forward=0 |
OUTPUT | 處理所有源地址是本機地址的數(shù)據(jù)包 通俗的講:就是處理從主機發(fā)出去的數(shù)據(jù)包 |
2.4.2.2 nat表
- 實現(xiàn)nat功能
- 實現(xiàn)共享上網(wǎng)(內(nèi)網(wǎng)服務(wù)器上外網(wǎng))
- 端口映射和ip映射
nat | 負(fù)責(zé)網(wǎng)絡(luò)地址轉(zhuǎn)換的,即來源與目的IP地址和port的轉(zhuǎn)換。 應(yīng)用:和主機本身無關(guān),一般用于局域網(wǎng)共享上網(wǎng)或者特殊的端口轉(zhuǎn)換服務(wù)相關(guān)。 工作場景: 1. 用于企業(yè)路由(zebra)或網(wǎng)關(guān)(iptables),共享上網(wǎng)(POSTROUTING) 2. 做內(nèi)部外部IP地址一對一映射(dmz),硬件防火墻映射IP到內(nèi)部服務(wù)器,ftp服務(wù)(PREROUTING) 3. WEB,單個端口的映射,直接映射80端口(PREROUTING) 這個表定義了3個鏈,nat功能相當(dāng)于網(wǎng)絡(luò)的acl控制。和網(wǎng)絡(luò)交換機acl類似。 |
---|---|
OUTPUT | 和主機放出去的數(shù)據(jù)包有關(guān),改變主機發(fā)出數(shù)據(jù)包的目的地址。 |
PREROUTING | 在數(shù)據(jù)包到達防火墻時,進行路由判斷之前執(zhí)行的規(guī)則,作用是改變數(shù)據(jù)包的目的地址、目的端口等 就是收信時,根據(jù)規(guī)則重寫收件人的地址。 例如:把公網(wǎng)IP:xxx.xxx.xxx.xxx映射到局域網(wǎng)的xx.xx.xx.xx服務(wù)器上。 如果是web服務(wù),可以報80轉(zhuǎn)換為局域網(wǎng)的服務(wù)器9000端口上 10.0.0.61 8080(目標(biāo)端口) ----nat—à 10.0.0.7 22 |
POSTROUTING | 在數(shù)據(jù)包離開防火墻時進行路由判斷之后執(zhí)行的規(guī)則,作用改變數(shù)據(jù)包的源地址,源端口等。 寫好發(fā)件人的地址,要讓家人回信時能夠有地址可回。 例如。默認(rèn)筆記本和虛擬機都是局域網(wǎng)地址,在出網(wǎng)的時候被路由器將源地址改為了公網(wǎng)地址。 生產(chǎn)應(yīng)用:局域網(wǎng)共享上網(wǎng)。 |
課外了解: 官方最全超級詳解傳送門
2.5 環(huán)境準(zhǔn)備及命令
iptables iptables啟動或關(guān)閉的命令
oldboy-bao 10.0.0.61 172.16.1.61
-
為了使用systemctl管理安裝的軟件:
yum install -y iptables-services
-
檢查結(jié)果
[root@oldboy-bao ~] rpm -qa |grep iptables iptables-services-1.4.21-35.el7.x86_64 #我們安裝的。 iptables-1.4.21-35.el7.x86_64 #系統(tǒng)自帶
-
啟動iptables 內(nèi)核模塊
手動加載iptables內(nèi)核模塊(直接復(fù)制到虛擬機上就好了) modprobe ip_tables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state
-
讓配置永久生效
chmod +x /etc/rc.d/rc.local cat >>/etc/rc.local<<EOF modprobe ip_tables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state EOF
-
檢查是否加載防火墻iptables 模塊
[root@oldboy-bao ~] lsmod |egrep 'filter|nat|ipt' nf_nat_ftp 12809 0 nf_conntrack_ftp 18478 1 nf_nat_ftp iptable_nat 12875 0 nf_nat_ipv4 14115 1 iptable_nat nf_nat 26583 2 nf_nat_ftp,nf_nat_ipv4 nf_conntrack 139264 6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4 iptable_filter 12810 0 ip_tables 27126 2 iptable_filter,iptable_nat libcrc32c 12644 3 xfs,nf_nat,nf_conntrack [root@oldboy-bao ~] lsmod |egrep 'filter|nat|ipt' |wc -l 9
-
關(guān)閉已有的firewalld防火墻:
systemctl stop firewalld
+systemctl disable firewalld
-
清空iptables自帶規(guī)則
- 查看規(guī)則:
iptables -t filter -nL
- 清空規(guī)則
iptables -t filter -F #flush清空規(guī)則 iptables -X #刪除定義的鏈。 iptables -Z #清空計數(shù)器。
- 查看規(guī)則:
2.6 案例01:??????????禁止訪問22端口
-
在filter表的INPUT連上新加1條拒絕規(guī)則,拒絕所有目標(biāo)端口是22的請求。
iptables -t filter -I INPUT -p tcp --dport 22 -j DROP iptables -t filter -nL --line-number #顯示規(guī)則并添加序號 iptables -t filter -D INPUT 1 #刪除filter表INPUT鏈的第1個規(guī)則
2.7 案例02: ??????????屏蔽對應(yīng)的ip
- DOS拒絕式服務(wù)攻擊。特點就是某幾個ip不斷訪問。
- 在filter表的INPUT鏈上添加拒絕規(guī)則,拒絕源ip是10.0.0.1的訪問。
屏蔽來自于10.0.0.1的訪問
iptables -I INPUT -s 10.0.0.1 -j DROP
iptables -t filter -nL --line-number #顯示規(guī)則并添加序號
iptables -t filter -D INPUT 1 #刪除filter表INPUT鏈的第1個規(guī)則
2.8 案例03:??????????禁ping
- 我們需要禁止任何人ping ip,讓用戶無法ping通。
- ping背后是使用icmp協(xié)議(數(shù)據(jù)包)。
- 實現(xiàn)方法:
-
??? ? 通過Iptables實現(xiàn)。
-
???通過Linux內(nèi)核參數(shù)實現(xiàn)。
iptables -I INPUT -p icmp -j DROP 開啟另一個機器ping。
-
2.9 案例04:??????禁止10.0.0.0/24內(nèi)網(wǎng)訪問22端口
- 實現(xiàn)22端口只能通過堡壘機訪問或只能通過內(nèi)網(wǎng)訪問。
- 未來可以改為只通過內(nèi)網(wǎng)訪問,準(zhǔn)許172.16.1.0/24訪問22端口。
- 翻譯:添加filter表INPUT鏈接拒絕規(guī)則,禁止源ip是10.0.0.0/24網(wǎng)段訪問目標(biāo)端口是22,協(xié)議tcp.
- 環(huán)境準(zhǔn)備
- 雙網(wǎng)卡 eth0 10, eth1 172(lan區(qū)段)
環(huán)境準(zhǔn)備 | 需求 | 細(xì)節(jié) |
---|---|---|
oldboy-bao | 雙網(wǎng)卡 | eth0 10(外網(wǎng)) eth1 172(內(nèi)網(wǎng)) |
oldboy-docker | 雙網(wǎng)卡 | eth0 10(外網(wǎng)) eth1 172(內(nèi)網(wǎng)) |
-
添加網(wǎng)卡設(shè)置lan區(qū)段:添加到和堡壘機相同的區(qū)段
-
書寫網(wǎng)卡配置文件
oldboy-docker [root@oldboy-docker ~] cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 NAME=eth1 BOOTPROTO=none ONBOOT=yes IPADDR=172.16.1.62 PREFIX=24 [root@oldboy-docker ~] systemctl restart network
-
配置規(guī)則之前測試
ssh -p22 10.0.0.61 #ctrl + d 退出 ssh -p22 172.16.1.61 都可以鏈接與訪問。
-
進行配置
翻譯:添加filter表INPUT鏈接拒絕規(guī)則,禁止源ip是10.0.0.0/24網(wǎng)段訪問目標(biāo)端口是22,協(xié)議tcp. iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j DROP
-
配置規(guī)則之后測試
ssh -p22 10.0.0.61 訪問失敗 ssh -p22 172.16.1.61 訪問成功 都可以鏈接與訪問。
經(jīng)過漫長等待,10網(wǎng)段訪問失敗。文章來源:http://www.zghlxwxcb.cn/news/detail-653906.html
2.10 案例05: ?? 指定多個端口屏蔽
- 禁止80,443訪問。
--dport默認(rèn)只能指定1個端口或指定端口范文 通過:(冒號)實現(xiàn)。 iptables -I INPUT -p tcp --dport 1:1024 -j DROP 使用multiport模塊,就可以指定多個端口 iptables -I INPUT -p tcp -m multiport --dport 80,443 -j DROP
2.11 案例06:?????????? 防火墻規(guī)則的保存生效與備份恢復(fù)
- 配置的防火墻規(guī)則重啟Linux或iptables服務(wù)后是否仍然生效
iptables -I INPUT -s 10.0.0.1 -j ACCEPT iptables -I INPUT -p icmp -j DROP iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
- 通過iptables-save輸出/etc/sysconfig/iptables文件
備份原有的 cp /etc/sysconfig/iptables{,.bak} iptables-save >/etc/sysconfig/iptables
- 恢復(fù)默認(rèn)配置: 讀取/etc/sysconfig/iptables文件并加載防火墻配置
systemctl restart iptables
2.12 案例07:???? 收尾設(shè)置鏈的默認(rèn)規(guī)則
???? 修改默認(rèn)規(guī)則之前,要測試之前的準(zhǔn)許的規(guī)則。文章來源地址http://www.zghlxwxcb.cn/news/detail-653906.html
iptables -t filter -P INPUT DROP
修改之后一點點添加放行規(guī)則
iptables -I INPUT -s 10.0.0.1 -j ACCEPT
iptables -I INPUT -p icmp -j DROP
iptables -I INPUT -s 10.0.0.0/24 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
# -i 數(shù)據(jù)進入的時候
iptables -A INPUT -i lo -j ACCEPT
# -o 數(shù)據(jù)流出的時候
iptables -A OUTPUT -o lo -j ACCEPT
#匹配連接狀態(tài)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #放行tcp連接狀態(tài)
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[root@oldboy-bao ~] iptables-save
# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*nat
:PREROUTING ACCEPT [2:458]
:INPUT ACCEPT [2:458]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Thu Aug 10 12:00:05 2023
# Generated by iptables-save v1.4.21 on Thu Aug 10 12:00:05 2023
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -s 10.0.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p icmp -j DROP
-A INPUT -s 10.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Thu Aug 10 12:00:05 2023
到了這里,關(guān)于網(wǎng)絡(luò)安全 Day29-運維安全項目-iptables防火墻的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!