1. 程式人生 > >第十三章 LINUX安全IPTABLES基礎-CENTOS7.5知識

第十三章 LINUX安全IPTABLES基礎-CENTOS7.5知識

_for 用法 numbers icmp ima 詳細 tar wall 地址

第一部分、安裝配置
[root@localhost~]# systemctl stop firewalld
[root@localhost~]# systemctl disable firewalld

yum install iptables-services
systemctl start iptables
systemctl enable iptables

第二部分、防火墻:iptables設置
規則寫好了,不次於硬件級防火墻
作用:包過濾技術,類似於ACL
當linux服務器作為路由轉發設備時,可以過濾來往數據包
作為獨立服務器時,可以對進出數據包進行安全過濾。
技術分享圖片
開啟路由轉發功能(與多個網絡相關的路由功能開啟都需要):

方法:echo 1 > /proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf

cd /usr/lib/sysctl.d
vi 00-system.conf
net.ipv4.ip_forward = 1

iptables有四個表table和五個鏈chain:
iptables的四個表:四個功能方向
raw
Mangle:QOS網絡服務品質
nat:網絡地址轉換
filter:過濾規則的主要表
五個鏈:主要寫入規則,數據流方向
如:filter: INPUT FORWARD OUTPUT
INPUT:處理所有訪問我的請求
OUTPUT: 出站規則
FORWARD:處理轉發規則
PREROUTING:路由前

POSTROUTING:路由後
開啟防火墻:setup或service iptables start
2.查看防火墻規則列表:
iptables -nL 或者iptables -L -n

  1. iptables -F 清空所有規則策略
    4.命令語法
    iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型]
    ****
    註釋:
    控制類型:
    ACCEPT 放行
    DROP 丟棄,不回應
    REJECT 拒絕,並回應
    LOG 做拒絕也不放行,記錄日誌
    選項 :
    -I 插入規則,默認插入到第1條
    -A 追加規則,默認在最後追加
    -P 修改默認的規則(ACCEPT DROP)
    iptables -P INPUT/OUTPUT/FORWARD ACCEPT/DROP
    -F 清空所有規則
    -D 刪除一條規則
    -nvL --line-numbers 查看所有規則鏈的詳細信息
    watch -n1 iptables -nvL --line-numbers 每一秒觀察數據包狀態
    註意事項:
    1)不指定表名,默認就是filter表,所以我們主要以filter為主,後續不再加表名。
    2)不指定鏈名,默認指所有鏈。如:iptables -F 並觀察iptables -nL,檢查默認動作
    3)設置默認動作:如iptables -P INPUT DROP
    4)選項、鏈名、控制類型必須大寫,其他為小寫
    5)除-P -F -D外,必須寫條件
    6.嘗試編寫:
    iptables -A INPUT -p tcp --dport 80 -j REJECT/DROP
    iptables -A INPUT -p tcp --dport 2200 -j ACCEPT
    iptables -I INPUT -p udp --dport 67 -j DROP
    iptables -I INPUT 2 -p tcp --dport 2200 -j ACCEPT
    iptables -D INPUT 2
    7.條件編寫:
    1)通用匹配:
    特點:獨立使用,不依賴與其他條件
    -p 協議名,icmp、tcp、udp: dns 53,QQ 8000,DHCP 67
    -s 源IP
    -d 目標IP 192.168.1.0/24 -j ACCEPT
    -i eth0 從哪個網卡進來
    -o eth1 從哪個網卡出去
    註意!的用法
    [root@localhost [local~]# iptables -I INPUT -p icmp -j DROP
    [root@localhost [local~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
    [root@localhost [local~]# iptables -A INPUT -i eth1 -s 172.16.0.0/16 -j DROP
    2)隱含匹配:
    端口匹配:--sport 源端口、--dport 目的端口
    TCP標記匹配:--tcp-flags 檢查範圍 被設置的標記 SYN/FIN
    iptables -I INPUT -s 172.18.11.87 -p tcp --dport 22 --tcp-flags SYN,RST,ACK,FIN RST -j DROP
    ICMP類型匹配:--icmp-type ICMP類型8/0/3
    如:
    [root@localhost [local~]# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p icmp -j DROP
    3)顯式匹配條件
    多端口匹配:-m multiport --sport 源端口列表
    -m multiport --dport 目的端口列表
    IP範圍匹配:-m iprange --src-range IP範圍
    MAC地址匹配:-m mac --mac-source MAC地址
    [root@localhost [local~]# iptables -P INPUT DROP
    [root@localhost [local~]# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143:200 -j ACCEPT
    [root@localhost [local~]# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
  2. iptables-save > 文件 導出當前規則
    iptables-restore < 文件 導入規則
    service iptables restart 後加載/etc/sysconfig/iptables配置文件恢復了默認值
    /etc/init.d/iptables save 將當前規則設定為默認規則
    service iptables restart 驗證

  3. iptables nat 上網
    首先開啟內核路由轉發的模塊。
    echo 1 > /porc/sys/net/ipv4/ip_forward #這是個暫時的做法,重啟後就會失效,好的做法是:
    vi /etc/sysctl.conf
    修改其中的net.ipv4.ip_forward = 1
    然後要讓它立即生效,需要執行命令:
    sysctl -p
    DNS的配置在/etc/resolv.conf中添加DNS的IP即可
    至此第一步搞定。
    第二步添加NAT:
    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to 外網IP
    或-j MASQUERADE(使用ASDL動態IP用此選項)
    如:
    iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to 172.18.11.92
    #這條命令裏的 eth0代表外網接口,-s 192.168.10.0/24代表內網段

第十三章 LINUX安全IPTABLES基礎-CENTOS7.5知識