05-CentOS防火牆

概述

CentOS中的防火牆有很多,如SELinux、Firewall、TCP Wrappers、iptables/netfilter。
每種防火牆都有各自擅長的地方。
這裏主要講兩種:SELinux和Firewall。

SElinux

爲什麼需要SElinux?

Linux中的程序不能擁有過大的權限,否則就會侵入我們的系統,獲取我們的數據(比如數據庫文件),隨意安裝程序(比如後門)。
這就像是在Windows上下載一些非官方軟件,安裝後桌面上會出現“貪玩藍月”,“傳奇”或者廣告等圖標。

SElinux的作用:

SElinux主要用於防內部,比如內部的文件權限、端口權限。這樣的話,應用程序就不會擁有過大的權限。

SELinux三種模式
enforcing	    #強制模式,攔截不合法請求(默認狀態)
permissive	    #只警告不攔截
disabled	    #對於越權行爲不警告也不攔截(即關閉SELinux)
查看當前SELinux的模式與狀態
getenforce      #查看SELinux當前的模式
getsebool -a    #查詢當前各項規則的布爾值

#舉例:
semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/      #放開httpd這個程序對/home/wwwroot/的權限
SELinux的開關
  • 臨時開關(無需重啓)
setenforce 0	#臨時關閉SELinux
setenforce 1	#臨時開啓SELinux
  • 永久開關(需要重啓)
vim /etc/selinux/config
    SELINUX=disabled        #將SELinux的狀態設置爲disabled(關閉)
  • 通常如何關閉和開啓SElinux

因爲臨時開關臨時有效,永久開關需要重啓。
所以我們通常結合兩種方式。
比如,關閉SELinux:

setenforce 0	#臨時關閉SELinux
vim /etc/selinux/config
    SELINUX=disabled

Firewalld

與SELinux不同,這個防火牆主要用來防外部。比如:防止網絡上其他主機對某端口的訪問。
Firewalld還有其他很強大的功能:比如NAT轉發。

臨時放行端口
firewall-cmd --add-port=8080/tcp            #放行8080端口的TCP協議
firewall-cmd --add-port=8080-8090/tcp       #放行8080端口~8090端口的TCP協議

#注意:上面端口的UDP協議還是會被攔截。
臨時放行某個協議
firewall-cmd --add-service=https        #臨時放行https協議(與放行443端口作用一樣)
臨時攔截某個協議
firewall-cmd --remove-service=https     #臨時攔截https協議(與攔截443端口作用一樣)

#同理:攔截端口用的命令是--remove-port
查看firewalld中的規則
firewall-cmd --list-all     #查看當前的規則(包括臨時)
firewall-cmd --list-all --permanent     #查看永久規則
永久放行或攔截

前面講到的都是臨時有效的,重啓firewalld之後,規則就會失效(因爲會重新讀取配置文件)。

  • 永久放行端口-方法1
firewall-cmd --add-port=8080/tcp --permanent        #只會將規則寫入文件,但不立即生效
firewall-cmd --add-port=8080/tcp 
  • 永久放行端口-方法2
firewall-cmd --add-port=8080/tcp --permanent        #只會將規則寫入文件,但不立即生效
firewall-cmd --reload       #重啓firewlld(會重新讀取配置文件)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章