firewald、netfilter、iptables介紹及表案例
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