Linux-firewalld-squid正向代理
之前的服務(wù)都是簡(jiǎn)單粗暴的將防火墻直接關(guān)閉后(systemctl stop fireawalld),提供服務(wù),這樣太奔放對(duì)身體不好!因此需要使用firewall-cmd命令更加精細(xì)化的管理。
【CLI】
準(zhǔn)備工作:
-
?確保iptables未安裝或者服務(wù)未啟動(dòng)
?
-
systemctl status iptables 查看是否開(kāi)啟,我這臺(tái)沒(méi)安裝iptables所以not be foubd
-
如果安裝了那可以通過(guò)
-
systemctl stop iptables?命令關(guān)閉
-
?systemctl start firewalld 開(kāi)啟防火墻
開(kāi)始操作
?安裝apache服務(wù),并對(duì)外提供測(cè)試頁(yè)面(漂亮網(wǎng)頁(yè))服務(wù)。
yum install -y httpd
沒(méi)提示最后的已安裝就是你得yum倉(cāng)庫(kù)有問(wèn)題或者需要
重新掛載:mount /dev/cdrom /mnt 再次嘗試安裝
?systemctl start httpd 開(kāi)啟httpd
systemctl status httpd? 查詢開(kāi)啟狀態(tài)
瀏覽器輸入apache服務(wù)的ip訪問(wèn)測(cè)試頁(yè)打不開(kāi)
netstat -npl |grep httpd? ? 查看到服務(wù)器已經(jīng)開(kāi)啟了80端口的監(jiān)聽(tīng)
firewall-cmd? --get-default-zone? ?查看服務(wù)器所在的區(qū)域zone
使用命令
firewall-cmd --zone=public --query-service=http
查看在public區(qū)域是否語(yǔ)序http流量進(jìn)入?
答案是no
因此需要使用命令放通http流量
firewall-cmd --zone=public --add-service=http
?
再次使用命令
firewall-cmd --zone=public --query-service=http
查看在public區(qū)域是否語(yǔ)序http流量進(jìn)入?
此時(shí)為yes
?
再次訪問(wèn),發(fā)現(xiàn)可以了
?
但是是臨時(shí)放通!!!
使用命令查看是否是永久放通?
firewall-cmd? --permanent --zone=public --query-service=http
是no的,需要手動(dòng)輸入命令開(kāi)啟,不然每次都次重啟服務(wù)都需要再臨時(shí)關(guān)閉一次,極其繁瑣!
?
?firewall-cmd? --permanent --zone=public --add-service=http
?但是此時(shí)無(wú)法立刻生效,需要使用命令? ?
firewall-cmd --reload
重啟防火墻服務(wù)
?
重啟服務(wù)依舊可以訪問(wèn)
firewall-cmd --reload
安裝vsftpd服務(wù)
yum install -y vsftpd
?
不能安裝請(qǐng)重新掛載:mount /dev/cdrom? ?/mnt? 或者檢查yum倉(cāng)庫(kù)repo文件配置:點(diǎn)我查看yum配置文章
查看啟動(dòng)狀態(tài)為關(guān)
?
systemctl start vsftpd? ?//啟動(dòng)vsftpd服務(wù)
systemctl status vsftpd? ? //查看服務(wù)狀態(tài)
?
netstat -npl |grep vsftpd? ?
?服務(wù)器已經(jīng)開(kāi)啟了21端口的監(jiān)聽(tīng)
?
但是可以ping通卻不可以訪問(wèn)登陸ftp
?
firewall-cmd --permanent --zone=public --add-service=ftp? //永久允許ftp連接
firewall-cmd --reload? //重啟防火墻
登陸失敗
?
關(guān)閉SELinux,那么此時(shí)就可以進(jìn)行查看與上傳下載了。
setenforce 0
我是用子賬戶(mamublog)進(jìn)行登陸上傳,可以登陸上傳
安裝BIND服務(wù),并對(duì)外提供域名解析服務(wù)
yum install -y bind-chroot.x86_64
不能安裝請(qǐng)重新掛載:mount /dev/cdrom? ?/mnt? 或者檢查yum倉(cāng)庫(kù)repo文件配置:點(diǎn)我查看yum配置文章
修改主配置文件
vim /etc/named.conf
使用
named-checkconf 查看主配置文件修改是否有誤,沒(méi)報(bào)錯(cuò)即可
修改區(qū)域配置文件
vim? /etc/named.rfc1912.zones
輸入或者復(fù)制添加以下內(nèi)容
?
zone "mamublog.com" IN {
? ? ? ? type master;
? ? ? ? file "mamu-zone";
? ? ? ? allow-update { none; };
};
再次使用
named-checkzone?
無(wú)報(bào)錯(cuò)即可
cd /var/named?
cp named.localhost mamu-zone? //我們可以從/var/named目錄中復(fù)制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的對(duì)應(yīng)數(shù)據(jù)填寫(xiě)數(shù)據(jù)配置文件中并保存。
更改后wq保存
?
systemctl restart named 回車(chē)沒(méi)報(bào)錯(cuò)即為重啟成功
?
?
netstat -npl |grep dns? 查看dns監(jiān)聽(tīng)端口
使用另一臺(tái)電腦win7設(shè)置dns為dns服務(wù)器地址192.168.192.136
發(fā)現(xiàn)解析不了
原因是防火墻關(guān)處于開(kāi)啟狀態(tài),但是并且允許53號(hào)端口被訪問(wèn)。
?
使用以下命令
firewall-cmd --permanent --zone=public --add-service=dns
firewall-cmd --reload
firewall-cmd --zone=public --query-service=dns
再次嘗試可以了
?
【GUI模式】
我們總是要考慮有些人是非命令敏感形的,更多是圖像敏感形式的。所以firewall的GUI格式一定是你的首選。
輸入
firewall-config
?
幾大福利
它是firewalld防火墻配置管理工具的GUI(圖形用戶界面)版本,幾乎可以實(shí)現(xiàn)所有以命令行來(lái)執(zhí)行的操作,因此可以告別那些令人害喜的長(zhǎng)格式命令;
即使讀者沒(méi)有扎實(shí)的Linux命令基礎(chǔ),也完全可以通過(guò)它來(lái)妥善配置RHEL 7中的防火墻策略;
功能如下圖所示
可以發(fā)現(xiàn)之前手打的配置的內(nèi)容已經(jīng)被“同步”過(guò)來(lái)了
所以如果需要修改,例如需要放通某個(gè)服務(wù)(https)
先確認(rèn)的確未開(kāi)放
?
firewall-cmd --zone=public --query-service=https
發(fā)現(xiàn)是no即為關(guān)閉
重啟防火墻
firewall-cmd --zone=public --query-service=https
發(fā)現(xiàn)是yes即為開(kāi)啟
?
【使用GUI開(kāi)啟SNAT模式】
iptables的SNAT模式是在nat表中的POSTROUTING規(guī)則鏈中給完成,配置命令令人絕望。
firewalld的SNAT相對(duì)而言比較友好,再結(jié)合GUI那簡(jiǎn)直如虎添翼。
windows 7(僅主機(jī)模式)
自動(dòng)獲取分配到192.168.192.134
確保能ping通網(wǎng)關(guān),一般.1
?
RHEL/CentOS 7(橋接)(僅主機(jī)模式)
開(kāi)啟ip轉(zhuǎn)發(fā)
重啟防火墻
? ? ? ? ? ? ? ? ? ?
將僅主機(jī)的win7更改Ip為手動(dòng),ip一樣為剛才獲取的,網(wǎng)關(guān)改為開(kāi)啟ip轉(zhuǎn)發(fā)的電腦ip? ? ? ? ? ?
百度正常打開(kāi)
squid部分
使用squid和firewalld
完成一個(gè)用戶緩存上網(wǎng)的場(chǎng)景,并且針對(duì)網(wǎng)址中所有帶有ruijie的均禁止訪問(wèn)
1、內(nèi)網(wǎng)用戶經(jīng)常訪問(wèn)某個(gè)網(wǎng)站,
每次訪問(wèn)均需要重新下載,使得效率較低、帶寬浪費(fèi)
2、用戶在工作的時(shí)候無(wú)法總是無(wú)心戀戰(zhàn),經(jīng)常訪問(wèn)一些中繼器網(wǎng)站,老板苦不堪言
?
【解決方法】
1、增大帶寬,替換高端設(shè)備,管理手段(裁員)
2、使用用戶上網(wǎng)行為管理設(shè)備
3、使用緩存技術(shù)(例如Squid)
啥是squid
?
?Squid是Linux系統(tǒng)中最為流行的一款高性能代理服務(wù)軟件,通常用作Web網(wǎng)站的前置緩存服務(wù),能夠代替用戶向網(wǎng)站服務(wù)器請(qǐng)求頁(yè)面數(shù)據(jù)并進(jìn)行緩存。簡(jiǎn)單來(lái)說(shuō),Squid服務(wù)程序會(huì)按照收到的用戶請(qǐng)求向網(wǎng)站源服務(wù)器請(qǐng)求頁(yè)面、圖片等所需的數(shù)據(jù),并將服務(wù)器返回的數(shù)據(jù)存儲(chǔ)在運(yùn)行Squid服務(wù)程序的服務(wù)器上。當(dāng)有用戶再請(qǐng)求相同的數(shù)據(jù)時(shí),則可以直接將存儲(chǔ)服務(wù)器本地的數(shù)據(jù)交付給用戶,這樣不僅減少了用戶的等待時(shí)間,還緩解了網(wǎng)站服務(wù)器的負(fù)載壓力。
????????Squid服務(wù)程序具有配置簡(jiǎn)單、效率高、功能豐富等特點(diǎn),它能支持HTTP、FTP、SSL等多種協(xié)議的數(shù)據(jù)緩存,可以基于訪問(wèn)控制列表(ACL)和訪問(wèn)權(quán)限列表(ARL)執(zhí)行內(nèi)容過(guò)濾與權(quán)限管理功能,還可以基于多種條件禁止用戶訪問(wèn)存在威脅或不適宜的網(wǎng)站資源,因此可以保護(hù)企業(yè)內(nèi)網(wǎng)的安全,提升用戶的網(wǎng)絡(luò)體驗(yàn),幫助節(jié)省網(wǎng)絡(luò)帶寬。
正向代理之 標(biāo)準(zhǔn)正向代理模式
18-2(CentOS7)(僅主機(jī)模式)?
18-1(CentOS 7)僅主機(jī)模式)(橋接)
還原主機(jī)到一清二白
?
不能安裝請(qǐng)重新掛載:mount /dev/cdrom? ?/mnt? 或者檢查yum倉(cāng)庫(kù)repo文件配置:點(diǎn)我查看yum配置文章
yum install -y squid
設(shè)置18-2(僅主機(jī)模式)?dns為114.114.114.114
發(fā)現(xiàn)設(shè)置了公網(wǎng)DNS IP還是無(wú)法上網(wǎng)
確保18-1可以正常訪問(wèn)外網(wǎng)(僅主機(jī)和橋接)所以可以訪問(wèn)外網(wǎng)
?配置18-1的squid服務(wù)的主配置文件
vim? /etc/squid/squid.conf
systemctl start squid? ? //?啟動(dòng)服務(wù)
systemctl enable squid? ? //加入開(kāi)機(jī)啟動(dòng)項(xiàng)
配置18-2的Firefox瀏覽器代理
在彈出的對(duì)話框中輸入18-1 Squid服務(wù)器僅主機(jī)ip,點(diǎn)擊OK保存
?
?在18-2上訪問(wèn)www.ruijie.com.cn進(jìn)行測(cè)試發(fā)現(xiàn)不行
?
?
?
systemctl status squid發(fā)現(xiàn)服務(wù)開(kāi)著,如果沒(méi)開(kāi)則需要輸入 systemctl start?squid開(kāi)啟服務(wù)
使用GUI界面針對(duì)內(nèi)網(wǎng)口對(duì)應(yīng)的區(qū)域,永久放通squid服務(wù),并且重啟防火墻使其生效
重載防火墻
再次訪問(wèn)發(fā)現(xiàn)可以了
?
18-2 的試了www.baidu.com訪問(wèn)不了,而且其他的https的網(wǎng)站均訪問(wèn)不了
解決辦法,代理中勾選:為所有協(xié)議使用相同代理
再次訪問(wèn)https網(wǎng)站發(fā)現(xiàn)可以了
?
使用代理的優(yōu)點(diǎn)
1、代理無(wú)需配置SNAT
2、代理無(wú)需開(kāi)啟路由轉(zhuǎn)發(fā)功能
缺點(diǎn)
1、終端配置麻煩(小白的噩夢(mèng))
2、累死代理服務(wù)器
正向代理之 透明正向代理模式
透明代理,顧名思義,就是對(duì)于用戶而言就是透明!!無(wú)需做任何額外的配置!
去掉原先的代理,并且確認(rèn)無(wú)法上網(wǎng)!
?
在18-1上配置SNAT功能,記得重載防火墻
?
將18-1的內(nèi)網(wǎng)口加入到另外一個(gè)區(qū)域,為了便于記憶,加入到internal區(qū)域
?
更改區(qū)域?yàn)?/strong>internal
?
重啟防火墻
將內(nèi)網(wǎng)用戶的所有外網(wǎng)流量全部定位到3128端口上
?
設(shè)置端口轉(zhuǎn)發(fā)到18-1的僅主機(jī)ip,端口3128
彈出的窗口選擇no,即internal區(qū)域不做SNAT
因?yàn)閮?nèi)網(wǎng)口劃入squid區(qū)域,因此需要針對(duì)internal區(qū)域開(kāi)放squid服務(wù),讓客戶進(jìn)行透明代理
重啟防火墻
?
?修改squid的主配置文件
?
vim /etc/squid/squid.conf
59行 3128后加入transparent
去掉62行#號(hào)注釋
?
使用squid -k parse命令檢查主配置文件是否有錯(cuò)誤
使用squid -z命令對(duì)Squid服務(wù)程序的透明代理技術(shù)進(jìn)行初始化。
重啟服務(wù) systemctl restart squid
?測(cè)試
?
?
ACL訪問(wèn)控制
在日常工作中,企業(yè)員工一般是通過(guò)公司內(nèi)部的網(wǎng)關(guān)服務(wù)器來(lái)訪問(wèn)互聯(lián)網(wǎng),當(dāng)將Squid服務(wù)程序部署為公司網(wǎng)絡(luò)的網(wǎng)關(guān)服務(wù)器后,Squid服務(wù)程序的訪問(wèn)控制列表(ACL)功能將發(fā)揮它的用武之地。它可以根據(jù)指定的策略條件來(lái)緩存數(shù)據(jù)或限制用戶的訪問(wèn)。比如很多公司會(huì)分時(shí)段地禁止員工逛淘寶、打網(wǎng)頁(yè)游戲,這些禁止行為都可以通過(guò)Squid服務(wù)程序的ACL功能來(lái)實(shí)現(xiàn)。
Squid服務(wù)程序的ACL是由多個(gè)策略規(guī)則組成的,它可以根據(jù)指定的策略規(guī)則來(lái)允許或限制訪問(wèn)請(qǐng)求,而且策略規(guī)則的匹配順序與防火墻策略規(guī)則一樣都是由上至下;在一旦形成匹配之后,則立即執(zhí)行相應(yīng)操作并結(jié)束匹配過(guò)程。為了避免ACL將所有流量全部禁止或全部放行,起不到預(yù)期的訪問(wèn)控制效果,運(yùn)維人員通常會(huì)在ACL的最下面寫(xiě)上deny all或者allow all語(yǔ)句,以避免安全隱患。
禁止員工訪問(wèn)域名中帶有ruijie的網(wǎng)站
squid服務(wù)程序的這種ACL功能模式是比較粗獷暴力的,客戶端訪問(wèn)的任何網(wǎng)址中只要包含了某個(gè)關(guān)鍵詞就會(huì)被立即禁止訪問(wèn),但是這并不影響訪問(wèn)其他網(wǎng)站。
首先,確保可以打開(kāi)
?在18-1的squid主配置文件/etc/squid/squid.conf中一個(gè)acl
vim?/etc/squid/squid.conf
26以及34行加入命令實(shí)現(xiàn)訪問(wèn)控制
?
acl deny_ruijie url_regex -i rujie
http_access deny deny_ruijie
acl名為deny_ruijie ,內(nèi)容意思是,在url中包含關(guān)鍵詞如果包含ruijie,那么就被拒絕
?重啟服務(wù)后進(jìn)行測(cè)試
systemctl restart squid
?
Ctrl+shift+del清除緩存,再次訪問(wèn)www.ruijie.com.cn
百度還可以正常訪問(wèn)
總結(jié)
以上是生活随笔為你收集整理的Linux-firewalld-squid正向代理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [BZOJ4408][FJOI2016]
- 下一篇: Linux Shell脚本语句执行失败,