https://blog.csdn.net/hackerain/article/details/8518167
1. 查看網(wǎng)絡(luò)監(jiān)聽的端口:
netstat -tunlp
2. 查看本機的路由規(guī)則:
route
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.217.99.1 0.0.0.0 UG 0 0 0 eth0
10.217.99.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 vboxnet0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Destination-->network
Genmask-->netmask
這兩者組成一個完整的網(wǎng)段
Gateway
如果為0.0.0.0戳葵,表示該路由直接由本機傳送出去,即通過局域網(wǎng)的MAC直接傳送,
如果顯示IP的話私植,表示改路由要經(jīng)過路由器才能傳送出去。
Flags:有多個標(biāo)志,代表的意義如下:
U (route is up):該路由是啟動的;
H (target is a host):目標(biāo)是一部主機 (IP) 而非網(wǎng)域;
G (use gateway):需要透過外部的主機 (gateway) 來轉(zhuǎn)遞封包;
R (reinstate route for dynamic routing):使用動態(tài)路由時,恢復(fù)路由信息的標(biāo)志;
D (dynamically installed by daemon or redirect):已經(jīng)由服務(wù)或轉(zhuǎn) port 功能設(shè)定為動態(tài)路由
M (modified from routing daemon or redirect):路由已經(jīng)被修改了;
! (reject route):這個路由將不會被接受(用來抵擋不安全的網(wǎng)域!)
Iface
這個路由傳遞封包的接口。
路由過程是有順序的视乐,從小網(wǎng)絡(luò)傳送到大網(wǎng)絡(luò),當(dāng)最后沒有合適的路由可以匹配時敢茁,就使用default路由佑淀,即destination是0.0.0.0的路由
3. /etc/services文件
每個port和各種service服務(wù)的對應(yīng)關(guān)系
4. 查看本地的網(wǎng)絡(luò)服務(wù)
netstat -tunlp #列出正在監(jiān)聽的網(wǎng)絡(luò)服務(wù)和端口
netstat -tunp #列出已聯(lián)機的網(wǎng)絡(luò)聯(lián)機狀態(tài)和端口
kill -9 PID #殺掉sshd進程,即可關(guān)閉該遠程連接
5. 查看網(wǎng)絡(luò)上的開放的網(wǎng)絡(luò)服務(wù)
nmap IP
nmap localhost
6.iptables
1) 查看防火墻格式化輸出
iptables [-t tables] [-L] [-nv]
選項與參數(shù):
-t :后面接 table ,例如 nat 或 filter ,若省略此項目,則使用默認(rèn)的filter
-L :列出目前的 table 的規(guī)則
-n :不進行 IP 與 HOSTNAME 的反查,顯示訊息的速度會快很多!
-v :列出更多的信息,包括通過該規(guī)則的封包總位數(shù)彰檬、相關(guān)的網(wǎng)絡(luò)接口等
eg:
查看filter表的chain
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
說明:
target:代表進行的動作, ACCEPT 是放行,而 REJECT 則是拒絕,此外,尚有 DROP (丟棄) 的項目!
prot:代表使用的封包協(xié)議,主要有 tcp, udp 及 icmp 三種封包格式;
opt:額外的選項說明
source :代表此規(guī)則是針對哪個『來源 IP』進行限制?
destination :代表此規(guī)則是針對哪個『目標(biāo) IP』進行限制?
以上的每個chain中的規(guī)則渣聚,對封包進行過濾的時候是有順序的,按從上到下的順序僧叉,只要有一個規(guī)則符合奕枝,那么就可以通過防火墻,
如果一直不符合瓶堕,就一直向下繼續(xù)匹配隘道,如果都不符合,那么就執(zhí)行預(yù)設(shè)的動作郎笆。
可以看到FORWORD的最后兩個rule的target是REJECT谭梗,這說明,如果前面的rule都不符合宛蚓,那么到這條規(guī)則的時候激捏,就拒絕。
查看nat表的chain
[root@localhost ~]# iptables -t nat -L -n
2) 查看完整的防火墻規(guī)則:
查看所有的表的規(guī)則
[root@localhost ~]# iptables-save
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*nat
:PREROUTING ACCEPT [512:70935]
:INPUT ACCEPT [371:61561]
:OUTPUT ACCEPT [2352:148261]
:POSTROUTING ACCEPT [2343:147796]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
COMMIT
# Completed on Fri Jan 18 14:26:06 2013
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*mangle
:PREROUTING ACCEPT [26824:23528990]
:INPUT ACCEPT [26682:23519288]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22885:4162471]
:POSTROUTING ACCEPT [23023:4179687]
-A POSTROUTING -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Completed on Fri Jan 18 14:26:06 2013
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:26:06 2013
*filter
:INPUT ACCEPT [26671:23518302]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22874:4161485]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Jan 18 14:26:06 2013
查看某一個表的規(guī)則
[root@localhost ~]# iptables-save -t filter
# Generated by iptables-save v1.4.12 on Fri Jan 18 14:29:14 2013
*filter
:INPUT ACCEPT [26774:23531129]
:FORWARD ACCEPT [2:656]
:OUTPUT ACCEPT [22956:4173130]
-A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A FORWARD -d 192.168.122.0/24 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o virbr0 -j ACCEPT
-A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Fri Jan 18 14:29:14 2013
對比
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:67
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 192.168.122.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
3) 清除防火墻
iptables [-t tables] [-FXZ]
選項與參數(shù):
-F :清除所有的已訂定的規(guī)則;
-X :殺掉所有使用者 "自定義" 的 chain (應(yīng)該說的是 tables )啰;
-Z :將所有的 chain 的計數(shù)與流量統(tǒng)計都歸零
4) 定義預(yù)設(shè)的政策(policy)
當(dāng)你的封包不在你設(shè)定的規(guī)則之內(nèi)時,則該封包的通過與否,是以 Policy 的設(shè)定為準(zhǔn)凄吏。即封包不符合你定義的所有規(guī)則的話远舅,執(zhí)行什么操作。
有兩個可選:ACCEPT, DROP痕钢。
policy是和chain對應(yīng)的图柏,一個chain對應(yīng)一個policy.
iptables [-t table] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
選項與參數(shù):
-P : 定義鏈( chain )。注意,這個 P 為大寫任连!
ACCEPT : 該封包可接受蚤吹。
DROP : 該封包直接丟棄,不會讓 client 端知道為何被丟棄。
eg:
iptables -P INPUT DROP #將filter表的INPUT鏈的預(yù)設(shè)政策設(shè)置為DROP
5) 為某個chain增加規(guī)則
iptables [-AI 鏈名] [-io 網(wǎng)絡(luò)接口] [-p 協(xié)議] [-s 來源 IP/網(wǎng)域] [-d 目標(biāo) IP/網(wǎng)域] -j [ACCEPT|DROP|REJECT|LOG]
選項與參數(shù):
-AI 鏈名:針對某的鏈進行規(guī)則的 "插入" 或 "累加"
-A :新增加一條規(guī)則,該規(guī)則增加在原本規(guī)則的最后面。例如原本已經(jīng)有四條規(guī)則,使用 -A 就可以加上第五條規(guī)則!
-I :插入一條規(guī)則裁着。如果沒有指定此規(guī)則的順序,默認(rèn)是插入變成第一條規(guī)則繁涂。例如原本有四條規(guī)則,使用 -I 則該規(guī)則變成第一條,而原本四條變成 2~5 號。
鏈 :有 INPUT, OUTPUT, FORWARD 等,
-io 網(wǎng)絡(luò)接口:設(shè)定封包進出的接口規(guī)范
-i :封包所進入的那個網(wǎng)絡(luò)接口,例如 eth0, lo 等接口二驰。需與 INPUT 鏈配合;
-o :封包所傳出的那個網(wǎng)絡(luò)接口,需與 OUTPUT 鏈配合;
-p 協(xié)議:設(shè)定此規(guī)則適用于哪種封包格式,主要的封包格式有: tcp, udp, icmp 及 all 扔罪。
-s 來源 IP/網(wǎng)域:設(shè)定此規(guī)則之封包的來源項目,可指定單純的 IP 或包括網(wǎng)域,
例如: IP:192.168.0.100,網(wǎng)域:192.168.0.0/24, 192.168.0.0/255.255.255.0 均可诸蚕。
若規(guī)范為『不許』時,則加上 ! 即可,例如:
-s ! 192.168.100.0/24 表示不許 192.168.100.0/24 之封包來源;
-d 目標(biāo) IP/網(wǎng)域:同 -s ,只不過這里指的是目標(biāo)的 IP 或網(wǎng)域。
-j :后面接動作,主要的動作有接受(ACCEPT)氧猬、丟棄(DROP)背犯、拒絕(REJECT)及記錄(LOG),
LOG 這個動作僅在進行記錄而已,并不會影響到這個封包的其他規(guī)則比對的盅抚。
eg:
#1. 給filter表的INPUT鏈加上一條規(guī)則漠魏,設(shè)定 lo 成為受信任的裝置,亦即進出 lo 的封包都予以接受
iptables -A INPUT -i lo -j ACCEPT
#2. 給filter表的INPUT鏈加上一條規(guī)則,設(shè)定來自eth1接口的192.168.100.0/24網(wǎng)段的封包都接受
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT
#3. 給filter表的INPUT鏈加上一條規(guī)則妄均,設(shè)定來自eth1接口的 192.168.100.230 IP的封包都丟棄
iptables -A INPUT -i eth1 -s 192.168.100.230 -j DROP
#4. 記錄來自192.168.2.200這個IP的請求記錄
iptables -A INPUT -s 192.168.2.200 -j LOG
6) 設(shè)定規(guī)則具體到端口
iptables [-AI 鏈名] [-io 網(wǎng)絡(luò)接口] [-p tcp|udp] \
[-s 來源 IP/網(wǎng)域] [--sport 端口范圍] \
[-d 目標(biāo) IP/網(wǎng)域] [--dport 端口范圍] \
-j [ACCEPT|DROP|REJECT|LOG]
因為僅有 tcp 與 udp 封包具有端口,因此你想要使用--dport,--sport 時,得要加上 -p tcp 或 -p udp 的參數(shù)才會成功.
eg:
#1. 只要來自 192.168.1.0/24 的 1024:65535 端口的封包,且想要聯(lián)機到本機的 ssh port 就予以抵擋
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65534 --dport ssh -j DROP
#2. 將來自任何地方來源 port 1:1023 的主動聯(lián)機到本機端的 1:1023 聯(lián)機丟棄
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP
7) 外掛模塊
iptables -A INPUT [-m state] [--state 狀態(tài)]
選項與參數(shù):
-m :一些 iptables 的外掛模塊,主要常見的有:
state :狀態(tài)模塊
mac:網(wǎng)絡(luò)卡硬件地址 (hardware address)
--state :一些封包的狀態(tài),主要有:
INVALID:無效的封包,例如數(shù)據(jù)破損的封包狀態(tài)
ESTABLISHED:已經(jīng)聯(lián)機成功的聯(lián)機狀態(tài);
NEW:想要新建立聯(lián)機的封包狀態(tài);
RELATED:這個最常用!表示這個封包是與我們主機發(fā)送出去的封包有關(guān)
--mac-source :就是來源主機的 MAC 啦!
eg:
#1. 只要已建立或相關(guān)封包就予以通過,只要是不合法封包就丟棄
$ iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A INPUT -m state --state INVALID -j DROP
#2. 針對局域網(wǎng)絡(luò)內(nèi)的 aa:bb:cc:dd:ee:ff 主機開放其聯(lián)機
$ iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
#3. 接受ssh聯(lián)機
$ iptables -A INPUT -m state --state NEW -j ACCEPT
8) icmp封包規(guī)則
iptables -A INPUT [-p icmp] [--icmp-type 類型] -j ACCEPT
選項與參數(shù):
--icmp-type :后面必須要接 ICMP 的封包類型,也可以使用代號,例如 8 代表 echo request 的意思
0 Echo Reply (代表一個回應(yīng)信息)
3 Destination Unreachable (表示目的地不可到達)
4 Source Quench (當(dāng) router 的負載過高時柱锹,此類別碼可用來讓發(fā)送端停止發(fā)送訊息)
5 Redirect (用來重新導(dǎo)向路由路徑的資訊)
8 Echo Request (請求回應(yīng)訊息)
11 Time Exceeded for a Datagram (當(dāng)資料封包在某些路由傳送的現(xiàn)象中造成逾時狀態(tài),此類別碼可告知來源該封包已被忽略的訊息)
12 Parameter Problem on a Datagram (當(dāng)一個 ICMP 封包重複之前的錯誤時丰包,會回覆來源主機關(guān)于參數(shù)錯誤的訊息)
13 Timestamp Request (要求對方送出時間訊息禁熏,用以計算路由時間的差異,以滿足同步性協(xié)定的要求)
14 Timestamp Reply (此訊息純粹是回應(yīng) Timestamp Request 用的)
15 Information Request (在 RARP 協(xié)定應(yīng)用之前邑彪,此訊息是用來在開機時取得網(wǎng)路信息)
16 Information Reply (用以回應(yīng) Infromation Request 訊息)
17 Address Mask Request (這訊息是用來查詢子網(wǎng)路 mask 設(shè)定信息)
18 Address Mask Reply (回應(yīng)子網(wǎng)路 mask 查詢訊息的)
eg:
#接受所有的icmp請求
$ iptables -A INPUT -p icmp -j ACCEPT
9) 刪除某一個規(guī)則
我們可以用兩種辦法中的任一種刪除規(guī)則瞧毙。
首先,因為知道這是INPUT鏈中唯一的規(guī)則寄症,我們用編號刪除:
#刪除INPUT鏈中的編號為1的規(guī)則
$ iptables -D INPUT 1
第二種辦法是 -A 命令的映射宙彪,不過用-D替換-A。
當(dāng)你的鏈中規(guī)則很復(fù)雜有巧,而你不想計算它們的編號的時候這就十分有用了释漆。這樣的話,我們可以使用:
$ iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
-D的語法必須和-A(或者-I或者-R)一樣精確篮迎。如果鏈中有多個相同的規(guī)則男图,只會刪除第一個。
10) 將iptables規(guī)則導(dǎo)出設(shè)置開機自啟動
iptables-save >/etc/iptables.rules
vim /etc/network/if-pre-up.d/iptables
#!/bin/bash
iptables-restore < /etc/iptables.rules
chmod +x /etc/network/if-pre-up.d/iptables