iptables 規則更改(filter)、firewalld centos7 更改配置


iptables中定義默認策略(policy)

當數據包不在我們設置的規則之內時,則該數據包的通過與否,是以Policy的設置為准。在安全性比較高的主機中,Filter內的INPUT鏈定義的比較嚴格,INPUT的Policy定義為DROP

ptables定義規則:

格式:iptables [-t table] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP ]

-p : 定義策略(Policy)。注意:P為大寫 
ACCEPT:數據包可接受 
DROP:數據包被丟棄,client不知道為何被丟棄。

iptables  -P INPUT DROP  //INPUT默認設置為DROP
iptables  -P OUTPUT DROP  //OUTPUT默認設置為ACCEPT
iptables  -P FORWARD DROP // FORWARD默認設置為ACCEPT  

  

iptables定義規則(filter)的格式: 
iptables [-AI 鏈名] [-io 網絡接口 ] [ -p 協議 ] [ -s 來源IP/網絡 ] [ -d 目標IP/網絡 ] -j [ACCEPT | DROP|REJECT|LOG]

參數說明: 
-A:新增一條規則,該規則在原規則的最后面。 
-I:插入一條規則,默認該規則在原第一條規則的前面。即該新規則變為第一條規則。

-io 網絡接口:設置數據包進出的接口規范。 
-i:表示輸入。即數據包進入的網絡接口。與INPUT鏈配合 
-o : 表示輸出。數據包傳出的網絡接口。與OUTPUT鏈配合

-p 協定: 此規則適應於哪種數據包。如tcp,udp,icmp及all.

-s 來源 IP/網絡:設置次規則之前數據包的來源地,可指定單純的IP或網絡,例如: 
IP : 192.168.0.100 
網絡 : 192.168.0.0/24或者192.168.0.0/255.255.255.0 
如果規則為不允許,則在IP/網絡前加 “!” 即可。 
-s ! x.x.x.x

-d 目標 IP/網絡。與-s類似,只是是目標IP或者網絡而已。

-j:后面接操作。如ACCEPT,DROP ,REJECT或者LOG(記錄)

比如:開放lo這個本機的接口以及某個IP來源

//設置io成為受信任的設備,亦即進出lo的數據包都接受
iptables -t filter -A INPUT -i eth0  -j ACCEPT

 

我們可能會有疑惑,為什么沒有-s -d等規則,表示不論數據包來自何處或去到哪里,只要是來自lo這個接口全部接受。

設置來自192.168.100.10的就接受,192.168.100.11的就丟棄。

iptables -A INPUT -i eth0 -s 192.168.100.10 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.100.11 -j DROP
iptables -I INPUT -i eth0 -s 192.168.100.0/24 -j ACCEPT

 此時我們執行iptables-save 

[root@localhost ~]# iptables-save
# Generated by iptables-save v1.4.7 on Wed Jun  6 10:41:44 2018
*nat
:PREROUTING ACCEPT [9:1155]
:POSTROUTING ACCEPT [4:1312]
:OUTPUT ACCEPT [4:1312]
COMMIT
# Completed on Wed Jun  6 10:41:44 2018
# Generated by iptables-save v1.4.7 on Wed Jun  6 10:41:44 2018
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [65:5416]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -i eth0 -p tcp -m tcp --sport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Jun  6 10:41:44 2018

  

TCP,UDP協議的規則對比:針對端口設置

  • 在 -s 參數后面可以增加一個參數 -sport 端口范圍(限制來源端口),如:1024:65535
  • 在-d 參數后面可以增加一個參數 -dport 端口范圍(限制目標端口)

需要特別注意,這兩個參數重點在port上面,並且僅有TCP和UDP數據包具有端口,因此要想使用–dport,–sport時需要加上-p tcp或者 -p udp才會成功。

下面做幾個小測試:

//丟棄所有想要鏈接本機21端口的數據包
iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
//想要鏈接到本機的網上鄰居(UDP port 137,138 tcp 139,445)就放行
iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
//只要來自192.168.1.0/24的1024:65535端口的數據包,且想要連接的本機的ssh port就阻擋
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65535 --dport ssh -j DROP

iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP

  除了制訂端口號之外,TCP數據包還有特殊的標識,比如主動鏈接的SYN標志。iptables支持使用–syn來處理。

iptables -A INPUT -i eth0 -p tcp --sport 1:1023 -dport 1:1023 --syn -j DROP

  

啟動: systemctl start firewalld
關閉: systemctl stop firewalld
查看狀態: systemctl status firewalld 
開機禁用  : systemctl disable firewalld
開機啟用  : systemctl enable firewalld
 
 
2.systemctl是CentOS7的服務管理工具中主要的工具,它融合之前service和chkconfig的功能於一體。

啟動一個服務:systemctl start firewalld.service
關閉一個服務:systemctl stop firewalld.service
重啟一個服務:systemctl restart firewalld.service
顯示一個服務的狀態:systemctl status firewalld.service
在開機時啟用一個服務:systemctl enable firewalld.service
在開機時禁用一個服務:systemctl disable firewalld.service
查看服務是否開機啟動:systemctl is-enabled firewalld.service
查看已啟動的服務列表:systemctl list-unit-files|grep enabled
查看啟動失敗的服務列表:systemctl --failed

3.配置firewalld-cmd

查看版本: firewall-cmd --version
查看幫助: firewall-cmd --help
顯示狀態: firewall-cmd --state
查看所有打開的端口: firewall-cmd --zone=public --list-ports
更新防火牆規則: firewall-cmd --reload
查看區域信息:  firewall-cmd --get-active-zones
查看指定接口所屬區域: firewall-cmd --get-zone-of-interface=eth0
拒絕所有包:firewall-cmd --panic-on
取消拒絕狀態: firewall-cmd --panic-off
查看是否拒絕: firewall-cmd --query-panic
 
那怎么開啟一個端口呢
添加
firewall-cmd  --zone=public --add-port=80/tcp --permanent    (--permanent永久生效,沒有此參數重啟后失效)
重新載入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
刪除
firewall-cmd  --zone= public --remove-port=80/tcp --permanent
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM