unit10-firewalld配置【當前內容包括iptables配置】

第十單元-防火牆配置


#####三大表五大鏈#####

filter: INPUT, OUTPUT, FORWARD
nat: INPUT, OUTPUT, PREROUTING, POSTROUTING
mangle:INPUT, OUTPUT, PREROUTING, POSTROUTING, FORWARD

INPUT:進來的數據包應用此規則鏈中的策略
OUTPUT:外出的數據包應用此規則鏈中的策略
FORWARD:轉發數據包應用此規則中的策略
PREROUTING:對數據包作路由選擇前一共用此鏈中的策略(所有的數據包進來的時候都有這個鏈處理)
POSTROUTING:對數據包作路由選擇後應用此鏈中的策略(所有的數據包出來的時候都由這個鏈處理)

#####初始設置#####
雙網卡主機IP分別設置爲不同網段
此處實驗:
server主機:172.25.254.244和172.25.98.244
desktop主機:172.25.254.198

服務狀態:
server主機:
systemctl stop firewalld
systemctl disable firewalld
systemctl start iptables
systemctl enable iptables

一、iptables  【linux防火牆的管理工具】

        -t    ##指定表名稱,若未指定表,則默認爲filter表
        -n    ##不做解析
        -L    ##列出指定表中的策略
        -A    ##增加策略
        -p    ##網絡協議
        --dport    ##端口
        -s    ##數據來源
        -j    ##動作
        ACCEPT    ##允許
        REJECT    ##拒絕
        DROP    ##丟棄,不拒絕訪問,但是不予理睬,會一直在保持接收的狀態
        -N    ##增加鏈
        -E    ##修改鏈名稱
        -X    ##刪除鏈
        -D    ##刪除指定策略
        -I    ##插入
        -R    ##修改策略
        -P    ##修給默認策略

1.參數實例:
iptables -t filter -nL        ##查看filter表中的策略

示圖1


iptables -F            ##刷掉filter表中的所有策略

示圖2


service iptables save        ##保存當前策略到kelnel
iptables -A INPUT -i lo -j ACCEPT        ##允許lo
iptables -A INPUT -p tcp --dport 22 -j ACCEPT    ##允許訪問22端口
iptables -A INPUT -s 172.25.254.98 -j ACCEPT    ##允許98主機訪問主機所有端口
iptables -A INPUT -j REJECT            ##拒絕所有主機的數據來源
示圖:當前filter表中策略

示圖:在該server主機安裝http服務,用98主機訪問該主機22端口的http服務,訪問結果爲允許

示圖:用非98主機的其他主機訪問22端口的http服務,被拒絕

iptables -N redhat                ##增加鏈redhat
示圖3

iptables -E redhat westos            ##修改redhat的鏈的名字爲westos
示圖4

iptables -X westos                ##刪除鏈westos
示圖5

iptables -D INPUT 2                ##刪除INPUT鏈中第二條策略
示圖6

iptables -I INPUT 2 -p tcp --dport 80 -j REJECT        ##插入策略到INPUT的第二條
示圖7

iptables -R INPUT 2 -p tcp --ddport 22 -j ACCEPT    ##修改INPUT鏈中的第二條策略
示圖8

示圖:非98主機用戶的22端口訪問成功檢測


iptables -P INPUT DROP                    ##把INPUT表中的默認策略改爲drop

示圖:未修改之前默認狀態,policy爲ACCEPT


示圖:修改之後默認狀態,policy爲DROP


2.標識策略實例:
iptables -A INPUT -i lo -m state --state NEW -j ACCEPT        ##只檢測第一次使用lo用戶的訪問,其他用lo已經訪問成功的會直接允許訪問
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT  ##只檢測第一次使用端口22用戶的訪問,其他訪問22端口成功的用戶會直接訪問
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -j REJECT                    ##除上以外全部拒絕

示圖:當前策略狀態

3.網關配置:
sysctl -a | grep forward
echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
sysctl -p
iptables -t nat -A PREROUTING  -i eth1 -j DNAT --to-dest 172.25.98.244
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.244

測試:
desktop修改網絡配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
示圖:修改結果

示圖:desktop主機網關測試結果

ping 172.25.254.244
ping 172.25.98.244


二、firewalld

1.啓用服務

systemctl start firewalld        ##開啓防火牆
systemctl mask iptables            ##將iptables服務凍結
firewall-config                ##firewall的圖形管理界面

ZONE:【一般默認public】
block【限制】            ##拒絕所有網絡
dmz【非軍事區】            ##僅接受ssh服務連接
drop【丟棄】            ##任何接收的網絡數據包都被丟棄,沒有任何回覆
external【外部】            ##出去的ipv4網絡連接通過此區域僞裝和轉發僅接收ssh服務連接
home【家庭】            ##用於家庭網絡,僅接收ss,mdns,ipp-client,或dhcpv6-client服務連接
internal【內部】            ##用於內部網絡,僅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服務連接
public【公共】            ##在公共區域內使用,僅接受ssh或dhcpv6-client服務連接,爲firewalld的默認區域
ROL【】
trusted【信任】            ##可接受所有的網絡連接
work【工作】            ##用於工作區,僅接受ssh、ipp-client或dhcpv6-client服務連接

Configuration配置設置方式:permanent永久式,和臨時式 ##用命令操作時若無指定臨時或永久時,則默認臨時,設置結束後需要reload使設置的內容生效

內容:
services            ##firewalld提供的服務
ports                ##端口
masquerading            ##僞裝
port forwarding            ##端口轉發
ICMP filter            ##ICMP協議提供的filter表
rich rules            ##rich rules是一種類似iptables的設置
interfaces            ##接口
sources                ##指定源地址

