關於iptables--基礎知識

什麼是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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章