第十四周-day55-iptables防火墻(上)

day55-iptables防火墻.png

架構展望
https://www.processon.com/view/link/5d19b17be4b0beaf6b9feff8


iptables防火墻必會面試題:https://www.cnblogs.com/wajika/p/6382853.html

非常詳細的iptable原理
http://www.zsythink.net/archives/1199/

1.常見防火墻選用

  • 硬件防火墻

  • 開源軟件:iptables(默認規(guī)則改為INPUT DROP)

  • 云服務器:安全組(阿里云 白名單,默認是拒絕的)

2.iptables使用 執(zhí)行過程
3.iptables 4表5鏈
4.準備iptables環(huán)境
5.iptables功能之一防火墻
  • 封IP 封端口

  • 準許某個ip訪問 網段訪問

6.iptables功能之內網服務器上外網(共享上網)
7.iptables功能之 端口轉發(fā)

2.常見防火墻選用

  • 公司網站入口使用的硬件 防火墻 、三次路由帶有防火墻功能
  • itpables訪問量小 C5 C6自帶,CentOS 7為Firewalld
  • SELinux

3.相關名詞與單詞

名詞 含義 對比
容器 存放內容/存放東西
Netfilter/iptables 是表的容器 國家
(table) 是用來存放鏈的容器
(chain) 鏈 存放規(guī)則的容器
規(guī)則(policy) 準許/拒絕訪問 區(qū)/縣

4.防火墻執(zhí)行過程

  1. 防火墻是層層過濾的,實際是按照配置規(guī)則的順序從上到下從前到后進行過濾的。
  2. 如果匹配上規(guī)則,即明確表示是阻止(DROP)還是通過(ACCEPT)數據包就不再向下匹配新的規(guī)則。
  3. 如果規(guī)則中沒有明確表明是阻止還是通過的,也就是沒有匹配規(guī)則,向下進行匹配,直到匹配默認規(guī)則得到明確的阻止還是通過。
  4. 防火墻的默認規(guī)則是所有規(guī)則執(zhí)行完才執(zhí)行的。

5.四表五鏈

5.1 四表及作用

功能
Filter 過濾,默認的表,防火墻功能
NAT 實現NAT轉化:1.共享上網 2.端口轉發(fā)
mangle 查詢幫助man iptables 了解即可
raw 查詢幫助man iptables 了解即可

5.2 四表中的5鏈


五鏈:
PREROUTING
FORWARD
INPUT
OUPUT
POSTROUTING

5.3 filter表和nat表

image.png

5.3.1 filter表

filter表 企業(yè)工作場景:主機防火墻
INPUT 就是過濾進入主機的數據包
FORWARD 負責轉發(fā)流經主機的數據包
OUTPUT 就是處理從主機發(fā)出去的數據包

5.3.2 nat表

nat表
PREROUTING 處理用戶請求中的目的地址 目的端口 端口轉發(fā) ip映射
POSTROUTING 處理離開服務器的請求 源端口 源ip :共享上網
OUTPUT 和主機放出去的數據包有關,改變主機發(fā)出數據包的目的地址

補充:

filter表:
??INPUT 作用:用于發(fā)送到本地套接字的數據包。
?FORWARD 作用:對于正在通過該框路由的數據包
?OUTPUT 作用:用于本地生成的數據包。

nat表:
?PREROUTING 作用:因為他們一進來就改變了包
?OUTPUT 作用:用于在路由之前更改本地劃分的數據包。
?POSTROUTING 作用:改變包,因為它們即將離開

6.防火墻之filter表

6.1環(huán)境準備

m01 iptables iptables-services
db01 iptables iptables-services
[root@m01 ~]# rpm -qa iptables-services
iptables-1.4.21-28.el7.x86_64
[root@m01 ~]# rpm -ql iptables-services
/etc/sysconfig/ip6tables
/etc/sysconfig/iptables #iptables 配置文件
/usr/lib/systemd/system/ip6tables.service
/usr/lib/systemd/system/iptables.service    #iptables服務管理配置

啟動防火墻

[root@m01 ~]# systemctl stop firewalld    #CentOS7關閉firewalld
[root@m01 ~]# systemctl restart iptables
[root@m01 ~]# systemctl enable iptables

手動加載內核模塊

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

檢查防火墻內核模塊是否加載成功:

[root@m01 ~]# lsmod |egrep 'nat|ipt|filter'
nf_nat_ftp             12770  0 
nf_conntrack_ftp       18638  1 nf_nat_ftp
ipt_REJECT             12541  2 
nf_reject_ipv4         13373  1 ipt_REJECT
ipt_MASQUERADE         12678  1 
nf_nat_masquerade_ipv4    13412  1 ipt_MASQUERADE
iptable_filter         12810  1 
xt_nat                 12681  2 
iptable_nat            12875  1 
nf_nat_ipv4            14115  1 iptable_nat
nf_nat                 26787  4 nf_nat_ftp,nf_nat_ipv4,xt_nat,nf_nat_masquerade_ipv4
nf_conntrack          133095  8 nf_nat_ftp,nf_nat,xt_state,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ftp,nf_conntrack_ipv4
ip_tables              27126  2 iptable_filter,iptable_nat
libcrc32c              12644  3 xfs,nf_nat,nf_conntrack

6.2 配置規(guī)則-禁止訪問22端口

[root@m01 ~]# iptables -F  #清除規(guī)則
[root@m01 ~]# iptables -X
[root@m01 ~]# iptables -Z
[root@m01 ~]# iptables -nL #查看規(guī)則
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@m01 ~]# #添加一條規(guī)則,禁止22端口訪問
[root@m01 ~]# iptables -t filter -A INPUT -p tcp --dport 22 -j DROP
[root@m01 ~]# 
Type `help' to learn how to use Xshell prompt.
[d:\~]$    #斷開了~跑下機房
刪除規(guī)則,重新連接m01
[root@m01 ~]# iptables -nL --line-number #查看防火墻規(guī)則
[root@m01 ~]# iptables -t filter -D INPUT 1   #刪除第1條規(guī)則
[root@m01 ~]# iptables -nL --line-number #再次查看
image.png

重新連接 22端口就可以用了

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

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

Last login: Tue Jul  2 17:04:55 2019
[root@m01 ~]# 
配置防火墻規(guī)則注意事項:
  1. 去機房重啟系統(tǒng)或者登陸服務器刪除剛才的禁止規(guī)則。

  2. 讓機房人員重啟服務器或者讓機房人員拿用戶密碼登錄進去

  3. 通過服務器的遠程管理卡管理(推薦)

  4. 先寫一個定時任務,每5分鐘就停止防火墻**5. 測試環(huán)境測試好,寫成腳本,批量執(zhí)行

6.3 filter表其他規(guī)則配置

6.3.1 只讓10.0.0.0/24網段進行訪問連接

只要是10.0.0.0/24 局域網的用戶 訪問m01 都ACCEPT

此例子主要限制:網段或ip地址

[root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP   #"!" 嘆號表示取反
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           

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

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

去另一臺服務器上測試一下是否成功:

[root@db01 ~]# ssh 10.0.0.61  #連接10.0.0.61,可以連接
root@10.0.0.61's password: 
Last login: Tue Jul  2 17:41:01 2019 from 10.0.0.51
[root@m01 ~]# logout  #退出
Connection to 10.0.0.61 closed.
[root@db01 ~]# ssh 172.16.1.61    #連接172.16.1.61,不可以連接
....等到死
image.png

6.3.2準許或禁止端口

多個端口:表示范圍 1-1024范圍

[root@m01 ~]# iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP 
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpts:!1:1024
2    DROP       tcp  -- !10.0.0.0/24          0.0.0.0/0           

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

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

多個端口 不連續(xù) 80,443,52113,22

[root@m01 ~]# iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 -j DROP 
[root@m01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports  !80,443,22
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         

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

6.4 iptables命令及參數

iptables
-t 指定表 filter(默認) nat
-A append 把規(guī)則追加到末尾
-I (大寫字母i ) insert 把規(guī)則插入到規(guī)則的第1條 (添加拒絕類規(guī)則的時候)
-p protocal 指定協(xié)議:tcp /udp/icmp
--dport destination port 目標端口
--sport source port 源端口
-d dest ip address 目標ip地址
-s source ip address 源ip地址
-j jump 方法 DROP (拒絕)、 ACCEPT(準許) 、REJECT(拒絕)
iptables查看 刪除
-F 清除鏈中所有規(guī)則
-X 清空自定義鏈的規(guī)則
-Z 清空計數器
-n 不要把端口解析服務名字
-L 顯示表中的規(guī)則
--line-number 給每個鏈中的規(guī)則加上行號
-D 刪除規(guī)則 根據規(guī)則的號碼進行刪除

7. nc命令

nc用法:

nc -l 指定監(jiān)聽端口

nc/telnet 連接

[root@m01 ~]# nc -l 888 #m01服務器上
愛你哦
晚上好
你也好

[root@db01 ~]# nc 10.0.0.61 888 #db01服務器上
愛你哦
晚上好
你也好

8.練習題

http://www.lxweimin.com/p/2180face8381

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.安全技術 (1)入侵檢測與管理系統(tǒng)(Intrusion Detection Systems): 特點是不阻斷任...
    尛尛大尹閱讀 2,489評論 0 2
  • 一、設置主機防火墻。 開放: 服務器的:web服務、vsftpd 文件服務、ssh遠程連接服務、ping 請求。 ...
    大福技術閱讀 1,133評論 0 0
  • 詳述iptables五鏈 防火墻程序是工作在內核的TCP/IP的網絡協(xié)議棧的框架之上,通過網絡過濾可以實現入侵檢測...
    Net夜風閱讀 894評論 1 1
  • 防火墻的概念iptables的簡介iptables命令網絡防火墻NATfirewalld服務 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,847評論 0 1
  • 梔子花開,美得純凈。 梔子花不用光鮮亮麗的顏色點綴自己,只有點點雪白,若有若無地隱匿在綠葉的后面,不過分張揚。走近...
    劉姿l閱讀 291評論 0 0