架構(gòu)展望
https://www.processon.com/view/link/5d19b17be4b0beaf6b9feff8
iptables防火墻必會(huì)面試題:https://www.cnblogs.com/wajika/p/6382853.html
非常詳細(xì)的iptable原理
http://www.zsythink.net/archives/1199/
1.常見防火墻選用
硬件防火墻
開源軟件:iptables(默認(rèn)規(guī)則改為INPUT DROP)
云服務(wù)器:安全組(阿里云 白名單阶淘,默認(rèn)是拒絕的)
2.iptables使用 執(zhí)行過程
3.iptables 4表5鏈
4.準(zhǔn)備iptables環(huán)境
5.iptables功能之一防火墻
封IP 封端口
準(zhǔn)許某個(gè)ip訪問 網(wǎng)段訪問
6.iptables功能之內(nèi)網(wǎng)服務(wù)器上外網(wǎng)(共享上網(wǎng))
7.iptables功能之 端口轉(zhuǎn)發(fā)
2.常見防火墻選用
- 公司網(wǎng)站入口使用的硬件 防火墻 、三次路由帶有防火墻功能
- itpables訪問量小 C5 C6自帶,CentOS 7為Firewalld
SELinux
3.相關(guān)名詞與單詞
名詞 | 含義 | 對(duì)比 |
---|---|---|
容器 | 存放內(nèi)容/存放東西 | |
Netfilter/iptables | 是表的容器 | 國(guó)家 |
表(table) | 表是用來存放鏈的容器 | 省 |
鏈(chain) | 鏈 存放規(guī)則的容器 | 市 |
規(guī)則(policy) | 準(zhǔn)許/拒絕訪問 | 區(qū)/縣 |
4.防火墻執(zhí)行過程
- 防火墻是層層過濾的,實(shí)際是按照配置規(guī)則的順序從上到下,從前到后進(jìn)行過濾的锐峭。
- 如果匹配上規(guī)則,即明確表示是阻止(DROP)還是通過(ACCEPT)數(shù)據(jù)包就不再向下匹配新的規(guī)則。
- 如果規(guī)則中沒有明確表明是阻止還是通過的盈电,也就是沒有匹配規(guī)則,向下進(jìn)行匹配杯活,直到匹配默認(rèn)規(guī)則得到明確的阻止還是通過匆帚。
- 防火墻的默認(rèn)規(guī)則是所有規(guī)則執(zhí)行完才執(zhí)行的。
5.四表五鏈
5.1 四表及作用
表 | 功能 |
---|---|
Filter | 過濾,默認(rèn)的表旁钧,防火墻功能 |
NAT | 實(shí)現(xiàn)NAT轉(zhuǎn)化:1.共享上網(wǎng) 2.端口轉(zhuǎn)發(fā) |
mangle | 查詢幫助man iptables 了解即可 |
raw | 查詢幫助man iptables 了解即可 |
5.2 四表中的5鏈
五鏈:
PREROUTING
FORWARD
INPUT
OUPUT
POSTROUTING
5.3 filter表和nat表
5.3.1 filter表
filter表 | 企業(yè)工作場(chǎng)景:主機(jī)防火墻 |
---|---|
INPUT | 就是過濾進(jìn)入主機(jī)的數(shù)據(jù)包 |
FORWARD | 負(fù)責(zé)轉(zhuǎn)發(fā)流經(jīng)主機(jī)的數(shù)據(jù)包 |
OUTPUT | 就是處理從主機(jī)發(fā)出去的數(shù)據(jù)包 |
5.3.2 nat表
nat表 | |
---|---|
PREROUTING | 處理用戶請(qǐng)求中的目的地址 目的端口 端口轉(zhuǎn)發(fā) ip映射 |
POSTROUTING | 處理離開服務(wù)器的請(qǐng)求 源端口 源ip :共享上網(wǎng) |
OUTPUT | 和主機(jī)放出去的數(shù)據(jù)包有關(guān)吸重,改變主機(jī)發(fā)出數(shù)據(jù)包的目的地址 |
補(bǔ)充:
filter表:
??INPUT 作用:用于發(fā)送到本地套接字的數(shù)據(jù)包。
?FORWARD 作用:對(duì)于正在通過該框路由的數(shù)據(jù)包
?OUTPUT 作用:用于本地生成的數(shù)據(jù)包歪今。
nat表:
?PREROUTING 作用:因?yàn)樗麄円贿M(jìn)來就改變了包
?OUTPUT 作用:用于在路由之前更改本地劃分的數(shù)據(jù)包嚎幸。
?POSTROUTING 作用:改變包,因?yàn)樗鼈兗磳㈦x開
6.防火墻之filter表
6.1環(huán)境準(zhǔ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服務(wù)管理配置
啟動(dòng)防火墻
[root@m01 ~]# systemctl stop firewalld #CentOS7關(guān)閉firewalld [root@m01 ~]# systemctl restart iptables [root@m01 ~]# systemctl enable iptables
手動(dòng)加載內(nèi)核模塊
[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
檢查防火墻內(nèi)核模塊是否加載成功:
[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:\~]$ #斷開了~跑下機(jī)房
刪除規(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 #再次查看
重新連接 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ī)則注意事項(xiàng):
去機(jī)房重啟系統(tǒng)或者登陸服務(wù)器刪除剛才的禁止規(guī)則。
讓機(jī)房人員重啟服務(wù)器或者讓機(jī)房人員拿用戶密碼登錄進(jìn)去
通過服務(wù)器的遠(yuǎn)程管理卡管理(推薦)
先寫一個(gè)定時(shí)任務(wù)田篇,每5分鐘就停止防火墻**5. 測(cè)試環(huán)境測(cè)試好替废,寫成腳本,批量執(zhí)行
6.3 filter表其他規(guī)則配置
6.3.1 只讓10.0.0.0/24網(wǎng)段進(jìn)行訪問連接
只要是10.0.0.0/24 局域網(wǎng)的用戶 訪問m01 都ACCEPT
此例子主要限制:網(wǎng)段或ip地址
[root@m01 ~]# iptables -A INPUT -p tcp ! -s 10.0.0.0/24 -j DROP #"!" 嘆號(hào)表示取反
[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
去另一臺(tái)服務(wù)器上測(cè)試一下是否成功:
[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,不可以連接 ....等到死
6.3.2準(zhǔn)許或禁止端口
多個(gè)端口:表示范圍 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
多個(gè)端口 不連續(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命令及參數(shù)
iptables | |
---|---|
-t | 指定表 filter(默認(rèn)) nat |
-A | append 把規(guī)則追加到末尾 |
-I (大寫字母i ) | insert 把規(guī)則插入到規(guī)則的第1條 (添加拒絕類規(guī)則的時(shí)候) |
-p | protocal 指定協(xié)議:tcp /udp/icmp |
--dport | destination port 目標(biāo)端口 |
--sport | source port 源端口 |
-d | dest ip address 目標(biāo)ip地址 |
-s | source ip address 源ip地址 |
-j | jump 方法 DROP (拒絕)泊柬、 ACCEPT(準(zhǔn)許) 舶担、REJECT(拒絕) |
iptables查看 刪除 | ||
---|---|---|
-F | 清除鏈中所有規(guī)則 | |
-X | 清空自定義鏈的規(guī)則 | |
-Z | 清空計(jì)數(shù)器 | |
-n | 不要把端口解析服務(wù)名字 | |
-L | 顯示表中的規(guī)則 | |
--line-number | 給每個(gè)鏈中的規(guī)則加上行號(hào) | |
-D | 刪除規(guī)則 根據(jù)規(guī)則的號(hào)碼進(jìn)行刪除 |
7. nc命令
nc用法:
nc -l 指定監(jiān)聽端口
nc/telnet 連接
[root@m01 ~]# nc -l 888 #m01服務(wù)器上
愛你哦
晚上好
你也好
[root@db01 ~]# nc 10.0.0.61 888 #db01服務(wù)器上
愛你哦
晚上好
你也好