日常運維2
2.2 firewalld&iptables
permissive,遇到真正需要阻斷時不會真正阻斷,只會提醒
setenforce 0/1 disable/enable enforcing 臨時更改
####如何永久關閉selinux (編輯/etc/selinux/config 將SELINUX值改為disabled/permissive)
####同樣也可以用sed命令永久關閉 sed i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
2.2.1 firewalld、iptables和netfilter之間的關係
在centos6上,我們用的是iptables服務,而在centos7上,我們用的是firewalld服務。 同樣的,centos6上安裝的是iptables包,而centos7上安裝的是firewalld包。
不管是centos6還是centos7,核心其實都是netfilter,netfilter是linux的一個核心模組,iptables 命令是linux核心自帶的。
centos6上的iptables服務和centos7上的firewalld服務,其實都是用來定義防火牆規則功能的防 火牆管理工具。 它們都是將定義好的規則交由核心中的netfilter即網路過濾器來讀取,從而真正實現防火牆 功能, 所以其實在配置規則的思路上是完全一致的。
由於好多服務受限於selinux,並且開啟selinux會增大運營成本, 所以大多時候會處於關閉狀態
在centos7中 firewalld是預設開啟的,下圖顯示如何開啟netfilter關閉firewalld
2.2.2 netfilter
2.2.2.1 netfilter5表5鏈介紹
1.filter表——三個鏈:INPUT、FORWARD、OUTPUT 作用:過濾資料包 核心模組:iptables_filter.
2.Nat表——三個鏈:PREROUTING、POSTROUTING、OUTPUT 作用:用於網路地址轉換(IP、埠) 核心模組:iptable_nat
3.Mangle表——五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD 作用:修改資料包的服務型別、TTL、並且可以配置路由實現QOS 核心模組:iptable_mangle(別看這個表這麼麻煩,咱們設定策略時幾乎都不會用到它)
4.Raw表——兩個鏈:OUTPUT、PREROUTING 作用:決定資料包是否被狀態跟蹤機制處理 核心模組:iptable_raw
5.Security表——三個鏈:INPUT、OUTPUT和FORWARD 作用:Security表在centos6中並沒有,用於強制訪問控制(MAC)的網路規則 核心模組:iptable_security
netfilter的5個鏈
PREROUTING:資料包進入路由表之前 INPUT:通過路由表後目的地為本機 FORWARD:通過路由表後,目的地不為本機 OUTPUT:由本機產生,向外發出
POSTROUTING:傳送到網絡卡介面之前
nat表用於實現路由器,共享上網埠對映
2.2.3 iptables 語法
2.2.3.1 iptables一般語法格式:
iptables的命令格式較為複雜,一般的格式如下:
iptables [t table] 命令 [chain] [rules] [j target]
###格式說明:
table————指定表名,iptables內建包括filter表、nat表、mangle、raw表和security表。
命令—————對鏈的操作命令
chain————鏈名
rules————匹配規則
target————動作如何進行
###操作命令選項說明
命令 說明
P或–policy <鏈名>:定義預設策略
L或–list <鏈名>:檢視iptables規則列表
A或—append <鏈名>:在規則列表的後增加1條規則
I或–insert <鏈名>:在指定的位置插入1條規則
D或–delete <鏈名>:從規則列表中刪除1條規則
R或–replace <鏈名>:替換規則列表中的某條規則
F或–flush <鏈名>:刪除表中所有規則
Z或–zero <鏈名>:將表中資料包計數器和流量計數器歸零
###規則選項說明
i或–ininterface <網路介面名>:指定資料包從哪個網路介面進入,如ppp0、eth0和eth1等
o或–outinterface <網路介面名>:指定資料包從哪塊網路介面輸出,如ppp0、eth0和eth1等
p或—proto協議型別 < 協議型別>:指定資料包匹配的協議,如TCP、UDP和ICMP等
s或–source <源地址或子網>:指定資料包匹配的源地址 –sport <源埠號>:指定資料包匹配的源埠號,可以使用“起始埠號:結束埠號”的格式 指定一個範圍的埠
d或–destination <目標地址或子網>:指定資料包匹配的目標地址
dport <目標埠號>:指定資料包匹配的目標埠號,可以使用“起始埠號:結束埠號”的 格式指定一個範圍的埠
###動作選項說明
ACCEPT:接受資料包
DROP:丟棄資料包
REDIRECT:與DROP基本一樣,區別在於它除了阻塞包之外, 還向傳送者返回錯誤資訊。
SNAT:源地址轉換,即改變資料包的源地址
DNAT:目標地址轉換,即改變資料包的目的地址
MASQUERADE: IP偽裝,即是常說的NAT技術, MASQUERADE只能用於ADSL等撥號上網的IP偽裝,也就是主機的IP是由ISP分配動態 的; 如果主機的IP地址是靜態固定的,就要使用SNAT
LOG日誌功能,將符合規則的資料包的相關資訊記錄在日誌中,以便管理員的分析和排錯
iptables (-t nat/filter) -nvL 預設規則--保存於 /etc/sysconfig/iptables
iptables -F 清空規則(但卻無法清空配置檔案的規則,重啟後會載入service iptables restart)
iptables -Z 清零
下例命令為jp阻斷 封掉, DRPO可以用REJECT命令代替
如何刪除新加入規則 (雖然 iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP亦能實現刪除 但是input過於繁瑣,推薦使用以下方式)
iptalbes -nvL --llne-number
iptables -D INPUT 8(the line that you want to delete)
iptables -P INPUT DROP 清除全部規則 (輕易不要用)///// iptables -P OUTPUT ACCEPT
2.2.3.2 iptables nat 表應用
##準備環境pre-work
1.準備個workstations 編輯虛擬機器設定
2. 新增網絡卡
3.將網路連線模式改成區段(為了確保實驗環境,網絡卡2不連線window而是連線某區段)
4.配置另一個workstations(fred linux 克隆)的網絡卡,選擇Lan區段
5.新增成功,並嘗試給新網絡卡ens37設定ip
可以通過下命令手動設定ip、埠(重啟之後就會沒有了,如果想要一直存在就要更改配置檔案)
6.同理,配置fred 克隆workstation ens37網絡卡
7.測試是否ping的通
##調配
需求1
1. A機器上開啟路由轉發 (此預設值是0,意為關閉)
cat /proc/sys/net/ipv4/ip_forward
開啟埠轉發 echo "1" > /proc/sys/net/ipv4/ip_forward
2. 增加一條實現上網的規則
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
3.克隆機機器上設定閘道器為192.168.100.1
實現克隆機聯網
4.設定dns
vi /etc/resolv.confvi
需求2(埠對映)
1. A機器上開啟埠轉發
echo "1" > /proc/sys/net/ipv4/ip_forward
2. 增加iptables 規則(先刪除之前的規則 以免影響接下來的實驗)---此為進去的操作
iptables -t nat -A PREROUTING-d 192.168.88.128 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
從88.128進來通過埠1122 轉發到100.100的22埠
之後設定出去的埠
iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.88.128
3.克隆機器新增閘道器
克隆機機器上設定閘道器為192.168.100.1
實驗成功
2.2.3.3 iptables規則備份和恢復