防火牆 iptables : 關閉兩項功能: selinux ,生產中也一般關閉,也可以做ids***檢測 iptables ,生產中內網關閉,外網打開,大併發情況下需要關閉,否則影響性能 安全優化: 1. 儘量不要給服務器配置外網ip,可以通過代理轉發。 Netfilters/iptables 是開源的基於包過濾的防火牆工具,主要工作在OSI七層模型的2 ,3,4層,如果編譯內核的話,iptables也支持7層控制(squid + iptables)。 Nginx負載均衡: 四層負載均衡: IP + 端口的負載 七層負載均衡: 基於URL等應用層信息的負載均衡 二層負載 : 基於MAC地址 三層負載均衡: 基於IP iptables涉及的名詞 : 容器 : 用於形容包含與被包含的關係 Netfilter : 是表的容器,即是說iptables或者netfilter中包含的是各個表(filter表,NAT表,MANGLE表,RAW表) iptables的表又是鏈的容器 鏈 : INOUT , OUTPUT , FORWARD(轉發) , PREROUTING(預路由,進來之前路由) , POSTROUTING 鏈式規則的容器 規則 : 一條條過濾的語句 表與鏈之間關係 : filter表包含的鏈有 : INPUT , OUTPUT , FORWARD , filter表主要與主機自身相關,是默認的表, nat表包含的鏈有 : OUTPUT , PREROUTING(發生在路由判斷之前,主要作用是修改數據包的目標地址及端口,外網映射內網) , POSTROUTING(改變數據包的源地址,源端口,內網映射外網 如共享上網) mangle表包含所有的鏈 。 查看iptables規則 : iptables -L -n 或 iptables -L -n --line-numbers (會給規則顯示序號,方便刪除) iptables -V : 查看版本信息 iptables -h : 查看幫助信息 啓動iptables : /etc/iinit.d/iptables start iptables -F : 清除所有規則,除了默認的 iptables -X : 清除用戶自定義的鏈 iptables -Z : 鏈的計數器清零 注意 : 使用iptables所做的操作屬於臨時生效,重啓iptables或者主機就沒效果了 demo : 1. 封端口 找出ssh端口 : netstat -lntup | grep ssh 等價於命令 ss -lntup | grep ssh 結果爲 22 語法 : iptables -t 表明 -A|-D 鏈 具體規則 處理選項(-j)(DROP | REJECT | ACCEPT) 然後禁用 : iptables -t filter -A INPUT -p tcp --dport 22 -j DROP 恢復 : -F 參數刪除所有 ,有點暴力 通過序號刪除 : iptables -D INPUT 規則序號 注意: 封ip時,需要使用-i參數添加規則到鏈首,-a 在鏈尾,可能不起作用 2. 禁止10.0.0.0網段連接或者封IP iptables -t filter -A INPUT -i eth0 -s 10.0.0.0/24 -j DROP # -i 表示進入的接口 -s 是源地址(可以是ip或者網段) // 效果測試 ping不通 可以禁止別人而放行自己 : 利用感嘆號 ,即取非運算,感嘆號在 -s 前邊或者後邊與os版本有關 ,效果測試: 自己可以ping通自己,但別人ping不通 3. 封端口段 iptables -A INPUT -p tcp --sport 22:88 # --sport 源端口 或 iptables -A INPUT -p tcp -m mutiport -dport 21,22,23,24 匹配製定的網絡接口: iptables -A INPUT -i eth0 # 從eth0 進入的 iptables -A OUTPUT -o eth0 # 從 eth0出去的 配置一個企業防火牆 : iptables -F iptables -X iptables -Z iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT # 允許企業內網主機連接22端口 ssh iptables -A INPUT -i lo -j ACCEPT # 允許從本地迴路進入 iptables -A INPUT -o lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT # 允許從本地迴路出去 默認規則: -P參數 大寫P iptables -P INPUT DROP 生產操作 : 編輯文件 : /etc/sysconfig/iptables 4、使用linux做網關 原理: 利用iptable的NAT表的POSTROUTING鏈 服務器網關需具備的條件: a. 物理條件 具備雙網卡,建議eth0 外網(10.0.0.19 ,GW 10.0.0.254) ,eth1 內網(192.168.1.19,內網卡不配置網關) b. 內核文件/etc/sysctl.conf 開啓轉發功能 , net.ipv4.ip_forward=1 執行 sysctl -p 使修改生效 c. iptables的filter表的FORWARD允許轉發 : intables -P FORWARD ACCEPT 加載iptables內核模塊 ,並放入rc.local : lsmod | egrep ^ip :查看是否有相關模塊,如果沒有則加載下面的模塊 載入內核模塊 : modprobe iptables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state 局域網NAT共享上網兩條命令 : 法1 : 適合有固定外網地址的 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.19 # 將出去的數據包的源地址改爲外網地址10.0.0.19 tips : -s 192.168.1.0/24 辦公室或IDC內網網段 -o eth0 爲網關的外網卡接口 -j SNAT --to-source 10.0.0.19 是網關的外網卡的IP地址 法2 : 適合外網地址變化的(如ASDL) iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE 外網地址映射到內網地址: iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.17:9000 IP轉IP一對一轉發 : iptables -t nat PREROUTING -A -d 10.0.0.7 -j DNAT --to-destination 192.168.19.5 對於企業上網人數較多,同時有多個外網IP時,可以將ip按段分配:映射多個外網Ip地址上網 iptables -t nat POSTROUTING -A -s 10.0.0.0/255.255.240.0 -j SNAT --to-source 124.42.60.11-124.42.60.16 iptables -t nat POSTROUTING -A -s 172.16.1.0/255.255.255.0 -j SNAT --to-source 124.42.60.103-124.42.60.106
Linux - iptables
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.