Linux:iptables的基本命令以及地址偽裝
阿新 • • 發佈:2019-01-20
IPTABLES
IPTABLES 是與最新的 3.5 版本 Linux 核心整合的 IP 資訊包過濾系統。如果 Linux 系統連線到因特網或 LAN、伺服器或連線 LAN 和因特網的代理伺服器, 則該系統有利於在 Linux 系統上更好地控制 IP 資訊包過濾和防火牆配置。
防火牆在做資訊包過濾決定時,有一套遵循和組成的規則,這些規則儲存在專用的信 息包過濾表中,而這些表整合在 Linux 核心中。在資訊包過濾表中,規則被分組放在我們所謂的鏈(chain)中。而netfilter/iptables IP 資訊包過濾系統是一款功能強大的工具,可用於新增、編輯和移除規則。
Iptables 是用來設定、維護和檢查Linux核心的IP包過濾規則的
一·iptables的開啟服務
[root@localhost ~]# systemctl stop firewalld ##關閉火牆
[root@localhost ~]# systemctl disable firewalld ##開機自動關閉
[root@localhost ~]# systemctl start iptables.service ##開啟iptables服務
[root@localhost ~]# systemctl enable iptables.service ##開機自動開啟
二·iptables的基本命令
[root@localhost ~]# iptables -nL ##列出所有策略
[root@localhost ~]# iptables -F ##清空所有策略
[root@localhost ~]# iptables -nL ##再次列出
[root@localhost ~]# service iptables save ##儲存規則資訊
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] ##儲存在/etc/sysconfig/iptables 檔案中
[root@localhost ~]# cat /etc/sysconfig/iptables ##檢視iptables配置檔案
[root@localhost ~]# iptables -t mangle -nL ##檢視mangle表策略
[root@localhost ~]# iptables -t nat -nL ##檢視nat表策略
[root@localhost ~]# systemctl start httpd ##開啟服務
[root@localhost ~]# iptables -P INPUT ACCEPT ##允許訪問
[root@localhost ~]# iptables -nL ##列出
真機測試:
server測試:
[root@localhost ~]# iptables -A INPUT -s 172.25.254.71 -p tcp --dport 80 -j ACCEPT ##允許真機ip訪問,埠為80的http
[root@localhost ~]# iptables -nL
ACCEPT tcp -- 172.25.254.71 0.0.0.0/0 tcp dpt:80
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j REJECT ##拒絕埠為80的http
[root@localhost ~]# iptables -nL
REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 reject-with icmp-port-unreachable
真機測試:
server測試:
三·iptables的常規配置
對第一次訪問的請求讀取允許連線的策略,當第二次訪問或者之後訪問的直接接受請求,不讀取允許連線的策略,以便節省時間
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT ##新增ssh的埠為接受
[root@localhost ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT ##新增http的埠為接受
[root@localhost ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT ##新增dns的埠為接受
[root@localhost ~]# iptables -A INPUT -p tcp --dport 3260 -j ACCEPT ##新增iscsi的埠為接受
[root@localhost ~]# iptables -A INPUT -i lo -j ACCEPT ##本機迴環
[root@localhost ~]# iptables -nL ##檢視策略
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3260
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
[root@localhost ~]# service iptables save ##儲存
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
[root@localhost ~]# cat /etc/sysconfig/iptables ##檢視
[root@localhost ~]# iptables -F ##清空策略
[root@localhost ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ##將已經建立的和正在進行的設定允許訪問
[root@localhost ~]# iptables -nL ##檢視策略
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
四·iptables的地址偽裝
在desktop中:
[root@localhost ~]# ifconfig
eth0: inet 172.25.254.119
[root@localhost ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.119 ##在nat表中新增若ip為172.25.0.19的主機連線172.25.254.71的主機時,通過本臺主機的eth0網絡卡路由轉換偽裝為172.25.254.119這個ip去連線的策略
在server中:
[root@localhost ~]# ping 172.25.254.71 ##ping通真機
[root@localhost ~]# ssh [email protected]
[root@foundation71 ~]# w -i
172.25.254.119 ##偽裝成功
在desktop中:
[root@localhost ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.0.19
在server中:
[root@localhost ~]# ssh [email protected]
[root@localhost ~]# w -i
172.25.0.19