linux的防火墻管理
阿新 • • 發佈:2018-03-01
rop permanent 轉發 firewall post system 使用 etc 動態修改
換oricle-linux7系統後,發現iptables的管理方法有不小的改動,記錄一下遇到的問題。
iptables
linux系統已經默認安裝了iptables和firewalld兩款防火墻管理工具,但是在使用service iptables save命令的時候可能提示找不到命令;另外iptables的配置文件在/etc/sysconfig/iptables,但是新裝的服務器可能沒有這個文件,一般需要安裝iptables-service;
本人習慣使用iptables防火墻工具;
yum -y install iptables-services # 先更新iptables-services,可以發現在/etc/sysconfig/目錄下已經有Iptables文件,同時可以使用service來管理iptables了 systemctl stop firewalld # 先關閉防火墻 systemctl start iptables # 啟動防火墻 systemctl enable iptables # 將防火墻設置成開機自啟動 systemctl iptables save # 將當前配置的防火墻設置保存到/etc/sysconfig/iptables目錄下
註意:
firewalld和iptables是相互獨立的防火墻管理工具;
‘systemctl iptables save’ 執行時,iptables會去讀取/etc/sysconfig/iptables-config文件,然後讀取/etc/sysconfig/iptables文件;
擴展
service iptables status # 查看防火墻的狀態
service iptables start # 開啟防火墻
service iptables stop # 關閉防火墻
service iptables restart # 重啟防火墻
- 配置iptables參數
防火墻需要開放端口給外部訪問,設置過濾等。因此需要配置文件,所有的配置保存在/etc/sysconfig/iptables中,有兩種方法可以配置:
- 方法一:直接修改iptables文件
*filter :INPUT ACCEPT [0:0] # 允許流量輸入 :FORWARD ACCEPT [0:0] # 允許轉發 :OUTPUT ACCEPT [0:0] # 允許流出 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT # 允許ping通 -A INPUT -i lo -j ACCEPT # 默認允許網卡流入數據 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT # 添加一條規則,允許22端口 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # 提交設置 # 在後面添加相關的命令行
- 參數詳解
-A :添加一條規則,針對什麽數據包,INPUT流入的數據包,OUTPUT流出的數據包,FORWARD轉發的數據包
-p :指定協議,如TCP,UDP
–dport:目標端口,當數據從外部進入服務器為目標端口
–sport:源端口,數據從服務器出去,則為數據源端口使用
–j :指定策略規則,ACCEPT(允許接收)、DROP(拒絕接收,無響應)、REJECT(拒絕接收,有響應)
-s : 指定某一個IP地址的訪問,加嘆號“!”表示除這個IP外
-L 查看規則鏈
-F 清空規則鏈
-I num 在規則鏈的頭部加入新規則
-D num 刪除某一條規則
-d 匹配目標地址
-i 網卡名稱 匹配從這塊網卡流入的數據
-o 網卡名稱 匹配從這塊網卡流出的數據
- 方法二:使用命令行動態修改保存
iptables -P INPUT -j DROP
service iptables save
註意
- 防火墻的規則是按照從上往下依次匹配的,因此一定要把允許動作放到拒絕動作前面,否則所有的流量就將被拒絕掉,從而導致任何主機都無法訪問。
firewalld
- linux的另一款防火墻的管理工具;
service firewalld status # 查看防火墻的狀態
service firewalld start # 開啟防火墻
service firewalld stop # 關閉防火墻
service firewalld restart # 重啟防火墻
- 管理端口
# 開啟一個端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新載入
firewall-cmd --reload
# 查看某個端口的狀態是否開啟
firewall-cmd --zone=public --query-port=80/tcp
# 關閉某個端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
- 參數
--permanent : 設置命令永久有效
--add-port : 開啟一個端口
--remove-port : 關閉一個端口
使用systemctl
- systemctl是融合了chkconfig和service的系統管理工具,更加的強大和方便;
systemctl start firewalld # 開啟防火墻
systemctl stop firewalld # 關閉防火墻,開機啟動
systemctl restart firewalld # 重新啟動防火墻
systemctl status firewalld # 查看防火墻的狀態
systemctl disable firewalld # 永久關閉防火墻,不再開機自啟動
systemctl enable firewalld # 設置防火墻開機自啟動
systemctl is-enabled firewalld
systemctl start iptables # 開啟防火墻
systemctl stop iptables # 關閉防火墻,開機啟動
systemctl restart iptables # 重新啟動防火墻
systemctl status iptables # 查看防火墻的狀態
systemctl disable iptables # 永久關閉防火墻,不再開機自啟動
systemctl enable iptables # 設置防火墻開機自啟動
linux的防火墻管理