日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iptables防火墙策略

發布時間:2023/11/27 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iptables防火墙策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境:

foundation1???? 172.25.1.250??? 172.25.254.1

server1???????????? 172.25.1.1

server2???????????? 172.25.1.2

server3???????????? 172.25.1.3

四個主機都做解析

iptables簡介:

netfilter/iptables(簡稱為iptables)組成Linux平臺下的包過濾防火墻,與大多數的Linux軟件一樣,這個包過濾防火墻是免費的,它可以代替昂貴的商業防火墻解決方案,完成封包過濾、封包重定向和網絡地址轉換(NAT)等功能。

iptables采用“表”和“鏈”的分層結構,在linux中iptables主要有三張表五條鏈:

三張表即filter表、nat表、mangle表,分別用于實現包過濾,網絡地址轉換、包重構(修改)功能

filter表有三個鏈:INPUT、FORWARD、OUTPUT
作用:過濾數據包?

Nat表有三個鏈:PREROUTING、POSTROUTING、OUTPUT
作用:用于網絡地址轉換(IP、端口)

Mangle表有五個鏈:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改數據包的服務類型等

iptables命令中設置數據過濾或處理數據包的策略叫做規則,將多個規則合成一個鏈,叫規則鏈。

規則鏈則依據處理數據包的位置不同分類:

PREROUTING: 在進行路由判斷之前所要進行的規則(DNAT/REDIRECT)
INPUT:處理入站的數據包
OUTPUT:處理出站的數據包
FORWARD:處理轉發的數據包
POSTROUTING: 在進行路由判斷之后所要進行的規則(SNAT/MASQUERADE)

iptables中的規則表是用于容納規則鏈,規則表默認是允許狀態的,那么規則鏈就是設置被禁止的規則,而反之如果規則表是禁止狀態的,那么規則鏈就是設置被允許的規則。

raw表:確定是否對該數據包進行狀態跟蹤

mangle表:為數據包設置標記(較少使用)

nat表:修改數據包中的源、目標IP地址或端口

filter表:確定是否放行該數據包(過濾)

另外注意:

1.沒有指定規則表則默認指filter表。

2.不指定規則鏈則指表內所有的規則鏈。

3.在規則鏈中匹配規則時會依次檢查,匹配即停止(LOG規則例外),若沒匹配項則按鏈的默認狀態處理。

注意:

你所定義的所有內容,當你重啟的時候都會失效,要想我們能夠生效,需要使用一個命令將它保存起來

1.service iptables save 命令

它會保存在/etc/sysconfig/iptables這個文件中

? ? 2.iptables-save 命令

iptables-save > /etc/sysconfig/iptables

為了不影響實驗去除干擾,將 firewalld 關閉,安裝 iptables,并啟動

