国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【運維知識進階篇】iptables防火墻詳解(iptables執(zhí)行過程+表與鏈概述+iptables命令參數(shù)+配置filter表規(guī)則+NAT表實現(xiàn)共享上網、端口轉發(fā)、IP映射)

這篇具有很好參考價值的文章主要介紹了【運維知識進階篇】iptables防火墻詳解(iptables執(zhí)行過程+表與鏈概述+iptables命令參數(shù)+配置filter表規(guī)則+NAT表實現(xiàn)共享上網、端口轉發(fā)、IP映射)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

這篇文章給大家介紹下iptables防火墻,防火墻大致分三種,分別是硬件、軟件和云防火墻。硬件的話部署在企業(yè)網絡的入口,有三層路由的H3C、華為、Cisco(思科),還有深信服等等;軟件的話一般是開源軟件,寫在網站內部,最常見的有iptables(寫入Linux內核)和firewalld(CentOS7有的),云防火墻就是阿里云業(yè)務的防火墻安全組等等。

目錄

名詞解釋

iptables執(zhí)行過程

NetFilter框架

Linux服務器雙網卡路由器

表與鏈

1、filter表

2、NAT表

3、Mangle表

環(huán)境準備及命令

iptables命令參數(shù)

配置filter表規(guī)則

1、禁止訪問22端口

?編輯

2、封ip,屏蔽某個ip

3、禁止網段連入(禁止10.0.0.0/24網段訪問 8888端口)

4、只允許指定網段連入(允許10.0.0.0網段)

?編輯

5、指定多個端口

6、匹配ICMP類型

7、匹配網絡狀態(tài)(TCP/IP連接狀態(tài))

8、限制并發(fā)及速率

9、防火墻規(guī)則的保存與恢復

10、filter表簡單總結

企業(yè)中用法

1、ssh可以連接

2、設置允許本機lo通訊規(guī)則

3、配置默認規(guī)則及放行80,443端口

NAT表

1、實現(xiàn)共享上網

2、端口轉發(fā)(端口映射)

3、IP映射

4、NAT表簡單總結

iptables簡單練習


名詞解釋

在介紹防火墻之前,我們先了解幾個名詞

容器:可以存放東西

(table):存放的容器

(chain):存放規(guī)則的容器

規(guī)則(policy):準許或拒絕規(guī)則

這幾個像俄羅斯套娃那樣環(huán)環(huán)相套!

iptables執(zhí)行過程

NetFilter框架

最底層是網絡接口層,網絡接口層上面是網絡層,網絡層部署了NetFilter(網絡過濾框架)

網絡層上面部署了TCP、UDP傳輸層,這一層部署了Filter表、NAT表、Mangle表,表種存放要檢查的條件和操作,這些都是內核層,再往上就是用戶層,也就是應用層,可以設置iptables命令。

Linux服務器雙網卡路由器

從物理層和數(shù)據(jù)鏈路層進入先通過PREROUTING鏈,進入路由判決,如果可以進入會通過INPUT鏈進入TCP、UDP,再進入應用層,由應用層再返回到TCP、UDP,通過OUTPUT鏈進入路由判決,再通過POSTROUTING鏈傳輸?shù)轿锢韺雍蛿?shù)據(jù)鏈路層出來。

如果在路由判決那里不能進入的話,則會通過FORWARD鏈傳輸?shù)匠隹诘穆酚膳袥Q,在通過POSTROUTING鏈進入物理層和數(shù)據(jù)鏈路層傳輸出來。

表與鏈

iptables是4表5鏈,4表是filter表、nat表、raw表、mangle表,5鏈是input、pouput、forward、prerouting、postrouting

filter表有input鏈、output鏈、forward鏈

nat表有prerouting鏈、output鏈、postrouting鏈

mangle表有prerouting鏈、forward鏈、input鏈、output鏈、postrouting鏈

1、filter表

負責流量進出,屏蔽或準許端口IP

filter表

主要和主機自身相關,真正負責主機防火墻功能的(過濾流入與流出主機數(shù)據(jù)包)filter標識iptables默認使用的表,這個表定義了三個鏈。企業(yè)工作場景:主機防火墻

