1. 程式人生 > >linux的防火墻管理

linux的防火墻管理

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目錄下

註意:

  1. firewalld和iptables是相互獨立的防火墻管理工具;

  2. ‘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  

註意

  1. 防火墻的規則是按照從上往下依次匹配的,因此一定要把允許動作放到拒絕動作前面,否則所有的流量就將被拒絕掉,從而導致任何主機都無法訪問。

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的防火墻管理