1. 程式人生 > >Linux 學習總結(二十五) 系統管理4

Linux 學習總結(二十五) 系統管理4

iptables filter nat

netfilter iptables 應用實例

一 filter表案例

1 需求:只針對filter表,預設INPUT 鏈DROP ,其他兩個鏈ACCEPT,然後針對
192.169.188.0/24開通22端口,對所有網段開放80端口,21端口。
我們編寫shell腳本實現

vim /usr/local/sbin/iptalbes.sh
#!/bin/bash
ipt="/usr/sbin/iptables"
$ipt -F        # 清空現有規則
$ipt -P INPUT DROP    # 預設INPUT 鏈規則
$ipt -P OUTPUT ACCEPT  # 預設 OUPUT 鏈規則
$ipt -P FORWARD ACCEPT  # 預設FORWARD鏈規則
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #疏通傳輸環境
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT #放行指定ip的22端口
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT  #放行80端口
$ipt -A INPUT -p tcp --dport 21 -j ACCEP   #放行21端口

2.關於icmp 的一個小應用
為了服務器安全我們通常不希望陌生主機ping我們的網絡,因此有必要通過防火墻機制實現一個禁ping操作
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
上面命令可以不讓任何機器ping我們的主機,但是通常我們要檢測內網,所以應該在此基礎上可以放行內網ping操作,可以繼續添加下面規則
iptables -I INPUT -p icmp --icmp-type 8 -i eth0 -s 10.0.0.0/24 -j ACCEPT

二 nat表的應用

nat表的應用很大程度上實現了一個路由器的功能。
案例1:假設你的機器有兩塊網卡,eth0 和eth1,其中eth0的ip為10.0.2.68,eth1的ip為192.168.1.1。eth0鏈接了互聯網,但是eth1沒有鏈接。現在又另外一臺機器,ip為192.168.1.2和eth1是互通的,那麽如何設置才能讓ip為192.168.1.2這臺機器上外網了?

我們配置nat表的規則即可
1 打開路由轉發功能
echo "1" > /proc/sys/net/ipv4/ip_forward
2 配置路由規則
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
3 配置網關
B上設置網關為192.168.100.1
備註 設置IP和掩碼
ifconfig eth0 192.168.5.40 netmask 255.255.255.0
設置網關
route add default gw 192.168.5.1
route -n查看網關
案例2:A機器可以上網,B機器只能和C通信,讓A機器可以直接連通B機器的22端口。
以我自己的環境為例,A機器為windos主機,ip為192.168.226.1
B機器為vmware裏面的linux1,有兩個網卡,ens33 ip為192.168.226.129
ens37為192.168.100.1
C機器為虛擬機linux2 ,ip為192.168.100.100
現在怎麽配置可以讓主機ssh連接linux2 呢
1.依舊是打開路由轉發
echo "1" > /proc/sys/net/ipv4/ip_forward
2配置路由規則
A上執行iptables -t nat -A PREROUTING -d 192.168.226.129 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
在路由前創建一個映射端口,指明從哪裏進,進到哪裏
A上執行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.226.129
在路由後添加源ip地址,目的ip地址對應關系,指明從哪裏出
3 配置網關
B上設置網關為192.168.100.1
最後,ssh鏈接 192.168.226.129 port 1122 就可以登陸到 C機器

Linux 學習總結(二十五) 系統管理4