INPUT 負責過濾所有目標地址是本機地址的數(shù)據(jù)包,通俗說就是過濾進入主機的數(shù)據(jù)包
FORWARD 負責轉發(fā)流經主機的數(shù)據(jù)包,起轉發(fā)的作用,和NAT關系很大,有專門的LVS NAT模式,net.ipv4.ip_forward=0
OUTPUT 處理所有源地址是本機地址的數(shù)據(jù)包,通俗說就是從主機發(fā)送出去的數(shù)據(jù)包

2、NAT表

雙網卡的,負責接受到后轉發(fā),類似于路由器,可以實現(xiàn)NAT功能:共享上網(內網服務器上外網)、端口映射和ip映射

NAT

負責網絡地址轉換,即來源與目的IP地址和端口的轉換。

應用:和主機本身無關,一般用于局域網共享上網或者特殊的端口轉換服務

工作場景:

1、用于企業(yè)路由(zebra)或網關(iptables),共享上網(postrouting)

2、做內部外部IP地址一對一映射(dmz),硬件防火墻映射IP到內部服務器,ftp服務(prerouting)

3、web,單個端口的映射,直接映射80端口(prerouting),這個表定義了3個鏈,nat功能相當于網絡的acl控制,和網絡交換機acl類似。

OUTPUT 和主機放出去的數(shù)據(jù)包有關,改變主機發(fā)出數(shù)據(jù)包的目的地址
PREROUTING

在數(shù)據(jù)包到達防火墻時,進行路由判斷之前執(zhí)行的規(guī)則,作用是改變數(shù)據(jù)包的目的地址、目的端口等

就是收信時,根據(jù)規(guī)則重寫收件人的地址

例如:把公網IP映射到局域網的服務器上,如果是web服務,可以把80轉換為局域網的服務器9000端口上10.0.0.61:80(目標端口)----nat----10.0.0.7:22

POSTROUTING

在數(shù)據(jù)包離開防火墻時進行路由判斷之后執(zhí)行的規(guī)則,作用是改變數(shù)據(jù)包的源地址,源端口等

寫好發(fā)件人的地址,要讓家人的回信時能夠有地址可以回

例如:默認筆記本和虛擬機都是局域網地址,在出網的時候被路由器將源地址改為了公網地址

生產應用:局域網共享上網

3、Mangle表

存放頭部信息

環(huán)境準備及命令

準備Ansible(10.0.0.61,172.16.1.61)和Web01(10.0.0.7、172.16.1.7)兩臺主機

安裝iptables

[root@Ansible ~]# yum install -y iptables-services

查看iptables服務的配置文件

[root@Ansible ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables        #防火墻的配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service        #防火墻服務配置文件(命令)
/usr/libexec/initscripts/legacy-actions/ip6tables
/usr/libexec/initscripts/legacy-actions/ip6tables/panic
/usr/libexec/initscripts/legacy-actions/ip6tables/save
/usr/libexec/initscripts/legacy-actions/iptables
/usr/libexec/initscripts/legacy-actions/iptables/panic
/usr/libexec/initscripts/legacy-actions/iptables/save
/usr/libexec/iptables
/usr/libexec/iptables/ip6tables.init
/usr/libexec/iptables/iptables.init

?將防火墻相關的模塊、加載到內核中

[root@Ansible ~]# modprobe ip_tables
[root@Ansible ~]# modprobe iptable_filter
[root@Ansible ~]# modprobe iptable_nat
[root@Ansible ~]# modprobe ip_conntrack
[root@Ansible ~]# modprobe ip_conntrack_ftp
[root@Ansible ~]# modprobe ip_nat_ftp
[root@Ansible ~]# modprobe ipt_state 

?永久加入,寫進開機自啟動

cat >>/etc/rc.local<<EOF
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state  
EOF

?列出三表相關的內核模塊,lsmod是列出系統(tǒng)當前載入的所有內核模塊

[root@Ansible ~]# lsmod |egrep 'filter|nat|ipt'
nf_nat_ftp             12809  0 
nf_conntrack_ftp       18478  1 nf_nat_ftp
iptable_nat            12875  0 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26583  2 nf_nat_ftp,nf_nat_ipv4
nf_conntrack          139264  6 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
iptable_filter         12810  0 
ip_tables              27126  2 iptable_filter,iptable_nat
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack

關閉firewalld,啟用iptables,并設置開機自啟動

[root@Ansible ~]# systemctl stop firewalld
[root@Ansible ~]# systemctl disable firewalld
[root@Ansible ~]# systemctl start iptables.service
[root@Ansible ~]# systemctl enable iptables.service
Created symlink from /etc/systemd/system/basic.target.wants/iptables.service to /usr/lib/systemd/system/iptables.service.

列出iptables所有規(guī)則

[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)        #鏈默認規(guī)則
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0          #規(guī)則 
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)        #鏈默認規(guī)則
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)        #鏈默認規(guī)則
target     prot opt source               destination     

