什麼是iptables?
常見於linux系統下的應用層防火牆工具
常見人員:
系統管理人員、網絡工程師、安全人員
iptables的作用:
一、如何用iptables搭建一套如何企業實際使用的防火牆規則
二、如何用iptables進行防***
三、如何利用iptables進行數據包準啊發
四、明白iptables的強大及實際使用意義
什麼是Netfilter:
Netfilter是Linux操作系統核心層內部的一個數據包處理模塊
什麼是Hook point?
數據包在Netfilter中的掛載點
(PRE_ROUTING、INPUT、OUTPUT、FORDWARD、POST_ROUTING)
IPTABLES的四表五鏈
四張表:filter、nat、mangle、raw表
五條鏈:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
四表
filter:用於包過濾
nat:網絡地址轉發
mangle:對特定數據包修改
raw:不做數據包鏈接跟蹤
五鏈
INPUT 本機數據包入口
OUTPUT 對特定數據包修改
FORWARD 進過本機轉發的數據包
PREOUTING 防火牆之前,修改目的地址(DNAT)
POSTROUTING 防火牆之後,修改源地址(SNAT)
iptables的規則組成
數據包訪問控制:ACCEPT、DROP、REJECT
數據包改寫:SNAT、DNAT
信息記錄:LOG
模塊
state 包狀態,有四個:NEW、RELATED、ESTABLISHED、INVALID
mac 源MAC地址
limit 包速率限制
multiport 多端口
iprange 端口範圍
場景模擬
場景一:
規則一、對所有地址開放本機的tcp(80、22、10-21)端口訪問
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -p tcp --dport 10:21 -j ACCEPT
規則二、允許所有的地址開放本機的基於ICMP協議的數據包訪問
iptables -I INPUT -p ICMP -j ACCEPT
規則三、其他未被允許的端口則禁止訪問
iptables -A INPUT -j REJECT
場景一、存在的問題
1、本機無法訪問本機
iptables -I INPUT -i lo -j ACCEPT(允許數據包通過lo地址訪問)
2、本機無法訪問其他主機
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(建立這兩種狀態的數據監聽時則允許)
補充:在場景一的基礎上,修改只允許192.168.1.1的主機訪問httpd服務
iptables -I INPUT -p tcp -s 192.168.1.1 --dport 80 -j ACCEPT
主動模式和被動模式的區別(數據鏈路和命令鏈路)
場景二:
1、ftp主動模式下iptables的規則配置
一、ftp連接的默認模式爲被動模式
二、vsftpd服務支持主動模式需要注意配置選項
port_enabled=yes
connect_from_port_20=YES
三、iptables需要開啓21端口的訪問權限
#iptables -I INPUT -p tcp -dport 21 -j ACCEPT
2、ftp被動模式下iptables的規則配置
方法1、爲vsftpd指定數據端口,並且通過iptables開放相應需要傳輸的端口段
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
vim /etc/vsftpd/vsftpd.conf
pasv_max_port=60000
pasv_min_port=50000
iptables -I INPUT -p tcp --dport 50000:60000 -j ACCEPT
方法二、
iptables -I INPUT -i lo -j ACCEPT
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp -dport 21 -j ACCEPT
modprobe nf_conntrack_ftp
永久修改配置(vim /etc/sysconfig/iptables-config)
IPTABLES_MOUDULES="nf_connectrack_ftp"
場景三:
要求一、員工在公司內部(10.10.155.0/24,10.10.188.0/24)能訪問服務器上的任何服務
要求二、當員工出差在上海,通過***鏈接到公司,外網(員工)==撥號到==》***服務器==》內網FTP、SAMBA、NFS、SSH
要求三、公司有一個門戶網站需要允許公網訪問
常見端口梳理
常見允許外網訪問的端口
網站wwwhttp80/tcp
https443/tcp
郵件mailsmtp25/tcp
smtps465/tcp
pop3110/tcp
pop3s995/tcp
imap 143/tcp
一些常見不允許外網訪問的服務
文件服務器NFS123/udp
SAMBA137,138,139/tcp,445/tcp
FTP20/tcp,21/tcp
遠程管理 SSH22/tcp
數據庫MYSQL3306/tcp
ORACLE1521/tcp
配置規則的基本思路
ACCEPT允許本地訪問
允許已監聽狀態數據包通過
允許規則中的允許的數據包通過【注意開放ssh遠程登陸端口】
DENY拒絕未被允許的數據包
iptables 規則保存成配置文件
/etc/init.d/iptables save
利用iptables防cc***
connlimit模塊
作用:用於限制每一個客戶端ip的併發連接數
參數:-connlimit-above n #限制併發個數
例如:iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT
Limit模塊
作用:限速,控制流量
例:iptables -A INPUT -m limit --limit 3/hour
--limit-burst 默認值爲5
iptables -A INPUT -p icmp -m limit --limit 1/m --limit-burst 10 -j ACCEPT