linux 防火牆配置規則
基礎知識
Linux系統核心內建了netfilter防火牆機制。Netfilter(資料包過濾機制),所謂的資料包過濾,就是分析進入主機的網路資料包,將資料包的頭部資料提取出來進行分析,以決該連線為放行或阻擋的機制。Netfilter提供了iptables這個程式來作為防火牆資料包過濾的命令。Netfilter是內建的,效率非常高。
我們可以通過iptables命令來設定netfilter的過濾機制。
iptables裡有3張表:
Filter(過濾器),進入Linux本機的資料包有關,是預設的表。
NAT(地址轉換),與Linux本機無關,主要與Linux主機後的區域網內計算機相關。
Mangle(破壞者),這個表格主要是與特殊的資料包的路由標誌有關(通常不用涉及到這個表的修改,對這個表的修改破壞性很大,慎改之)。
每張表裡都還有多條鏈:
Filter:INPUT, OUTPUT, FORWARD
NAT:PREROUTING, POSTROUTING, OUTPUT
Mangle:PREROUTING, OUTPUT, INPUT, FORWARD
iptables命令的使用
基本格式:iptables [-t table] -CMD chain CRETIRIA -j ACTION
-t table:3張表中的其中一種filter, nat, mangle,如果沒有指定,預設是filter。
CMD:操作命令。檢視、新增、替換、刪除等。
chain:鏈。指定是對錶中的哪條鏈進行操作,如filter表中的INPUT鏈。
CRETIRIA:匹配模式。對要過濾的資料包進行描述
ACTION:操作。接受、拒絕、丟棄等。
各個鉤子點業務處理流程圖
修改
新增
格式:iptables [-t table] -A chain CRETIRIA -j ACTION
將新規則加入到表table(預設filter)的chain鏈的最後位置
插入
格式:iptables [-t table] -I chain pos CRETIRIA -j ACTION
將新規則插入到table表(預設filter)chain鏈的pos位置。原來之後的規則都往後推一位。pos的有效範圍為:1 ~ num+1
替換
格式:iptables [-t table] -R chain pos CRETIRIA -j ACTION
用新規則替換table表(預設filter)chain鏈的pos位置的規則。pos的有效範圍為:1 ~ num
刪除
格式:iptables [-t table] -D chain pos
刪除table表(預設filter)chain鏈的pos位置的規則。pos的有效範圍為:1 ~ num
包匹配(CRETIRIA)
上面沒有介紹CRETIRIA的規則,在這小節裡詳細介紹。包匹配就是用於描述需要過濾的資料包包頭特殊的欄位。
指定網口:
-i :資料包所進入的那個網路介面,例如 eth0、lo等,需與INPUT鏈配合
-o: 資料包所傳出的那麼網路介面,需與OUTPUT鏈配合
指定協議:
-p:tcp, udp, icmp或all
指定IP網路:
-s:來源網路。可以是IP或網路
IP: 192.168.0.100
網路: 192.168.0.0/24 或 192.168.0.0/255.255.255.0 均可
可以在前加 ! 表示取反
-d:目標網格。同 -s
指定埠:
–sport:指定來源埠。可以是單個埠,還可以是連續的埠,例如:1024:65535。
–dport:指定目標埠。同–sport
注意:要指定了tcp或udp協議才會有效。
指定MAC地址:
-m mac –mac-source aa:bb:cc:dd:ee:ff
指定狀態:
-m state –state STATUS
STATUS可以是:
INVALID,無效包
ESTABLISHED,已經連線成功的連線狀態
NEW,想要新立連線的資料包
RELATED,這個資料包與主機發送出去的資料包有關,(最常用)
例如:只要已建立連線或與已發出請求相關的資料包就予以通過,不合法資料包就丟棄
-m state –state RELATED,ESTABLISHED
ICMP資料比對
ping操作傳送的是ICMP包,如果不想被ping到,就可以拒絕。
–icmp-type TYPE
TYPE如下:
8 echo-request(請求)
0 echo-reply(響應)
注意:需要與 -p icmp 配合使用。
操作(ACTION)
DROP,丟棄
ACCEPT,接受
REJECT,拒絕
LOG,跟蹤記錄,將訪問記錄寫入 /var/log/messages
儲存配置
將新設定的規則儲存到檔案
格式:iptables-save [-t table]
將當前的配置儲存到 /etc/sysconfig/iptables
其它
格式:iptables [-t table] [-FXZ]
-F :請除所有的已制訂的規則
-X :除掉所有使用者“自定義”的chain
-Z :將所有的統計值清0
操作舉例
(1)檢視本機IPTABLES的設定情況
[[email protected] ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什麼規則都沒有.
或者
[[email protected] ~]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
(2)清除原有規則.
不管你在安裝linux時是否啟動了防火牆,如果你想配置屬於自己的防火牆,那就清除現在filter的所有規則.
[[email protected] ~]# iptables -F 清除預設表filter中的所有規則鏈的規則
[[email protected] ~]# iptables -X 清除預設表filter中使用者自定鏈中的規則
[[email protected] ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
什麼都沒有了吧,和我們在安裝linux時沒有啟動防火牆是一樣的.(提前說一句,這些配置就像用命令配置IP一樣,重起就會失去作用),怎麼儲存.
[[email protected] ~]# /etc/rc.d/init.d/iptables save
這樣就可以寫到/etc/sysconfig/iptables檔案裡了.寫入後記得把防火牆重起一下,才能起作用.
[[email protected] ~]# service iptables restart
現在IPTABLES配置表裡什麼配置都沒有了,那我們開始我們的配置吧
(3)新增規則.
首先新增INPUT鏈,INPUT鏈的預設規則是DROP,所以我們就寫需要ACCETP(通過)的鏈
為了能採用遠端SSH登陸,我們要開啟22埠.
[[email protected] ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT
[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理
如果做了WEB伺服器,開啟80埠.
[[email protected] ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
如果做了郵件伺服器,開啟25,110埠.
[[email protected] ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT
如果做了FTP伺服器,開啟21埠
[[email protected] ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT
如果做了DNS伺服器,開啟53埠
[[email protected] ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT
如果你還做了其他的伺服器,需要開啟哪個埠,照寫就行了.
上面主要寫的都是INPUT鏈,凡是不在上面的規則裡的,都DROP
允許icmp包通過,也就是允許ping,
[[email protected] ~]# iptables -A OUTPUT|INPUT -p icmp -j ACCEPT
減少不安全的埠連線
[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP
[[email protected] ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP
有些些特洛伊木馬會掃描埠31337到31340(即黑客語言中的 elite 埠)上的服務。既然合法服務都不使用這些非標準埠來通訊,阻塞這些埠能夠有效地減少你的網路上可能被感染的機器和它們的遠端主伺服器進行獨立通訊的機會
當然出入更安全的考慮你也可以包OUTPUT鏈設定成DROP,那你新增的規則就多一些,就像上邊新增
允許SSH登陸一樣.照著寫就行了.
下面寫一下更加細緻的規則,就是限制到某臺機器
如:我們只允許192.168.0.3的機器進行SSH連線
[[email protected] ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT
如果要允許,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.
其他的規則連線也一樣這麼設定.
在下面就是FORWARD鏈
[[email protected] ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT
丟棄壞的TCP包
[[email protected] ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP
處理IP碎片數量,防止攻擊,允許每秒100個
[[email protected] ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
設定ICMP包過濾,允許每秒1個包,限制觸發條件是10個包.
[[email protected] ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
二,配置一個NAT表放火牆
1,檢視本機關於NAT的設定情況
[[email protected] rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all – 192.168.0.0/24 anywhere to:211.101.46.235
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
清除命令
[[email protected] ~]# iptables -F -t nat
[[email protected] ~]# iptables -X -t nat
[[email protected] ~]# iptables -Z -t nat
2,新增規則
新增基本的NAT地址轉換
新增規則,我們只新增DROP鏈.因為預設鏈全是ACCEPT.
防止外網用內網IP欺騙
[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
如果我們想,比如阻止MSN,QQ,BT等的話,需要找到它們所用的埠或者IP,
例:
禁止與211.101.46.253的所有連線
[[email protected] ~]# iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
禁用FTP(21)埠
[[email protected] ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -j DROP
這樣寫範圍太大了,我們可以更精確的定義.
[[email protected] ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -d 211.101.46.253 -j DROP
這樣只禁用211.101.46.253地址的FTP連線,其他連線還可以.如web(80埠)連線.
按照我寫的,你只要找到QQ,MSN等其他軟體的IP地址,和埠,以及基於什麼協議,只要照著寫就行了.
最後:
drop非法連線
[[email protected] ~]# iptables -A INPUT|OUTPUT|FORWARD -m state –state INVALID -j DROP
允許所有已經建立的和相關的連線
[[email protected] ~]# iptables-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[[email protected] ~]# /etc/rc.d/init.d/iptables save
這樣就可以寫到/etc/sysconfig/iptables檔案裡了.寫入後記得把防火牆重起一下,才能起作用.
[[email protected] ~]# service iptables restart
禁止mgm6688.com DNS請求
[[email protected] ~]# iptables -t raw -I PREROUTING -p udp –dport 53 -m string –to 512 –algo bm –icase –hex-string ‘|07|mgm6688|03|com’ -j DROP
參考文章
相關推薦
linux 防火牆配置規則
基礎知識 Linux系統核心內建了netfilter防火牆機制。Netfilter(資料包過濾機制),所謂的資料包過濾,就是分析進入主機的網路資料包,將資料包的頭部資料提取出來進行分析,以決該連線為放行或阻擋的機制。Netfilter提供了iptables這個
Linux 防火牆配置
1.檢視IPTABLES設定 iptables -L -n 可以看出,Linux系統上有防火牆,並且開放了22,3306埠。 2.清除原有規則 iptables -F 該命令可以清除預設表filter中的所有規則。 3.設定預設規則 i
linux 防火牆firewall規則策略
1、檢視防火牆狀態 systemctl status firewalld 2、關閉防火牆 systemctl stop firewalld 3、開啟防火牆 systemctl start firewalld 4、禁止防火牆開機自
Linux防火牆iptables規則設定
iptables命令是Linux上常用的防火牆軟體,是netfilter專案的一部分。可以直接配置,也可以通過許多前端和圖形介面配置。 語法 iptables(選項)(引數) 選項 -t<表&
[linux]防火牆配置
linux防火牆配置 second60 20181030 1.配置檔案 路徑: /etc/sysconfig/iptables 內容: # sample configuration for iptables service # you can edit thi
CentOS Linux防火牆配置及關閉
經過網路搜尋、整理、實踐筆記 最近在CentOS Linux下安裝配置 ORACLE 資料庫的時候,總顯示因為網路埠而導致的EM安裝失敗,遂打算先關閉一下防火牆。 偶然看到防火牆的配置操作說明,感覺不錯。執行”setup”命令啟動文字模式配置實用程式,在”選擇一種工具
Linux防火牆配置與管理(16)
防火牆指的是一個由軟體和硬體裝置組合而成、在內部網和外部網之間、專用網與公共網之間的邊界上構造的保護屏障.是一種獲取安全性方法的形象說法,它是一種計算機硬體和軟體的結合,使Internet與Intranet之間建立起一個安全閘道器(Security Gateway),從而保護內部網免受非法使用者的侵入,防火牆
Linux iptables 配置規則
Linux iptables 防火牆配置規則 前言:把網上我感覺不錯iptables的訪問規則都統一在這裡,以後做參考。 modprobe ipt_MASQUERADE modprobe ip_conntrack_ftp modprobe ip_nat_ftp iptab
網路配置、防火牆 (大資料叢集環境)Linux防火牆
網路配置、防火牆 1.大資料叢集環境,形成叢集區域網,使用機器名替代真實IP,如何完成IP地址與機器名的對映? 1)修改機器名 在CenterOS7,使用hostname命令,修改當前機器名,如果重啟節點機器名失效;修改/etc/hostname配置檔案(內容:自定義機器名 例:p
Linux下使用者許可權管理和防火牆配置
1、Linux使用者許可權管理 1.1、修改密碼 (1)如果是root超級使用者: passwd 使用者名稱 //修改該使用者密碼 passwd -l 使用者名稱 //鎖定該使用者,-l:lock passwd -u 使用者名稱 //解禁該使用者,-u:unlock (2)如果是
linux防火牆埠配置與關閉
埠配置 vi /etc/sysconfig/iptables #編輯防火牆配置檔案 複製 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 把22埠改為要開放的埠,例如開放8080. -A INPUT
把T-FLASH卡做成Ubuntu Linux開機登入使用鑰匙和gufw防火牆配置
一、前言 作為IT從業者,個人膝上型電腦的安全由為重要,因為你的電腦上有連線公司各伺服器的許可權,和一些個人及公司隱私重要的資料,如果被別有用心的人非法使用,後果將不堪設想,出了紕漏這鍋就背定了,因此個的膝上型電腦在沒有授權情況下,是不能給其他人使用的;所謂防患未然嘛;本文主要從電腦網路層面與物理使用上加固
Linux系統中定時任務cron和crontab命令詳解與配置規則說明
cron機制 cron可以讓系統在指定的時間,去執行某個指定的工作,我們可以使用crontab指令來管理cron機制 crontab引數 -u:這個引數可以讓我們去編輯其他人的crontab,如果沒有加上這個引數的話就會開啟自己的crontab
JDK環境搭建 & Web執行環境配置 & Java專案部署釋出(附:解決Linux防火牆限制問題)
學習目標 - Linux/Unix 作業系統上JDK環境的配置 - Linux/Unix 作業系統上web執行環境的配置 - Linux/Unix 作業系統上Java專案的部署釋出 學習步
通過iptables為Linux伺服器配置動態防火牆
Linux iptalbes 初級用法 作業系統Centos6.10 為方便操作,請切換root使用者 警告:以下命令請勿直接在生產環境操作,僅供技術參考!!! 背景知識 防火牆開啟、關閉、檢視、重啟、儲存當前狀態 命令引數釋義 例項 背景知識
linux上配置tomcat之 CentOS 7 開放防火牆埠命令
CentOS 7 開放防火牆埠 命令 最近公司新的server要求用CentOS7, 發現以前CentOS 6 系列中的 iptables 相關命令不能用了,查了下,發現Centos 7使用firewalld代替了原來的iptables。 使用方法如下: >>> 關閉防火牆
Linux中UFW防火牆配置
在管理伺服器時,必須配置以增加其安全性的第一件事是配置防火牆,幸運的是在Linux中包含一個名為Iptables的預設設定,但是這個防火牆很多人認為配置和管理有點複雜。 有更簡單的替代品可供使用,例如UFW。 UFW實際上是包含Linux的Iptables防火牆的CLI或命令列介面,該介面為我們提供了一種更
Linux防火牆下的簡單路由配置與埠對映
實驗室的windows03伺服器總是被埠掃描,又裝不了其他的防毒軟體,6年前證明瑞星靠不住,6年後還是靠不住。在實驗室找了臺沒用的機子,做一個簡單的防火牆。具體步驟如下: 一臺能跑得動你將要安裝的LInux的機器Linux系統安裝盤,發行版隨意,核心2.6該機器需要有兩塊
Linux 磁碟掛載和mount共享、NFS與防火牆配置
一、Linux 磁碟掛載和mount共享針對Linux伺服器的磁碟掛載mount和共享做簡單操作說明:1、 檢視已使用的磁碟情況df –h2、 檢視所有磁碟fdisk –l3、 檢視指定磁碟“/dev/xvde”的分割槽情況fdisk -l /dev/xvde如圖可以看到,改磁碟並未分割槽4、 我們現
使用UDEV SCSI規則在Oracle Linux上配置ASM
對於使用ASM管理的磁碟來說,需要一種能夠用於一致性標識磁碟裝置及其正確的所屬關係和許可權的手段。在Linux系統中,可以使用ASMLib來執行這項任務,但是這樣做的缺點是在作業系統上增加了額外的一層,從而導致了管理的複雜性,使用ASMLib配置ASM的方式現在已經不