2.基本參數設置

##查看型
firewall-cmd --state        ##查看firewall當前活動狀態
firewall-cmd --get-active-zones    ##查看當前活動的工作區域
firewall-cmd --get-default-zone    ##查看當前默認的工作區域
firewall-cmd --get-zones    ##查看所有擁有的工作區域
firewall-cmd --get-services     ##查看所有可設置的服務
firewall-cmd --list-all-zones    ##查看當前默認區域的內容【未特定指定時爲public】
firewall-cmd --zone=trusted --list-all    ##查看trusted區的內容
##設置型
firewall-cmd --set-default-zone=trusted            ##設置默認區域爲trusted
firewall-cmd --permanent --add-source=172.25.254.98    ##永久添加可接收數據包來源,有permanent永久參數,添加後必須通過reload來執行,添加的數據包來源的執行權限和所在工作區域的執行權限相同
firewall-cmd --permanent --remove-source=172.25.254.98    ##永久移除可接受數據包來源
firewall-cmd --permanetnt --zone=trusted --add-source=172.25.254.98    ##永久在trusted區域添加數據包來源
firewall-cmd --permanetnt --zone=trusted --remove-source=172.25.254.98        ##移除
firewall-cmd --zone=public --remove-interface=eth0    ##在public區域移除eth0接口
firewall-cmd --zone=trusted --add-interface=eth0    ##在trusted區域添加eth0接口
firewall-cmd --add-service=ssh        ##在默認區域添加服務ssh,移除用remove,永久設置須添加--permanent,指定區域添加--zone=所指定區域名稱
firewall-cmd --add-port=22/tcp        ##在默認區域添加可訪問端口22,協議使用tcp
firewall-cmd --reload            ##每次執行的是永久設置的命令時,需要生效,必須執行reload,【注意:這並不會中斷已經建立的連接,如果打算中斷,可以使用 --complete-reload選項】

3.direct參數設置【在運行時間裏增加或者移除鏈】

firewall-cmd --direct --get-all-rules        ##查看當前所有的direct rules
firewall-cmd --direct --get-all-rule ipv4 filter INPUT 0 '!' -s 172.25.254.98 -p tcp --dport 22 -j ACCEPT    ##添加direct rules ,設置爲ipv4,在filter表中第一條(第一條即0),除了98主機不可以訪問以外其他都可以,使用協議爲tcp,添加訪問端口22,和iptables相似設定方法
示圖:direct參數示範
 

4.rich rules

通過“ rich language”語法,可以用比直接接口方式更易理解的方法建立複雜防火牆規則。此外,還能永久保留設置。這種語言使用關鍵詞值,是 iptables 工具的抽象表示。這種語言可以用來配置分區,也仍然支持現行的配置方式。

firewall-cmd --zone=指定區域 --remove-rich-rule='rule'    ##移除一項規則

firewall-cmd --zone=指定區域 --query-rich-rule='rule'    ##這將複查是否已經爲區域增加一個多語言規則 。如果可用,屏幕會顯示 yes,退出狀態爲0; 否則,屏幕顯示 no ,退出狀態爲 1。如果省略 zone,默認區域將被使用。

firewall-cmd --list-rich-rules                ##列出所有多語言規則

##添加規則##

firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.0.10" accept'            ##允許172.25.0.10主機所有連接    

firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'                    ##每分鐘允許2個新連接訪問ftp服務

firewall-cmd --add-rich-rule='rule service name=ftp log limit value="1/m" audit accept'        ##同意新的 IP v4 和 IP v6 連接 FT P ,並使用審覈每分鐘登錄一次

firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.25.0.0/24" service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'    ##允許來自172.25.0.0/24地址的新 IPv4連接連接TFTP服務,並且每分鐘記錄一次    

firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'            ##丟棄所有icmp包

firewall-cmd --add-rich-rule='rule family=ipv4 source address=172.25.0.0/24 reject' --timeout=10    ##當使用source和destination指定地址時,必須有family參數指定ipv4或ipv6。如果指定超時,規則將在指定的秒數內被激活,並在之後被自動移除    

firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300        ##拒絕所有來自2001:db8::/64子網的主機訪問dns服務,並且每小時只審覈記錄1次日誌

firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source
address=172.25.0.0/24 service name=ftp accept'    ##允許172.25.0.0/24網段中的主機訪問ftp服務    

firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" forward-portto-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"'        ##轉發來自ipv6地址1:2:3:4:6::TCP端口4011,到1:2:3:4:7的TCP端口4012

5.僞裝和端口轉發

僞裝:
firewall-cmd --permanent --zone=< ZONE > --add-masquerade        ##添加僞裝
firewall-cmd --permanent --zone=< ZONE > --add-rich-rule='rule family=ipv4 source address=172.25.254.244/24 masquerade'        ##172.25.98.11在出站後僞裝爲172.25.254.244
示圖:僞裝設置結果

示圖:測試【172.25.98.11僞裝爲172.25.254.244用ssh登陸172.25.254.98,成功後用w -i查看到登陸98主機的ip是244,達到僞裝效果】

端口轉發:
firewall-cmd --permanent --zone=< ZONE > --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.98.10        ##將所有訪問22端口的主機全部轉發到172.25.98.10主機的22端口處
示圖:轉發設置結果

示圖:測試轉發【用ssh在172.25.254.98ssh連接172.25.98.11,結果會轉發連接到172.25.98.10處】


firewall-cmd --permanent --zone=< ZONE > --add-rich-rule='rule family=ipv4 source address=172.25.254.98/24 forward-port port=22 protocol=tcp to-port=22'        ##在rich ruels中的操作命令

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章