天天看點

llinux 防火牆(selinux 防火牆、firewalld 、netfilter (iptables))及iptables 規則備份和恢複

selinux 防火牆

getenforce		檢視防火牆狀态
setenforce 0 	臨時關閉   (0關閉 1開啟)

#狀态
enforcing:強制模式,代表 SELinux 運作中,且已經正确的開始限制 domain/type 了;
permissive:寬容模式:代表 SELinux 運作中,不過僅會有警告訊息并不會實際限制 domain/type 的存取。這種模式可以運來作為 SELinux 的 debug 之用;
disabled:關閉,SELinux 并沒有實際運作。

關閉SELinux的方法:
修改/etc/selinux/config檔案中的SELINUX="" 為 disabled ,然後重新開機。
如果不想重新開機系統,使用指令setenforce 0

注:
setenforce 1 設定SELinux 成為enforcing模式
setenforce 0 設定SELinux 成為permissive模式
在lilo或者grub的啟動參數中增加:selinux=0,也可以關閉selinux

           

firewalld 、netfilter

firewalld  、netfilter  這兩個 統稱 iptables

注: centos7 之前使用的是netfilter  centos7之後使用的firewalld

centos7上預設使用的firewalld  netfilter是預設沒有開啟的
如何在centos7上使用netfilter
例:
systemctl disable firewalld     	關閉開機啟動firewalld服務
systemctl stop firewalld			關閉firewalld服務
yum -y install iptables-services	安裝iptables 安裝後會産生一個服務
systemctl enable iptables			設定iptables服務開啟自啟動
systemctl start iptables 			啟動iptables服務 (即開啟了netfilter)
iptables -nvL						可以檢視iptables的預設規則

(可了解為firewalld 和 netfilter 名字是防火牆,iptables隻是一個工具)

           
netfilter常用的兩個表

filter表用于過濾包,最常用的表,有INPUT、FORWARD、OUTPUT三個鍊
nat表用于網絡位址轉換,有PREROUTING、OUTPUT、POSTROUTING三個鍊
           

防火牆-netfilter

iptables -nvL 			    檢視規則 如圖所示
cat /etc/sysconfig/iptables 檢視這個檔案可看到預設規則儲存的資訊  如圖二所示
           
llinux 防火牆(selinux 防火牆、firewalld 、netfilter (iptables))及iptables 規則備份和恢複
llinux 防火牆(selinux 防火牆、firewalld 、netfilter (iptables))及iptables 規則備份和恢複
iptables -F   清空所有規則 
使用iptables -nvL 檢視預設規則不會再有,當時檢視/etc/sysconfig/iptables檔案
檔案中儲存的規則還是存在
service iptables restart  重新開機服務之後 還是會把它加載出來
service iptables save     儲存規則至/etc/sysconfig/iptables檔案中
(iptables防火牆規則以/etc/sysconfig/iptables檔案中儲存的為準,重新開機之後就會加載該檔案資訊)

iptables -t nat     	  -t指定nat表
iptables -Z  (大寫的Z)    清零計數器
           
llinux 防火牆(selinux 防火牆、firewalld 、netfilter (iptables))及iptables 規則備份和恢複
iptables -A INPUT -s 192.168.44.128 -p tcp --sport 123 -d 192.168.44.131 --dport 80 -j DROP
指定規則 不加-t指定 預設是filter表 
-A 增加一個規則  (放到後面去)   或者使用-I 表示插入 -D 删除
INPUT 表示針對的是 INPUT 鍊
-s 指定來源ip -p指定協定(這裡是tcp協定)(tcp、udp……)
--sport  來源ip的端口 123
-d 指定目标ip --dport 目标ip的端口 80
-j 指定DEOP  或者 REJECT

iptables -nvL  檢視  如圖所示
           
快捷友善删除iptables規則的方法

iptables -nvL --line-numbers     列出所有規則的序号  如圖所示
iptables -D INPUT 1              使用數字進行删除
iptables -P OUTPUT ACCEPT 		 大寫的-P指定 OUTPUT表為 ACCEPT
           
icmp示例
 iptables -I INPUT -p icmp --icmp-type 8 -j DROP 
使用這條指令可以讓别人無法ping通自己這個ip位址(禁ping)



需求:放行80、21、22端口 且22端口指定一個IP段都能通路别的ip無法通路。
以shell腳本形式完成


#!/bin/bash
a="/usr/sbin/iptables"       	定義變量                             
$a -F							清空虧則
$a -P INPUT DROP				禁掉 INPUT 表
$a -P OUTPUT ACCEPT 			指定OUTPUT FORWARD表為ACCEPT
$a -P FORWARD ACCEPT
$a -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  使用-m指定 state(狀态)指定 --state RELATED,ESTABLISHED 為ACCEPT狀态
$a -A INPUT -s 192.168.44.0/24 -p tcp --dport 22 -j ACCEPT  -s放行這個ip段 通路22端口
$a -A INPUT -p tcp --dport 80 -j ACCEPT						放行80、21端口	
$a -A INPUT -p tcp --dport 21 -j ACCEPT

執行腳本如圖所示
           

iptables 規則備份和恢複

iptables-save > beifen.txt       
表示将/etc/sysconfig/iptables 檔案中的iptables規則導入到 beifen.txt
iptables-restore < beifen.txt   使用restore  恢複
           

繼續閱讀