原作鏈接:https://www.jianshu.com/u/e199acf1e9fb
# 0x01介紹
iptables命令是Linux上常用的防火墻軟體,是netfilter專案的一部分
iptables檔案設定路徑:命令:vim /etc/sysconfig/iptables-config
0x02注意事項
如果說你以前使用的是contos7 那么默認使用的防火墻那么就是Firewall 這樣的話,就要先把Firewall 給關閉在使用iptables
關閉Firewall 命令
命令:systemctl stop firewalld #關閉防火墻
命令:systemctl disable firewalld #禁止開機啟動
0x03檢查是否安裝了iptables
命令:service iptables status
0x04安裝iptables
命令:yum install -y iptables
0x05升級iptables
命令:yum update iptables
0x06安裝iptables-services
命令:yum install iptables-services
0x07開啟防火墻
命令:systemctl start iptables.service #啟動防火墻
命令:systemctl enable iptables.service #設定開機自啟動
0x08關閉防火墻
命令:systemctl stop iptables.service #關閉防火墻
命令:systemctl disable iptables.service #禁止開機啟動
0x09查看iptables狀態
命令:systemctl status iptables.service
0x10查看iptables現有規則
命令:iptables -L -n
0x11重點:清除默認的防火墻規則
11.1 安裝完成基本配置-允許所有請求防止悲劇
首先在清除前要將policy INPUT改成ACCEPT,表示接受一切請求。
這個一定要先做,不然清空后可能會直接悲劇
設定 INPUT 方向所有的請求都允許
命令:iptables -P INPUT ACCEPT
11.2 安裝完成基本配置-清空所有默認規則
命令:iptables -F
11.3 安裝完成基本配置-清空所有自定義規則
命令:iptables -X
11.4 安裝完成基本配置-所有計數器歸0
命令:iptables -Z
0x12重點:配置規則
12.1允許來自于lo介面的資料包
如果沒有此規則,你將不能通過127.0.0.1訪問本地服務,例如ping 127.0.0.1
命令:iptables -A INPUT -i lo -j ACCEPT
12.2開啟某個埠
iptables -A INPUT -p tcp --dport 埠 -j ACCEPT
12.2.1例子:開啟80,22埠
命令:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
命令:iptables -A INPUT -p tcp --dport 22 -j ACCEPT
12.3允許icmp包通過,也就是允許ping
命令:iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
12.4允許所有對外請求的回傳包
本機對外請求相當于OUTPUT,對于回傳資料包必須要接收啊,這相當于INPUT了
命令:iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
12.5如果要添加內網ip信任(接受其所有TCP請求)
iptables -A INPUT -p tcp -s 192.168.1.50(改為允許的內網IP即可) -j ACCEPT
12.6過濾除iptables規則之外的所有請求
命令:iptables -P INPUT DROP
0x13 重點:保存規則
注意:設定完成以后先執行命令iptables -L -n看一下配置是否正確。
沒問題后,先不要急著保存,因為沒保存只是當前有效,重啟后就不生效,這樣萬一有什么問題,可以后臺強制重啟服務器恢復設定。
另外開一個ssh連接,確保可以登陸。
確保沒問題之后在進行保存
保存命令:service iptables save
0x14 重啟防火墻
systemctl restart iptables.service
0x15 雜項
15.1要封停一個IP,使用下面這條命令
命令:iptables -I INPUT -s ... -j DROP
15.2 要解封一個IP,使用下面這條命令
命令:iptables -D INPUT -s ... -j DROP
0x16 洗掉某個已有規則
要洗掉規則那么我們就需要先將所有iptables規則以序號標記顯示,執行:
命令:iptables -L -n --line-numbers
比如要洗掉INPUT里序號為8的規則,執行:
命令:iptables -D INPUT 8
0x17 例子:完整的設定腳本
#!/bin/sh
#查看iptables現有規則
iptables -L -n
#先允許所有,不然有可能會杯具
iptables -P INPUT ACCEPT
#清空所有默認規則
iptables -F
#清空所有自定義規則
iptables -X
#所有計數器歸0
iptables -Z
#允許來自于lo介面的資料包(本地訪問)
iptables -A INPUT -i lo -j ACCEPT
#開放22埠
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#開放21埠(FTP)
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
#開放80埠(HTTP)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#開放443埠(HTTPS)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允許ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#允許接受本機請求之后的回傳資料 RELATED,是為FTP設定的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#其他入站一律丟棄
iptables -P INPUT DROP
#所有出站一律綠燈
iptables -P OUTPUT ACCEPT
#所有轉發一律丟棄
iptables -P FORWARD DROP
#保存
service iptables save
#重啟動
serv systemctl restart iptables.service
uj5u.com熱心網友回復:
感謝樓主分享uj5u.com熱心網友回復:
感謝樓主分享uj5u.com熱心網友回復:
感謝樓主分享轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/132941.html
標籤:系統維護與使用區
上一篇:虛擬機
