Windows殺毒軟體是什麼環境?
以前,市面上出現過非常多的殺毒軟體,知名度比較高的有:卡巴斯基、瑞星、金山毒霸、江民殺毒、可牛殺毒、諾頓殺毒、McAfee、Avira小紅傘、賽門鐵克Symantec.、ESET NOD32、BitDefender和Avast!等等,後來加入的有360殺毒、騰訊電腦管家、百度殺毒。
熊貓燒香病毒,2006年10月16日由25歲的湖北武漢新洲區人李俊編寫,2007年1月初肆虐網絡,它主要通過下載的文件傳染。
灰鴿子自2001年出現至今,主要經歷了模仿期、飛速發展期以及全民駭客時代三大階段。
但是自2008年7月17日,免費360殺毒首次推出起,病毒和殺毒軟體就逐漸的離我們越來越遠。現在Win10自帶的Defender殺毒軟體已經能很好的為我們服務。而且製造病毒的人無利可圖,所以也幾乎沒有製造病毒的動力了。
Linux有沒有防火牆和殺毒軟體呢?
首先明確,Linux是有防火牆和殺毒軟體的。
但是Linux的殺毒軟體幾乎沒有什麼用武之地,所以知名度普遍都不高。最主要的原因是:製作Linux病毒無利可圖,因為Linux幾乎都是做為伺服器來使用,個人用戶實在是太少了。所以一般的Linux伺服器上都不裝殺毒軟體。
防火牆就不一樣了,那幾乎是公網上Linux伺服器必備的軟體。另外各機房幾乎都有硬體防火牆,用來進行入侵檢測,攻擊防護等。
Firewalld、iptables和ebtables等都是常用的防火牆管理工具,CentOS Linux 8默認這三個都安裝了。為什麼叫防火牆管理工具,因為這三個都是設定防火牆規則的,允許哪些可以被別人訪問,不允許哪些被別人訪問。具體的執行這些防火牆規則的是Linux系統內核的netfilter子系統,netfilter子系統是真正的防火牆底層工具。
現在比較常用的是firewalld、iptables,CentOS Linux 8默認的防火牆管理工具是firewalld,不過它底層調用的命令仍然是iptables。
Linux防火牆能防住什麼樣的攻擊?
關於這個問題網上有很多詳細的介紹,咱們用直白的話來說明一下:
1、能防住什麼:我們不讓防火牆外面的人訪問的埠,它就一定訪問不了。
比如:防火牆只開放80埠,對於外面的人來說,其它埠他就一點都看不到。
2、不能防住什麼:內部伺服器中病毒了,防火牆就沒有辦法了。對外提供服務的軟體有漏洞,被黑客利用,防火牆也沒有太好的辦法解決。
怎麼安裝/配置防火牆Firewall?
測試平臺介紹
我們安裝的CentOS的版本是CentOS Linux release 8.0.1905。具體的是在Windows 10下面先安裝VMware虛擬機,虛擬機的版本是VMware Workstation Pro 15.5.1,由於這個版本沒有「CentOS 8」的選項,所以在安裝的時候,我們選擇的是「Red Hat Enterprise Linux 8 64位」,具體可參考我的其他相關文章。
所有以下的操作都是在CentOS Linux 8.0.1905上進行的。
安裝防火牆Firewall
CentOS Linux 8.0.1905默認是安裝了firewalld防火牆的,如果你的沒有安裝上,可以通過以下指令安裝。
yum install firewalld firewall-config #安裝防火牆
systemctl enable firewalld.service #設置為開機啟動
systemctl disenable firewalld.service #設置為開機不啟動
service firewalld stop #停止防火牆服務
service firewalld start #開啟防火牆服務
service firewalld restart #重啟防火牆服務
service firewalld status 或者 firewall-cmd --state 查看狀態
使用防火牆Firewall
編輯防火牆使用腳本
vi /root/firewall-list.sh
腳本示例內容如下(具體內容可查閱下方的命令解釋):
#!/bin/bash
firewall-cmd --reload #重新載入規則
firewall-cmd --add-port=53/udp #開放53號udp埠
firewall-cmd --add-port=80/tcp #開放22號tcp埠
firewall-cmd --add-port=30000-50000/tcp #開放30000-50000號tcp埠
給腳本加上可執行權限
chmod +x /root/firewall-list.sh
運行腳本:
/root/firewall-list.sh
防火牆firewall-cmd命令解釋(作為手冊使用)
這部分內容轉載自:
firewall-cmd
Linux上新用的防火牆軟體,跟iptables差不多的工具
補充說明
firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好處有兩個:支持動態更新,不用重啟服務;第二個就是加入了防火牆的「zone」概念。
firewalld跟iptables比起來至少有兩大好處:
firewalld可以動態修改單條規則,而不需要像iptables那樣,在修改了規則後必須得全部刷新才可以生效。
firewalld在使用上要比iptables人性化很多,即使不明白「五張表五條鏈」而且對TCP/IP協議也不理解也可以實現大部分功能。
firewalld自身並不具備防火牆的功能,而是和iptables一樣需要通過內核的netfilter來實現,也就是說firewalld和 iptables一樣,他們的作用都是用於維護規則,而真正使用規則幹活的是內核的netfilter,只不過firewalld和iptables的結 構以及使用方法不一樣罷了。
命令格式
firewall-cmd [選項 ... ]
選項
通用選項
-h, --help # 顯示幫助信息;
-V, --version # 顯示版本信息. (這個選項不能與其他選項組合);
-q, --quiet # 不列印狀態消息;
狀態選項
--state # 顯示firewalld的狀態;
--reload # 不中斷服務的重新加載;
--complete-reload # 中斷所有連接的重新加載;
--runtime-to-permanent # 將當前防火牆的規則永久保存;
--check-config # 檢查配置正確性;
日誌選項
–get-log-denied # 獲取記錄被拒絕的日誌;
–set-log-denied= # 設置記錄被拒絕的日誌,只能為 『all』,『unicast』,『broadcast』,『multicast』,『off』 其中的一個;
實例
安裝及管理服務
# 安裝firewalld
yum install firewalld firewall-config
systemctl start firewalld # 啟動,與service firewalld start功能相同,service命令指向這個命令,下同
systemctl stop firewalld # 停止
systemctl enable firewalld # 啟用自動啟動
systemctl disable firewalld # 禁用自動啟動
systemctl status firewalld # 或者 firewall-cmd --state 查看狀態
# 關閉服務的方法
# 你也可以關閉目前還不熟悉的FirewallD防火牆,而使用iptables,命令如下:
systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services
systemctl start iptables
systemctl enable iptables
配置firewalld
firewall-cmd --version # 查看版本
firewall-cmd --help # 查看幫助
# 查看設置:
firewall-cmd --state # 顯示狀態
firewall-cmd --get-active-zones # 查看區域信息
firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所屬區域
firewall-cmd --panic-on # 拒絕所有包
firewall-cmd --panic-off # 取消拒絕狀態
firewall-cmd --query-panic # 查看是否拒絕
firewall-cmd --reload # 更新防火牆規則
firewall-cmd --complete-reload
# 兩者的區別就是第一個無需斷開連接,就是firewalld特性之一動態添加規則,第二個需要斷開連接,類似重啟服務
# 將接口添加到區域,默認接口都在public
firewall-cmd --zone=public --add-interface=eth0
# 永久生效再加上 --permanent 然後reload防火牆
# 設置默認接口區域,立即生效無需重啟
firewall-cmd --set-default-zone=public
# 查看所有打開的埠:
firewall-cmd --zone=dmz --list-ports
# 加入一個埠到區域:
firewall-cmd --zone=dmz --add-port=8080/tcp
# 若要永久生效方法同上
# 打開一個服務,類似於將埠可視化,服務需要在配置文件中添加,/etc/firewalld 目錄下有services文件夾,這個不詳細說了,詳情參考文檔
firewall-cmd --zone=work --add-service=smtp
# 移除服務
firewall-cmd --zone=work --remove-service=smtp
# 顯示支持的區域列表
firewall-cmd --get-zones
# 設置為家庭區域
firewall-cmd --set-default-zone=home
# 查看當前區域
firewall-cmd --get-active-zones
# 設置當前區域的接口
firewall-cmd --get-zone-of-interface=enp03s
# 顯示所有公共區域(public)
firewall-cmd --zone=public --list-all
# 臨時修改網絡接口(enp0s3)為內部區域(internal)
firewall-cmd --zone=internal --change-interface=enp03s
# 永久修改網絡接口enp03s為內部區域(internal)
firewall-cmd --permanent --zone=internal --change-interface=enp03s
服務管理
# 顯示服務列表
Amanda, FTP, Samba和TFTP等最重要的服務已經被FirewallD提供相應的服務,可以使用如下命令查看:
firewall-cmd --get-services
# 允許SSH服務通過
firewall-cmd --new-service=ssh
# 禁止SSH服務通過
firewall-cmd --delete-service=ssh
# 打開TCP的8080埠
firewall-cmd --enable ports=8080/tcp
# 臨時允許Samba服務通過600秒
firewall-cmd --enable service=samba --timeout=600
# 顯示當前服務
firewall-cmd --list-services
# 添加HTTP服務到內部區域(internal)
firewall-cmd --permanent --zone=internal --add-service=http
firewall-cmd --reload # 在不改變狀態的條件下重新加載防火牆
埠管理
# 打開443/TCP埠
firewall-cmd --add-port=443/tcp
# 永久打開3690/TCP埠
firewall-cmd --permanent --add-port=3690/tcp
# 永久打開埠好像需要reload一下,臨時打開好像不用,如果用了reload臨時打開的埠就失效了
# 其它服務也可能是這樣的,這個沒有測試
firewall-cmd --reload
# 查看防火牆,添加的埠也可以看到
firewall-cmd --list-all
直接模式
# FirewallD包括一種直接模式,使用它可以完成一些工作,例如打開TCP協議的9999埠
firewall-cmd --direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
firewall-cmd --reload
自定義服務管理
選項
(末尾帶有 [P only] 的話表示該選項除了與(--permanent)之外,不能與其他選項一同使用!)
--new-service=<服務名> 新建一個自定義服務 [P only]
--new-service-from-file=<文件名> [--name=<服務名>]
從文件中讀取配置用以新建一個自定義服務 [P only]
--delete-service=<服務名>
刪除一個已存在的服務 [P only]
--load-service-defaults=<服務名>
Load icmptype default settings [P only]
--info-service=<服務名>
顯示該服務的相關信息
--path-service=<服務名>
顯示該服務的文件的相關路徑 [P only]
--service=<服務名> --set-description=<描述>
給該服務設置描述信息 [P only]
--service=<服務名> --get-description
顯示該服務的描述信息 [P only]
--service=<服務名> --set-short=<描述>
給該服務設置一個簡短的描述 [P only]
--service=<服務名> --get-short
顯示該服務的簡短描述 [P only]
--service=<服務名> --add-port=<埠號>[-<埠號>]/<protocol>
給該服務添加一個新的埠(埠段) [P only]
--service=<服務名> --remove-port=<埠號>[-<埠號>]/<protocol>
從該服務上移除一個埠(埠段) [P only]
--service=<服務名> --query-port=<埠號>[-<埠號>]/<protocol>
查詢該服務是否添加了某個埠(埠段) [P only]
--service=<服務名> --get-ports
顯示該服務添加的所有埠 [P only]
--service=<服務名> --add-protocol=<protocol>
為該服務添加一個協議 [P only]
--service=<服務名> --remove-protocol=<protocol>
從該服務上移除一個協議 [P only]
--service=<服務名> --query-protocol=<protocol>
查詢該服務是否添加了某個協議 [P only]
--service=<服務名> --get-protocols
顯示該服務添加的所有協議 [P only]
--service=<服務名> --add-source-port=<埠號>[-<埠號>]/<protocol>
添加新的源埠(埠段)到該服務 [P only]
--service=<服務名> --remove-source-port=<埠號>[-<埠號>]/<protocol>
從該服務中刪除源埠(埠段) [P only]
--service=<服務名> --query-source-port=<埠號>[-<埠號>]/<protocol>
查詢該服務是否添加了某個源埠(埠段) [P only]
--service=<服務名> --get-source-ports
顯示該服務所有源埠 [P only]
--service=<服務名> --add-module=<module>
為該服務添加一個模塊 [P only]
--service=<服務名> --remove-module=<module>
為該服務移除一個模塊 [P only]
--service=<服務名> --query-module=<module>
查詢該服務是否添加了某個模塊 [P only]
--service=<服務名> --get-modules
顯示該服務添加的所有模塊 [P only]
--service=<服務名> --set-destination=<ipv>:<address>[/<mask>]
Set destination for ipv to address in service [P only]
--service=<服務名> --remove-destination=<ipv>
Disable destination for ipv i service [P only]
--service=<服務名> --query-destination=<ipv>:<address>[/<mask>]
Return whether destination ipv is set for service [P only]
--service=<服務名> --get-destinations
List destinations in service [P only]
控制埠 / 服務
可以通過兩種方式控制埠的開放,一種是指定埠號另一種是指定服務名。雖然開放 http 服務就是開放了 80 埠,但是還是不能通過埠號來關閉,也就是說通過指定服務名開放的就要通過指定服務名關閉;通過指定埠號開放的就要通過指定埠號關閉。還有一個要注意的就是指定埠的時候一定要指定是什麼協議,tcp 還是 udp。知道這個之後以後就不用每次先關防火牆了,可以讓防火牆真正的生效。
firewall-cmd --add-service=mysql #開放mysql埠
firewall-cmd --remove-service=http #阻止http埠
firewall-cmd --list-services #查看開放的服務
firewall-cmd --add-port=3306/tcp #開放通過tcp訪問3306
firewall-cmd --remove-port=3306tcp #阻止通過tcp訪問3306
firewall-cmd --add-port=233/udp #開放通過udp訪問233
firewall-cmd --list-ports #查看開放的埠
偽裝 IP
firewall-cmd --query-masquerade #檢查是否允許偽裝IP
firewall-cmd --add-masquerade #允許防火牆偽裝IP
firewall-cmd --remove-masquerade #禁止防火牆偽裝IP
埠轉發
埠轉發可以將指定地址訪問指定的埠時,將流量轉發至指定地址的指定埠。轉發的目的如果不指定 ip 的話就默認為本機,如果指定了 ip 卻沒指定埠,則默認使用來源埠。 如果配置好埠轉發之後不能用,可以檢查下面兩個問題:
比如我將 80 埠轉發至 8080 埠,首先檢查本地的 80 埠和目標的 8080 埠是否開放監聽了
其次檢查是否允許偽裝 IP,沒允許的話要開啟偽裝 IP
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 #將本機80埠的流量轉發至本機8080埠
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1 #將本機80埠的流量轉發至192.168.0.1的80埠
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 #將本機80埠的流量轉發至192.168.0.1的8080埠
當我們想把某個埠隱藏起來的時候,就可以在防火牆上阻止那個埠訪問,然後再開一個不規則的埠,之後配置防火牆的埠轉發,將流量轉發過去。
埠轉發還可以做流量分發,一個防火牆拖著好多臺運行著不同服務的機器,然後用防火牆將不同埠的流量轉發至不同機器。