iptables命令參數(shù)

參數(shù) 含義
-L 顯示表中的所有規(guī)則
-n 不要把端口或ip反向解析為名字
-t 指定表,不指定默認是filter表
-A append追加,加入準許類規(guī)則
-D delete刪除,-D INPUT 1
-I insert拒絕類規(guī)則放在所有規(guī)則的最上面
-p 協(xié)議protocal tcp/udp/icmp/all
--dport 目標端口dest destination指定端口加上協(xié)議 -p tcp
--sport 源端口,source源
-d --destination 目標IP
-m 指定模塊 multiport
-i input輸入的時候,從哪個網卡進來
-o output輸出的時候,從哪個網卡出去
-j

滿足條件后的工作:DROP/ACCEPT/REJECT

DROP REJECT拒絕

DROP把數(shù)據(jù)丟掉,不會返回信息給用戶

REJECT拒絕,返回拒絕信息

-F flush 清楚所有規(guī)則,不會處理默認的規(guī)則
-X 刪除用戶自定義的鏈
-Z 鏈的計數(shù)器清零(數(shù)據(jù)包計數(shù)器和數(shù)據(jù)包字節(jié)計數(shù)器)

配置filter表規(guī)則

正式配置之前,先備份,清空規(guī)則

[root@Ansible ~]# iptables -F
[root@Ansible ~]# iptables -X
[root@Ansible ~]# iptables -Z

