0416 第十四次課:平常運維-防火牆

平常運維-防火牆

1、firewalld和netfilter

  1. 關閉selinuxlinux

    由於selinux開啓增大了運維成本,不少服務都受限於selinux,關閉selinux也不會出現什麼安全問題,通常都是關閉的。shell

  • 臨時關閉selinuxvim

    setenforce 0centos

  • 永久關閉安全

    修改配置文件:/etc/selinux/configbash

    修改內容:服務器

    SELINUX=enforcing改成disabled運維

    修改完成後重啓服務器生效tcp

  • 查看selinux狀態工具

    getenforce


  1. netfilter/firewalld

    netfilter是centos6及之前版本使用的防火牆,centos7把netfilter升級爲了firewalld。

    目前有些企業仍是用的centos6及之前的版本,因此仍是須要會使用netfilter。

    因爲目前使用時centos7,想要使用netfileter能夠把firewalld先關閉。

  • 關閉firewalld

    systemctl disable firewalld 禁止啓動

    systemctl stop firewalld 關閉防火牆

  • 開啓netfilter

    先安裝iptables工具包:

    yum install iptables-services

    啓動iptables:

    systemctl enable iptables

    systemctl start iptables

  • 查看iptables規則

    iptables -nvL

2、netfilter 5表5連接

  • netfilter五表:

    • filter:包過濾,用於防火牆規則。有INPUT、FORWARD、OUTPUT三個鏈

    • nat:地址轉換,用於網關路由器。有PREROUTING、OUTPUT、POSTROUTING三個鏈

    • mangle:用於給數據包打標記,而後根據標記去操做那些表。(不經常使用)

    - 不經常使用的表:raw、security
  • netfilter五鏈:

    • PREROUTING:數據包進入路由表以前
    • INPUT:經過路由表後目的地爲本機
    • FORWARD:經過路由表後,目的地不爲本機
    • OUTPUT:由本機產生,向外發出
    • POSTROUTING:發送到網卡接口以前
  • 參考文章: http://www.cnblogs.com/metoy/p/4320813.htm

3、iptables語法

  • 查看iptables規則

    iptables -nvL

  • 清空iptables規則

    iptables -F

    清空後未保存規則配置文件(/etc/sysconfig/iptables),服務重啓或系統重啓後,防火牆服務會從新加載規則配置文件中的原有規則。

  • 保存規則

    iptables save

  • 重啓

    service iptables restart

  • 查看nat表

    iptables -t nat -nvL

  • 計數器清零

    iptables -Z

  • 添加iptables規則

    iptables -A INPUT -s 192.168.1.19 -p tcp --sport 8888 -d 192.168.1.12 --dport 80 -i ens33 -j DROP

    解釋: 增長一條iptables規則:input鏈,源IP:192.168.1.19,TCP協議,源端口:8888,目的IP:192.168.1.12,目的端口:80,執行:DROP(丟掉)。

    和DROP相似的還有REJECT,不一樣的是:接受數據包後REJECT會進行查看,而後丟掉,DROP則是直接丟掉。通常DROP比較經常使用。

  • 刪除iptables規則

    和添加規則相似,把-A改爲-D

    iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -i ens33 -j DROP

也能夠根據查詢規則號進行刪除:

  • 查詢:

iptables -nvL --line-number

  • 刪除

    iptables -D INPUT 編號

  • 插入一條規則

    iptables -I INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT

    插入一條來源網段爲 192.168.1.0/24,網卡爲eth0,執行放行操做

  • 修改默認規則

    通常不要修改默認規則,有可能致使遠程終端沒法鏈接

    修改:

    `iptables -P INPUT DROP`

    恢復:

    `ptables -P OUTPUT ACCEPT`

4、netfilter案例

  • 案例1:放行端口

    需求:只放行80、21/22三個端口,且22端口只有192.168.43.0/24段才能訪問。 使用shell腳本實現:

    vim iptables.sh

    新建一個iptables腳本,寫入如下內容:

#! /bin/bash
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.43.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
  • 案例2:禁ping

    需求:本機能夠ping通別的機器,別的機器沒法ping通本機

    iptables -I INPUT -p icmp --icmp-type 8 -j DROP

5、iptables nat表應用

  • nat表應用

