1. 程式人生 > >Linux系統管理初步(四)Linux系統的防火墻-netfilter 編輯中

Linux系統管理初步(四)Linux系統的防火墻-netfilter 編輯中

security 計數器 save ade 接收 emctl fec 運維 需要

一、Linux的防火墻

防火墻是日常應用中一個重要的維護內容,從防火墻開始我們才真正接觸生產環境,網絡安全越來越受重視,學好這部分內容是學好運維的重要一步。

一般情況下,桌面級環境中很少有人關註過防火墻,甚至殺毒軟件都不裝,對防火墻的操作當然不熟悉。真實生產環境中不可能不開防火墻。

linux的防火墻在centos6(含)前是netfilter,centos7開始使用新的firewalld,一般的我們從netfilter學起,firewalld是兼容netfilter的規則的。

二、netfilter學習環境搭建

因為centos7默認的防火墻是centos7,所以我們先要把firewalld停用,然後在換成centos6的netfiler,前期準備工作:關閉selinux、關閉centos7帶的firewalld然後啟動netfilter。

(一)關閉selinux功能

1、臨時關閉

setenforce 0 關閉命令
getenforce 查看selinux狀態命令

技術分享圖片

只要確認getenforce狀態是Permissive就可以了。只是暫時關閉,系統重啟後仍會開啟,需要通過修改配置文件方式永久關閉。

2、永久關閉
永久關閉該功能需要修改selinux的配置文件

vi /etc/selinux/config

技術分享圖片
將SELINUX=enforcing改為disabled
註意不能改成下面那個SELINUXTYPE=disabled,否則系統會啟動不了。

(二)關閉centos7的firewalld

systemctl stop firewalld #關閉firewalld功能

systemctl disable firewalld #停止firewalld開機啟動

操作截圖
技術分享圖片
技術分享圖片
這一步不像上面那步有操作過程提示,只要沒報錯就ok了。

(三)啟動centos6或者5支持的netfilter防火墻

yum install iptables-services #安裝netfilter功能,也就是常說的iptables,註意包名末尾是iptables和services復數形式,敲成iptables-service就沒這個包
systemctl enable iptables #設置開機啟動iptables服務
systemctl start iptables #開啟iptables程序

iptables -nvL #查看iptables的默認規則

操作截圖
技術分享圖片

技術分享圖片
1是設置開機啟動,2是在當前bash下啟動iptables,3是查看iptables的默認規則。

三、netfilter的表(table)與鏈條(chain)

netfilter使用5個表與5個鏈條控制網口傳輸過來的包的,哪些需要丟棄,哪些允許進來等等。

5個表分別是:
filter:主要用於過濾數據包,是系統預設的表。內含3個鏈:INPUT、OUTPUT、FOWARD,就是說數據包只要在這三個鏈中,你就可以用filter表中的規則來處理他。
nat:主要用於網絡地址轉換,內含3個鏈:PREROUTING、OUTPUT、POSTROUNTING。
mangle:主要用於給包做標記,然後根據標記處理包。內含全部五個鏈
raw:可以用來設定不被系統跟蹤的數據包,這個表可以指定某些端口進來的數據不被跟蹤。內含2個鏈:PREROUNTING和OUTPUT
security:在Centos6中沒有,用於強制訪問控制的網絡規劃,暫時先不研究。

5個鏈分別是:
PREROUTING:數據包進入路由表之前
INPUT:通過路由表後目的地為本機
FORWARDING:通過路由表後,目的地不為本機。
OUTPUT:由本機產生,向外轉發。
POSTROUTING:發送到網卡接口前

netfilter啟動後,網絡數據包在系統中的流向圖:(轉載至wiki)
技術分享圖片

四、iptables命令

iptables用於操控netfilter防火墻,他能直接添加、修改或者刪除PREROUTING、INPUT、FORWARDING、OUTPUT、POSTROUTING5個鏈中的規則,達到過濾數據包的目的

iptables命令寫法

iptables -t 表名 <-A/I/D/R> 鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動作

選項含義
-t<表>:指定要操縱的表;
-A:向鏈規則中添加條目;
-D:從鏈規則中刪除條目;
-I:向鏈規則中插入條目;
-R:替換鏈規則中的條目;
-L:顯示鏈規則中已有的條目;
-F:清空防火墻規則;
-Z:清空鏈規則中包計數器與連接計數器;
-N:創建新的用戶自定義規則鏈;
-P:定義鏈規則中的默認處置方式,如;
-h:顯示幫助信息;
-p:指定要匹配的數據包協議類型,;
-s:指定要匹配的數據包源ip地址;
-j+動作:如何處理過濾出來的包,常見的有ACCEPT,;
-i<網絡接口>:指定數據包進入本機的網絡接口;
-o<網絡接口>:指定數據包要離開本機所使用的網絡接口。
--dport
--sport

表名包括:

raw:高級功能,如:網址過濾。
mangle:數據包修改(QOS),用於實現服務質量。
nat:地址轉換,用於網關路由器。
filter:包過濾,用於防火墻規則。

鏈名包括:

INPUT鏈:處理輸入數據包。
OUTPUT鏈:處理輸出數據包。
PORWARD鏈:處理轉發數據包。
PREROUTING鏈:用於目標地址轉換(DNAT)。
POSTOUTING鏈:用於源地址轉換(SNAT)。

動作包括:

ACCEPT:接收數據包。
DROP:丟棄數據包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址轉換。
DNAT:目標地址轉換。
MASQUERADE:IP偽裝(NAT),用於ADSL。
LOG:日誌記錄

五、iptables操作示例

1、顯示、清空與保存操作現有的netfilter規則

iptables -nvL #顯示現有規則,分表顯示的
iptables -F #清空所有規則
iptables -Z #置零計數器,用於網絡攻擊分析
service iptables save #將規則保存到/etc/sysconfig/iptables文件中
systemctl restart iptables.service #重啟iptables服務使指定的規則生效

技術分享圖片

iptables的默認規則保存在/etc/sysconfig/iptables文件下
技術分享圖片

2、鏈處理規則的增加、刪除與修改

防火墻規則添加到鏈規則尾部

iptables -A INPUT

防火墻規則添加到鏈規則頭部

刪除防火墻某一條規則

修改防火墻默認鏈處理規則

3、

Linux系統管理初步(四)Linux系統的防火墻-netfilter 編輯中