1. 程式人生 > 實用技巧 >firewald、netfilter、iptables介紹及表案例

firewald、netfilter、iptables介紹及表案例

由大憨熊提交於2020-12-26 16:18:24

1 firewalld和netfilter
2 netfilter5表5鏈介紹
3 iptables語法
4 iptables filter表案例
5iptables nat表應用

1 firewalld和netfilter

centos6防火牆名字叫netfilter,iptables僅僅是防火牆工具

關閉firewalld步驟

firewalld 取消開機啟動,停止服務

開啟netfilter步驟

netfilter yum安裝iptables-servers 先enable iptables 再開啟iptables

臨時關閉selinux

setenforce 0

檢視selinux狀態,Permissive表示遇到需要需要阻斷時不去阻斷,而是去記錄資訊

永久關閉selinux,編輯配置selinux檔案,將標記位置改為disabled及可永久關閉

vi /etc/selinux/config

centos7之前版本叫netfilter centos7叫firewalld,都支援iptables命令

關閉firewalld開機啟動

systemctl disable firewalld
關閉防火牆服務

systemctl stop firewalld

yum安裝iptables服務

yum install -y iptables-services
開啟iptables服務

systemctl enable iptables

systemctl start iptables

檢視iptables預設規則命令

iptables -nvL


2、netfilter5表5鏈介紹

centos6得時候只有4個表,沒有security這個表

filter是一個預設的表,包含了3個內建鏈,INPUT(資料包進來時經過的鏈,發現可疑ip需要禁用掉)、FORWARD(判斷目標地址是不是本機)、OUTPUT(在本機產生的包,出去之前產生的操作)

nat表 PRE‐ROUTING(用來更改進來時的資料包) OUTPUT(在本機產生的包,出去之前產生的操作)POSTROUTING(用來更改出去時的資料包)埠對映時需要用到

mangle表、raw表、security表 這三個表幾乎用不到

小結:如果經過本機,PREROUTING----->INPUT---->OUTPUT------>POSTROUTING

如果不經過本機,PREROUTING----->FORWARD------>POSTROUTING

3、iptables語法

不加-t都是操作預設filter表

檢視iptables規則

iptables -nvL

重啟iptables規則

service iptables restart

檢視iptables配置檔案

cat /etc/sysconfig/iptables

清空iptables規則

iptables -F
儲存iptables規則

service iptables save

重啟iptables規則,重啟之後會按iptables配置檔案恢復

service iptables restart
檢視nat表規則,預設是空的

iptables -t nat -nvL

清空iptables計算器

iptables -Z; iptables -nvL

新增一條iptables策略 (-A 表示增加一條規則 增加到最後面,-s 表示指定一個來源ip,-p 表示指定協議,--sport表示指定來源埠,-d 表示指定目標ip --dport表示指定目標埠,-j 表示要執行什麼操作,DROP表示丟棄掉資料包,REJECT表示拒絕掉資料包)-I插入到最前面

iptables -A INPUT -s 192.168.238.1 -p tcp --sport 1234 -d 192.168.138.6 --dport 80 -j DROP

iptables -I INPUT -p tcp --dport 80 -j DROP(從上往下匹配,一旦匹配直接執行)

-D表示刪除一條規則

iptables -D INPUT -p tcp --dport 80 -j DROP

iptables -D INPUT -s 192.168.238.1 -p tcp --sport 1234 -d 192.168.138.6 --dport 80 -j DROP

檢視iptables規則並打印出序列號

iptables -nvL --line-number

刪除第7條iptables規則

iptables -D INPUT 7

指定網絡卡的iptables規則

iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

更改iptables預設規則,禁用掉OUTPUT預設規則

iptable -P OUTPUT DROP

4、iptables filter表案例

iptables小案例

需求:把80埠、22埠和21埠放行,22埠指定一個IP段,只有這個IP段的IP訪問時才能訪問,其他一律不能訪問。

實現(shell指令碼)

ipt定義一個變數,在指令碼中要寫絕對路徑;

首先清除之前的規則,然後定義下預設的策略,緊接著加一些規則;

把RELATED和ESTABLISHED狀態放行,是為了通訊更順暢。

執行指令碼,檢視規則

icmp示例

iptables -I INPUT -p icmp --icmp-type 8 -j DROP可以讓你ping通外面的機器,但不能ping通本機。

iptables -D INPUT -p icmp --icmp-type 8 -j DROP刪除規則,然後重啟iptables服務

檢視規則

此時,就又能ping通本機。iptables nat表應用

5、nat表應用

A機器兩塊網絡卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外網,ens37僅僅是內部網路,B機器只有ens37(192.168.100.100),和A機器ens37可以通訊互聯

準備工作:

首先準備兩臺虛擬機器(可以克隆一臺),給第一臺機器新增一個網絡卡,點新增,選擇網路介面卡,下一步

預設選擇NAT模式,點完成

選擇網路介面卡2,選擇LAN區段

可以新增自定義名字的LAN區段,點新增

點確定,就好了

接著第二臺機器,也新增一塊網絡卡,在新增之前,先取消啟動時連線,點新增

預設NAT,點完成

然後和第一臺機器一樣選擇同一個區段

然後啟動兩臺機器,xshell遠端連線第一臺虛擬機器,輸入ifconfig,可以看到增加的網絡卡ens37

給網絡卡ens37設定IP,可以通過命令設定,也可以通過編輯網絡卡配置檔案;這裡通過命令設定,ifconfig ens37 192.168.100.1/24,重啟之後,IP就會消失,想要永久更改,就要通過編輯網絡卡配置檔案,需要拷貝ens33的配置檔案,更改name、device等

第二臺機器由於沒法遠端,只能在本機操作,先登入,輸入ifconfig

先down掉ens33網絡卡

給ens37設定IP,ifconfig ens37 192.168.100.100/24

然後第一臺機器xshell先ping192.168.100.100,這樣第二臺機器就可以ping192.168.100.1

然後Windows主機不能ping通192.168.100.100和192.168.100.1

檢測第二臺機器能否聯網

需求1:可以讓B機器連線外網

首先A機器開啟埠轉發

然後再A機器上增加一條規則iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eno16777736 -j MASQUERADE,檢視規則

給B機器設定閘道器

然後ping 192.168.133.1

設定DNS

輸入vim /etc/resolv.conf,新增nameserver 119.29.29.29

然後ping119.29.29.29

這樣我們就可以ping通外網

但是Windows主機依然ping不通192.168.100.100

需求2:C機器只能和A通訊,讓C機器可以直接連通B機器的22埠(埠對映)

首先A機器開啟埠轉發echo "1" > /proc/sys/net/ipv4/ip_forward(剛才做過了就不用做),刪除規則

然後增加兩條規則,第一條規則就是把進來的包的目標IP192.168.133.130,目標埠1122做埠轉發到192.168.100.100的22埠;第二條規則是把回來的包目標IP192.168.100.100改成192.168.133.130

給B機器設定閘道器(剛才設定過了,現在不需要再設)

然後新建會話,點確定

直接點連線

選擇接收並儲存

輸入使用者名稱root,密碼

遠端連線成功

也可以連線外網

來源:oschina

連結:https://my.oschina.net/u/3992081/blog/2878035