場景:有兩臺機器A和B。A機器有兩個網卡,ens33(192.168.43.180)和ens37(192.168.100.1),ens33可使用外網,ens37只能使用內網。B機器只有ens33(192.168.100.1)網卡,不能使用外網,但能夠與A機器互通。

  • 需求:讓B機器能夠鏈接外網

  • 實現步驟:

  1. A機器添加一塊網卡


  1. 設置ip地址

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens37

uuidgen ens37 // 獲取ens37uuid

修改ens37配置文件

vim ifcfg-ens37

ifdown ens37 && ifup ens37


  1. B機器添加網卡
  • 按照以上步驟給B機器添加一個ens37網卡,並把ens33網卡停掉
  1. A機器設置路由

    A機器上打開路由轉發

    默認是關閉的,0表示關閉

    打開:

    echo 「1」>/proc/sys/net/ipv4/ip_forward

    增長一條防火牆規則:

    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

  2. B機器設置網關

    vim /etc/resolv.conf

    添加如下內容:

    nameserver 114.29.29.29

6.測試鏈接

在B機器ping www.baidu.com 是否能通

6、課堂筆記

  • netfilter 糾正

netfilter是基於內核,在centos7之前版本,防火牆是指iptables,它是一個服務,iptables服務是用來管理加載、調用iptables命令。在centos7版本,叫firewalld,它比iptables更加豐富,一樣也能夠管理iptables命令設置好的規則。

  • iptables中的5鏈

  • 針對網段進行設置

iptables -I INPUT -m iprange --src-range 61.4.176.0-61.4.191.255 -j DROP

192.168.1.0/24 iptables -I INPUT -p tcp --dport 80 -s 192.168.1.0/24 -j ACCEPT

-m 後面跟模塊名字,iprange是一個模塊名字,用來支持一個網段

--src-range 指定來源的ip範圍

--dst-range 指定目標ip範圍

  • iptables的四種狀態

    分別被稱爲NEW、ESTABLISHED、INVALID、RELATED NEW:NEW說明這個包是咱們看到的第一個包。意思就是,這是conntrack模塊看到的某個鏈接的第一個包,它即將被匹配了。好比,咱們看到一個SYN 包,是咱們所留意的鏈接的第一個包,就要匹配它。 ESTABLISHED: ESTABLISHED已經注意到兩個方向上的數據傳輸,並且會繼續匹配這個鏈接的包。處於ESTABLISHED狀態的鏈接是很是容易理解的。只要發送並接到應答,鏈接就是ESTABLISHED的了。一個鏈接要從NEW變爲ESTABLISHED,只須要接到應答包便可,無論這個包是發往防火牆的,仍是要由防火牆轉發的。ICMP的錯誤和重定向等信息包也被看做是ESTABLISHED,只要它們是咱們所發出的信息的應答。 RELATED: RELATED是個比較麻煩的狀態。當一個鏈接和某個已處於ESTABLISHED狀態的鏈接有關係時,就被認爲是RELATED的了。換句話說,一個鏈接要想是RELATED的,首先要有一個ESTABLISHED的鏈接。這個ESTABLISHED鏈接再產生一個主鏈接以外的鏈接,這個新的鏈接就是 RELATED的了,固然前提是conntrack模塊要能理解RELATED。ftp是個很好的例子,FTP-data 鏈接就是和FTP-control有關聯的,若是沒有在iptables的策略中配置RELATED狀態,FTP-data的鏈接是沒法正確創建的,還有其餘的例子,好比,經過IRC的DCC鏈接。有了這個狀態,ICMP應答、FTP傳輸、DCC等才能穿過防火牆正常工做。注意,大部分還有一些UDP協議都依賴這個機制。這些協議是很複雜的,它們把鏈接信息放在數據包裏,而且要求這些信息能被正確理解。 INVALID:INVALID說明數據包不能被識別屬於哪一個鏈接或沒有任何狀態。有幾個緣由能夠產生這種狀況,好比,內存溢出,收到不知屬於哪一個鏈接的ICMP錯誤信息。通常地,咱們DROP這個狀態的任何東西,由於防火牆認爲這是不安全的東西。

  • iptables限制syn速度

    iptables限制syn速度

相關文章
相關標籤/搜索