[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

1、禁止訪問22端口

[root@Ansible ~]# iptables -t filter -I INPUT -p tcp   --dport 22  -j DROP
[root@Ansible ~]# 
Connection closed by foreign host.

Disconnected from remote host(Linux86-10.0.0.61-Ansible) at 22:43:23.

Type `help' to learn how to use Xshell prompt.
[c:\~]$ 

iptables映射,# 進階運維知識,運維知識分享,運維,ssh,網絡協(xié)議,iptables,防火墻,四表五鏈,NAT表

?刪除規(guī)則

Connecting to 10.0.0.61:22...
Connection established.
To escape to local shell, press Ctrl+Alt+].

Last login: Sat May  6 22:44:26 2023
[root@Ansible ~]# 

2、封ip,屏蔽某個ip

[root@Ansible ~]# iptables -I INPUT  -s 10.0.0.7   -j DROP 
[root@Ansible ~]# iptables -I INPUT  -s 172.16.1.7   -j DROP 
[root@Ansible ~]#  iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  172.16.1.7           0.0.0.0/0           
DROP       all  --  10.0.0.7             0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

屏蔽之后用10.0.0.7ssh連接會卡住?

[root@Web01 ~]# ssh 10.0.0.61

3、禁止網段連入(禁止10.0.0.0/24網段訪問 8888端口)

#指定10.0.0.0網段的屏蔽了22端口
[root@Ansible ~]# iptables -F
[root@Ansible ~]# iptables -I INPUT  -s 10.0.0.0/24  -p tcp  --dport 22 -j DROP 

[root@Web01 ~]# ssh 10.0.0.61 hostname
^C
[root@Web01 ~]# ssh 172.16.1.61 hostname
root@172.16.1.61's password: 
Ansible

#指定10.0.0.0網段的屏蔽8888端口
[root@Ansible ~]# iptables -F
[root@Ansible ~]# iptables -I INPUT  -s 10.0.0.0/24  -p tcp  --dport 8888 -j DROP 

這個可以用nc和telnet測試

4、只允許指定網段連入(允許10.0.0.0網段)

類似于阿里云白名單功能,開放指定端口和網段,其他均拒絕

1、利用!排除,只準許10.0.0.0/24訪問

[root@Ansible ~]# iptables -I INPUT ! -s 10.0.0.0/24  -j DROP


[root@Web01 ~]# ping 10.0.0.61
PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
64 bytes from 10.0.0.61: icmp_seq=1 ttl=64 time=0.466 ms
64 bytes from 10.0.0.61: icmp_seq=2 ttl=64 time=0.658 ms
^C
--- 10.0.0.61 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.466/0.562/0.658/0.096 ms
[root@Web01 ~]# ping 172.16.1.61
PING 172.16.1.61 (172.16.1.61) 56(84) bytes of data.
^C
--- 172.16.1.61 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 2999ms

2、修改鏈默認規(guī)則,修改為拒絕,添加準許?

若默認規(guī)則修改為拒絕后,ping公網IP可以但是ping公網域名不行,故障類似于DNS解析有問題(我踩過的坑)

[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
[root@Ansible ~]# iptables -P INPUT DROP 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination                

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 
[root@Ansible ~]# iptables -A  INPUT   -s 10.0.0.0/24   -j  ACCEPT 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  10.0.0.0/24          0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 
 

iptables映射,# 進階運維知識,運維知識分享,運維,ssh,網絡協(xié)議,iptables,防火墻,四表五鏈,NAT表

5、指定多個端口

[root@Ansible ~]# ??iptables -I INPUT -p tcp --dport 8888 -j DROP 
[root@Ansible ~]# iptables -I INPUT -p tcp --dport 9999 -j DROP 
[root@Ansible ~]# ?iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:9999
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

[root@Ansible ~]# iptables -I INPUT  -p tcp -m multiport ! --dport 80,443  -j DROP

#如果是禁用連續(xù)端口可以不加-m multiport 1:1024
[root@Ansible ~]# iptables -I INPUT  -p tcp  --dport 1024:65535  -j DROP 
[root@Ansible ~]#  iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:1024:65535

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

6、匹配ICMP類型

ICMP(Internet Control Message Protocol)Internet控制報文協(xié)議,ping,是整個網站的核心

通過防火墻規(guī)則,控制是否可以ping

[root@Ansible ~]# iptables -I INPUT  -p icmp --icmp-type 8  -j DROP 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       icmp --  0.0.0.0/0            0.0.0.0/0            icmptype 8

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

[root@Web01 ~]# ping 10.0.0.61
PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
^C
--- 10.0.0.61 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5002ms

通過內核參數(shù),控制禁止被ping?

[root@Ansible ~]# cat /etc/sysctl.conf     
net.ipv4.icmp_echo_ignore_all = 0    #0為允許,1為禁止
[root@Ansible ~]# sysctl -p 
net.ipv4.icmp_echo_ignore_all = 0

7、匹配網絡狀態(tài)(TCP/IP連接狀態(tài))

-m state --state

NEW:已經或將啟動新的連接

ESTABLISHED:已建立的連接

RELATED:正在啟動的新連接

INVALID:非法或無法識別的

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
?
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

8、限制并發(fā)及速率

-m limit 限制模塊

-m limit --limit 10/minute     #每分鐘只能有10個數(shù)據(jù)包 每6秒生成

?-m limit --limit n/{second/minute/hour}:指定時間內的請求速率”n”為速率,后面為時間分別為:秒 分 時

-m limit --limit 10/minute   --limit-burst 5  每6秒釋放工牌 給別人使用 
?
#10個數(shù)據(jù)包   
前5個  1個1個工牌   從第6個開始 每6秒 才能釋放1個工牌 

--limit-burst [n]:在同一時間內允許通過的請求“n”為數(shù)字,不指定默認為5

#ping  icmp 協(xié)議  進行測試
[root@Ansible ~]# iptables -F 
[root@Ansible ~]# iptables -I INPUT  -p icmp  -m limit --limit 10/minute    --limit-burst 5   -j ACCEPT 
[root@Ansible ~]# iptables -A INPUT  -p tcp  --dport 22 -j  ACCEPT 
[root@Ansible ~]# iptables -P INPUT DROP 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 10/min burst 5
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

?測試

[root@Web01 ~]# ping 10.0.0.61
PING 10.0.0.61 (10.0.0.61) 56(84) bytes of data.
64 bytes from 10.0.0.61: icmp_seq=1 ttl=64 time=0.298 ms
64 bytes from 10.0.0.61: icmp_seq=2 ttl=64 time=1.33 ms
64 bytes from 10.0.0.61: icmp_seq=3 ttl=64 time=0.435 ms
64 bytes from 10.0.0.61: icmp_seq=4 ttl=64 time=0.460 ms
64 bytes from 10.0.0.61: icmp_seq=5 ttl=64 time=0.758 ms
64 bytes from 10.0.0.61: icmp_seq=7 ttl=64 time=2.28 ms    #7和1之間間隔6秒
64 bytes from 10.0.0.61: icmp_seq=13 ttl=64 time=0.793 ms  #13和7之間間隔6秒
64 bytes from 10.0.0.61: icmp_seq=19 ttl=64 time=0.734 ms
64 bytes from 10.0.0.61: icmp_seq=25 ttl=64 time=0.803 ms
^C
--- 10.0.0.61 ping statistics ---
26 packets transmitted, 9 received, 65% packet loss, time 25013ms
rtt min/avg/max/mdev = 0.298/0.877/2.286/0.572 ms

9、防火墻規(guī)則的保存與恢復

iptables-save 保存,默認輸出到屏幕

iptables-restore 恢復,加上文件

寫入/etc/sysconfig/iptables

[root@Ansible ~]# iptables-save   >/etc/sysconfig/iptables
[root@Ansible ~]#  cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Sun May  7 16:11:34 2023
*nat
:PREROUTING ACCEPT [306:36403]
:INPUT ACCEPT [182:29467]
:OUTPUT ACCEPT [145:11135]
:POSTROUTING ACCEPT [145:11135]
COMMIT
# Completed on Sun May  7 16:11:34 2023
# Generated by iptables-save v1.4.21 on Sun May  7 16:11:34 2023
*filter
:INPUT DROP [17:1428]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [49:5580]
-A INPUT -p icmp -m limit --limit 10/min -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Sun May  7 16:11:34 2023
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 10/min burst 5
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@Ansible ~]# iptables -D INPUT 1 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@Ansible ~]# iptables-restore < /etc/sysconfig/iptables
[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0            limit: avg 10/min burst 5
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

此外,systemctl restart iptables 會讀取/etc/sysconfig/iptables內容

10、filter表簡單總結

1、封ip,端口,網段

2、禁止ping

3、限制速度和并發(fā)

4、iptables filter表功能可以在云服務器使用

企業(yè)中用法

iptables配置方式:1、逛公園模式,默認規(guī)則是ACCEPT;2、看電影模式,默認規(guī)則是DROP

默認是拒絕

1、ssh可以連接

[root@Ansible ~]# iptables -F
[root@Ansible ~]# iptables -X
[root@Ansible ~]# iptables -Z
[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@Ansible ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 



[root@Web01 ~]# ssh 10.0.0.61 hostname
root@10.0.0.61's password: 
Ansible

2、設置允許本機lo通訊規(guī)則

允許本機回環(huán)lo(本地操作)接口數(shù)據(jù)流量流出和流入

[root@Ansible ~]# iptables -A INPUT -i lo -j ACCEPT
[root@Ansible ~]# iptables -A OUTPUT -o lo -j ACCEPT

3、配置默認規(guī)則及放行80,443端口

[root@Ansible ~]# iptables -P INPUT DROP 
[root@Ansible ~]# iptables -P FORWARD DROP 
[root@Ansible ~]# iptables -P OUTPUT ACCEPT 
[root@Ansible ~]# 
[root@Ansible ~]# iptables -A INPUT  -m multiport -p tcp  --dport 443,80   -j ACCEPT
[root@Ansible ~]# iptables -nL 
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 443,80

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
[root@Ansible ~]# iptables -A INPUT  -s 10.0.0.0/24  -j ACCEPT 
[root@Ansible ~]# iptables -A INPUT  -s 172.16.1.0/24  -j ACCEPT
#此處還可以添加 vpn網段 比如說 10.7.1.0/24

[root@Ansible ~]# iptables -nL
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 443,80
ACCEPT     all  --  10.0.0.0/24          0.0.0.0/0           
ACCEPT     all  --  172.16.1.0/24        0.0.0.0/0           

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
[root@Ansible ~]# iptables-save 
# Generated by iptables-save v1.4.21 on Sun May  7 16:24:29 2023
*nat
:PREROUTING ACCEPT [9:711]
:INPUT ACCEPT [2:112]
:OUTPUT ACCEPT [3:312]
:POSTROUTING ACCEPT [3:312]
COMMIT
# Completed on Sun May  7 16:24:29 2023
# Generated by iptables-save v1.4.21 on Sun May  7 16:24:29 2023
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [7:1480]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m multiport --dports 443,80 -j ACCEPT
-A INPUT -s 10.0.0.0/24 -j ACCEPT
-A INPUT -s 172.16.1.0/24 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sun May  7 16:24:29 2023

NAT表

恢復鏈

[root@Ansible ~]# iptables -P INPUT ACCEPT
[root@Ansible ~]# iptables -P FORWARD ACCEPT 
[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 443,80
ACCEPT     all  --  10.0.0.0/24          0.0.0.0/0           
ACCEPT     all  --  172.16.1.0/24        0.0.0.0/0           

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
[root@Ansible ~]# iptables -F
[root@Ansible ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

1、實現(xiàn)共享上網

1、防火墻配置

[root@Ansible ~]#  iptables -t nat -A POSTROUTING  -s 172.16.1.0/24   -j SNAT  --to-source 10.0.0.61 
[root@Ansible ~]# echo 'net.ipv4.ip_forward = 1'  >> /etc/sysctl.conf 
[root@Ansible ~]# sysctl -p
net.ipv4.icmp_echo_ignore_all = 0
net.ipv4.ip_forward = 1

注意:公網IP不固定
iptables -t nat -A POSTROUTING  -s 172.16.1.0/24   -j  MASQUERADE

2、web配置

[root@Web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=no            #修改網卡,禁止開機自啟動
IPADDR=10.0.0.7
PREFIX=24
GATEWAY=10.0.0.2
DNS1=223.5.5.5
[root@Web01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=10.0.0.7
PREFIX=24
GATEWAY=172.16.1.61
DNS1=1.2.4.8
[root@Web01 ~]# systemctl restart network
[root@Ansible ~]# ssh 172.16.1.7
Last login: Sun May  7 21:16:43 2023 from 10.0.0.1
[root@Web01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
    link/ether 00:0c:29:91:01:20 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:91:01:2a brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.7/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe91:12a/64 scope link 
       valid_lft forever preferred_lft forever

?3、在web01測試結果

[root@Web01 ~]# ip r
default via 172.16.1.61 dev eth1 
169.254.0.0/16 dev eth1 scope link metric 1003 
172.16.1.0/24 dev eth1 proto kernel scope link src 172.16.1.7 
[root@Web01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.1.61     0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@Web01 ~]# ping baidu.com
PING baidu.com (39.156.66.10) 56(84) bytes of data.
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=127 time=10.3 ms
64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=127 time=12.3 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 10.306/11.346/12.386/1.040 ms
[root@Web01 ~]# ping 1.2.4.8
PING 1.2.4.8 (1.2.4.8) 56(84) bytes of data.
64 bytes from 1.2.4.8: icmp_seq=1 ttl=127 time=12.5 ms
64 bytes from 1.2.4.8: icmp_seq=2 ttl=127 time=11.3 ms
^C
--- 1.2.4.8 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 11.337/11.945/12.554/0.618 ms

2、端口轉發(fā)(端口映射)

iptables映射,# 進階運維知識,運維知識分享,運維,ssh,網絡協(xié)議,iptables,防火墻,四表五鏈,NAT表

[root@Ansible ~]# iptables -t nat -A PREROUTING    -d 10.0.0.61 -p tcp --dport 9000  -j DNAT --to-destination 172.16.1.7:22
[root@Ansible ~]# iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.0.0.61            tcp dpt:9000 to:172.16.1.7:22

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  172.16.1.0/24        0.0.0.0/0            to:10.0.0.61

?本地shell測試

c:\~]$ ssh root@10.0.0.61 9000


Connecting to 10.0.0.61:9000...
Connection established.
To escape to local shell, press Ctrl+Alt+].

Last login: Sun May  7 21:34:55 2023 from 10.0.0.61

3、IP映射

[root@Ansible ~]#  iptables -t nat -A PREROUTING  -d 10.0.0.62  -j DNAT  --to-destination 172.16.1.7 
[root@Ansible ~]# iptables -nL -t nat 
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.0.0.61            tcp dpt:9000 to:172.16.1.7:22
DNAT       all  --  0.0.0.0/0            10.0.0.62            to:172.16.1.7

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  172.16.1.0/24        0.0.0.0/0            to:10.0.0.61

4、NAT表簡單總結

1、可以實現(xiàn)共享上網

2、可以實現(xiàn)端口轉發(fā)

3、NAT功能在云服務器無法使用,但有替代品叫NAT網關

iptables簡單練習

1、查看iptables當前所有規(guī)則的命令

iptables-save 

iptables -nL

iptables -nL -t nat

2、禁止來自10.0.0.188IP地址訪問80端口的請求

iptables -I   INPUT   -s 10.0.0.188 -p tcp   --dport 80      -j  DROP 

3、在命令行執(zhí)行的iptables規(guī)則永久生效

iptables-save > /etc/sysconfig/iptables

?4、實現(xiàn)把訪問10.0.0.3:80請求轉到172.16.1.17:80

iptables -t nat  -A PREROUTING  -d 10.0.0.3  -p tcp --dport 80    -j   DNAT  --to-destination  172.16.1.17:80

5、實現(xiàn)172.16.1.0/24段所有主機通過124.32.54.26外網IP共享上網

iptables   -t nat  -A POSTROUTING    -s 172.16.1.0/24    -j  SNAT  --to-source   123.32.54.26
?
iptables   -t nat  -A POSTROUTING    -s 172.16.1.0/24    -j  SNAT  MASQUERADE

6、iptables實現(xiàn)防止syn ddos和ping攻擊

-A FORWARD -p tcp --syn -m limit --limit 1/s --limit-burst 5 -j ACCEPT
-A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
-A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
說明:第一行:每秒中最多允許5個新連接。第二行:防止各種端口掃描。第三行:Ping洪水攻擊(Ping of Death),可以根據(jù)需要調整或關閉

我是koten,10年運維經驗,持續(xù)分享運維干貨,感謝大家的閱讀和關注!

?文章來源地址http://www.zghlxwxcb.cn/news/detail-704303.html

到了這里,關于【運維知識進階篇】iptables防火墻詳解(iptables執(zhí)行過程+表與鏈概述+iptables命令參數(shù)+配置filter表規(guī)則+NAT表實現(xiàn)共享上網、端口轉發(fā)、IP映射)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • iptables防火墻概念-規(guī)則命令詳解-配置文件修改

    iptables防火墻概念-規(guī)則命令詳解-配置文件修改

    iptables 其實不是真正的防火墻,我們可以把它理解成一個客戶端代理,用戶通過 iptables 這個代理,將用戶的安全設定執(zhí)行到對應的 安全框 中,這個 全框 才是真正的防火墻,這個框架的名字叫 netfilter netfilter 才是防火墻真正的安全框架( framework ), netfilter 位于內核空間,

    2024年02月13日
    瀏覽(16)
  • 【防火墻】iptables防火墻(一)

    【防火墻】iptables防火墻(一)

    防火墻具有 隔離功能 主要部署在網絡邊緣或者主機邊緣,防火墻的主要作用是 決定哪些數(shù)據(jù)可以被外網訪問,哪些數(shù)據(jù)可以進入內網訪問 網絡層(路由器):數(shù)據(jù)的轉發(fā) 安全技術 1.入侵監(jiān)測系統(tǒng):在檢測到威脅(木馬、病毒)后,不會阻斷網絡訪問,只會在事后提供報警

    2024年02月15日
    瀏覽(53)
  • iptables防火墻(一)

    iptables防火墻(一)

    Linux系統(tǒng)的防火墻:IP信息包過濾系統(tǒng),它實際上由兩個組件 netfilter 和 iptables 組成。 主要工作在網絡層,針對IP數(shù)據(jù)包。體現(xiàn)在對包內的IP地址、端口、協(xié)議等信息的處理上。 1.netfilter netfilter 屬于\\\"內核態(tài)\\\"(Kernel Space,又稱為內核空間)的防火墻功能體系。 netfilter是內核的

    2024年02月05日
    瀏覽(23)
  • iptables防火墻2

    iptables防火墻2

    SNAT 應用環(huán)境:局域網主機共享單個公網IP地址接入Internet(私有不能早Internet中正常路由) SNAT原理:修改數(shù)據(jù)包的源地址。 SNAT轉換前提條件: 1.局域網各主機已正確設置IP地址、子網掩碼、默認網關地址 2.Linux網關開啟IP路由轉發(fā) 臨時打開: 或 永久打開: SNAT轉換 1:固定的

    2024年02月05日
    瀏覽(20)
  • iptables 防火墻(二)

    iptables 防火墻(二)

    目錄 1. SNAT 策略及應用 1.1 SNAT策略概述 ?1. 只開啟路由轉發(fā),未設置地址轉換的情況 2. 開啟路由轉發(fā),并設置SNAT轉換的情況 1.2 SNAT策略的應用 1. 2.1 共享固定IP上網 (1)打開網關的路由轉發(fā) (2)設置正確的SNAT策略 (3)測試SNAT共享接入結果 1.2.2 共享動態(tài)IP 地址上網 2. DN

    2024年02月03日
    瀏覽(24)
  • 【iptables 實戰(zhàn)】06 iptables網絡防火墻實驗

    【iptables 實戰(zhàn)】06 iptables網絡防火墻實驗

    在上一節(jié)中,我們將兩個網段的機器,通過中間機器的網絡轉發(fā),能達到互通。再來回顧一下這個網絡連接的圖 這一節(jié),我們將通過設置機器B的iptables規(guī)則,來做一些防火墻實驗 機器A模擬公網的一臺服務器,機器C模擬我們內網的一臺機器。機器B充當路由器的角色 2.1 三臺機

    2024年02月07日
    瀏覽(22)
  • Linux——iptables防火墻

    Linux系統(tǒng)的防火墻:IP信息包過濾系統(tǒng),它實際上由兩個net filter和iptables組成。 主要工作在網絡層,針對IP數(shù)據(jù)包。體現(xiàn)在對包內的IP地址、端口、協(xié)議等信息的處理上。 netfilter:屬于“內核態(tài)”(Kernel Space,又稱內核空間)的防火墻功能體系 是內核的一部分,由一些數(shù)據(jù)包

    2024年02月07日
    瀏覽(19)
  • iptables防火墻-NAT

    iptables防火墻-NAT

    工作在網絡層和傳輸層,實現(xiàn)地址重寫,實現(xiàn)端口重寫 ??? 作用:①隱藏本地網路中主機地址 ? ? ? ? ? ? ? ? ②節(jié)約IP地址的使用 分為DNAT和SNAT(互相對應的,需要查找NAT會話表) ?? SNAT:只是修改請求報文的源地址(為了隱藏真實服務器的IP地址) ?? DNAT:只是修改請

    2024年04月16日
    瀏覽(23)
  • 【Linux】iptables防火墻

    【Linux】iptables防火墻

    Linux 系統(tǒng)的防火墻:IP信息包過濾系統(tǒng),它實際上由兩個組件netfilter 和 iptables組成。 主要工作在網絡層,針對IP數(shù)據(jù)包,體現(xiàn)在對包內的IP地址、端口、協(xié)議等信息的處理上。 netfilter 位于Linux內核中的包過濾功能體系 稱為Linux防火墻的“內核態(tài)\\\" iptables 位于/sbin/iptables,用來管

    2024年02月07日
    瀏覽(19)
  • iptables安全與防火墻

    防火墻主要作用是隔離功能,它是部署在網絡邊緣或主機邊緣;另外在生產中防火墻的主要作用是:決定哪些數(shù)據(jù)可以被外網訪問以及哪些數(shù)據(jù)可以進入內網訪問;顧名思義防火墻處于TCP協(xié)議中的網絡層。 防火墻分類: 軟件防火墻:360,iptables,firewalld 硬件防火墻:路由器

    2024年02月12日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包