[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# systemctl status firewalld

[root@server1 ~]# yum install iptables-services????????????????????? //下載防火墻服務,server1、server2、server3均下載

[root@server1 ~]# systemctl start iptables.service??????????????? //開啟服務

[root@server1 ~]# 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@server1 ~]# iptables -F??????????? //刷新策略
[root@server1 ~]# 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@server1 ~]# yum install -y httpd????????????????????? //下載http服務

[root@server1 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

[root@server1 ~]# systemctl start httpd????????????????? ?? //開啟http服務
[root@server1 ~]# iptables -P INPUT ACCEPT???????? //設置接受模式

此時所有主機瀏覽器都可以訪問httpd頁面,這里用curl命令

給server1寫一個Apache的發布頁面

[root@server1 ~]# cd /var/www/html/
[root@server1 html]# ls
[root@server1 html]# vim index.html

[root@foundation1 Desktop]# curl server1

[root@server2 ~]# curl server1
server1

[root@server3 ~]# curl server1
server1

[root@server1 ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT?????????????? //添加策略,使http為拒絕

[root@server1 ~]# iptables -nL?????????? //查看策略是否已添加
Chain INPUT (policy ACCEPT)
target???? prot opt source?????????????? destination??????? ?
REJECT???? tcp? --? 0.0.0.0/0??????????? 0.0.0.0/0??????????? tcp dpt:80 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target???? prot opt source?????????????? destination??????? ?

Chain OUTPUT (policy ACCEPT)
target???? prot opt source?????????????? destination?

此時:

[root@server2 ~]# curl server1

[root@server3 ~]# curl server1
curl: (7) Failed connect to server1:80; Connection refused

[root@server1 ~]# iptables -A INPUT -s 172.25.1.2 -p tcp --dport 80 -j ACCEPT??????? //指定ip為server2可以訪問該主機的http服務

[root@server1 ~]# iptables -nL

[root@server2 ~]# curl server1
curl: (7) Failed connect to server1:80; Connection refused

防火墻策略讀取方式:

讀取時從第一條開始讀取,當滿足第一條時停止讀取。

可以看到雖然有策略,但是server2還是不能訪問,因為第一條策略讀完就拒之門外,所以因采用:

[root@server1 ~]# iptables -D INPUT 2
[root@server1 ~]# iptables -I INPUT 1 -s 172.25.1.2 -p tcp --dport 80 -j ACCEPT [root@server1 ~]# iptables -nL

[root@server1 ~]# iptables -nL

此時:

[root@server2 ~]# curl server1

[root@server3 ~]# curl server1

[root@server1 ~]# iptables -R INPUT 2 -s 172.25.1.3 -p tcp --dport 80 -j ACCEPT?? ?? //修改第二條策略,修改為允許server3訪問

[root@server1 ~]# iptables -nL

此時server3也可進行訪問

[root@server3 ~]# curl server1

[root@server1 ~]# iptables -F?????? //刷新策略
[root@server1 ~]# iptables -nL???? //察看是否已刷新

[root@server1 ~]# iptables -N xx??????????? //添加名為xx的鏈
[root@server1 ~]# iptables -nL

[root@server1 ~]# iptables -E xx cc????????????????? //修改鏈名,將名為xx的鏈修改為cc
[root@server1 ~]# iptables -nL

[root@server1 ~]# iptables -X cc??????????????? //刪除鏈cc
[root@server1 ~]# iptables -nL

?

NAT (Net Address Trancelate:網絡地址轉換)

*************************源地址轉換:SNAT*********************************

(源地址轉換)是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換為指定的 IP,這樣,接收方就認為數據包的來源是被替換的那個 IP 的 主機

*************************目的地址轉換:DNAT*******************************

(目標地址轉換),就是指數據包從網卡發送出去的時候,修改數據包中的目的 IP,表現為如果你想訪問 A,可是因為網關做了 DNAT,把所有訪問 A 的數 據包的目的 IP 全部修改為 B,那么,你實際上訪問的是 B

注意:實現配置iptables的NAT功能需要 開啟內核的轉發功能

?

1、SNAT

環境:

server1:172.25.1.1

server2: 172.25.1.2??????? 172.25.254.2???????????????? 開啟iptables服務

server3:172.25.254.3

## 所有主機刷新策略,并關閉防火墻firewalld

##? 打開轉發IP功能(IP forwarding):

echo "1" > /proc/sys/net/ipv4/ip_forward

要想永久有效:

  vim /etc/sysctl.conf

  net.ipv4.ip_forward = 1

如果使用PPP、DHCP等動態IP,需要打開:

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

[root@server2 ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

[root@server2 ~]# systemctl status iptables

[root@server2 ~]# ip address add 172.25.254.2/24 dev eth1?????????????????? //添加網卡eth1:172.25.254.2

[root@server1 ~]# ip addr

[root@server3 ~]# ip addr

原本不同網段ip是ping不通的,即server1和server3是ping不通的

[root@server1 ~]# ping 172.25.254.3

[root@server2 ~]# iptables -nL -t nat???????? //查看nat策略

[root@server2 ~]# iptables -t nat -I POSTROUTING -s 172.25.1.0/24 -j MASQUERADE

//在路由后,將172.25.1.0/24網段過來的主機轉發出去

[root@server2 ~]# iptables -nL -t nat

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0????????? //添加網關

GATEWAY=172.25.1.2

[root@server1 ~]# systemctl restart network

[root@server2 ~]# route -n
-bash: route: command not found
[root@server2 ~]# yum install -y net-tools???????????????? //下載route 命令所需的工具

[root@server1 ~]# route -n?????????????? //查看網關

[root@server1 ~]# ping 172.25.254.3?????????????

//此時雖然是不同網段,但是可以ping通

2、DNAT????

環境:

server1 內網 172.25.1.1/24

server2 路由 172.25.1.2/24 ? 172.25.254.2/24

server3 外網 172.25.254.3/24

?

分別給三個主機寫一個http頁面,內容為各自的ip,方便判斷連接到的是哪個主機

[root@server1 ~]# yum install -y httpd

[root@server1 ~]# systemctl start httpd

[root@server1 ~]# echo 172.25.1.1 > /var/www/html/index.html????????????? //寫一個http頁面,內容為172.25.1.1

[root@server2 ~]# yum install -y httpd

[root@server2 ~]# systemctl start httpd

[root@server2 ~]# echo 172.25.1.2 > /var/www/html/index.html????????????? //寫一個http頁面,內容為172.25.1.1

[root@server3 ~]# yum install httpd

[root@server3 ~]# systemctl start httpd

[root@server3 ~]# systemctl status httpd

[root@server3 ~]# echo 172.25.254.3 > /var/www/html/index.html????????????? //寫一個http頁面,內容為172.25.254.3

給路由主機添加策略:

現在要把外網訪問172.25.254.2的所有流量映射到172.25.1.1上

[root@server2 ~]#? iptables -t nat -A PREROUTING -d 172.25.254.2 -j DNAT --to-destination 172.25.1.1??????
[root@server2 ~]#? iptables -t nat -A POSTROUTING -d 172.25.1.1 -j SNAT --to 172.25.1.2

[root@server2 ~]# iptables -nL -t nat

[root@server2 ~]# service iptables save??????????????????? //保存策略

[root@server2 ~]# cat? /etc/sysconfig/iptables????????????? //可以查看策略保存的內容

此時,外網用curl命令訪問路由主機,相當于http訪問:

[root@server3 ~]# curl 172.25.254.2

curl命令查看172.25.1.2內容時出現的不是172.25.1.2而是server1的內容,即172.25.1.1的httpd發布內容

也可以通過ssh遠程連接:

[root@server3 ~]# ssh root@172.25.254.2

//本應連接到server2,但此時遠程連接上的是server1而不是server2,因為目標地址進行了轉換,將172.25.254.2轉換成了172.25.1.1

?

總結

以上是生活随笔為你收集整理的iptables防火墙策略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:iptables防火墙策略