歡迎您光臨本站 註冊首頁

linux 跟我一起學9

←手機掃碼閱讀     火星人 @ 2014-03-29 , reply:0

linux跟我一起學9
防火牆的配置和nat地址轉換
1.[root@zy root]# iptables -A INPUT -p icmp -j DROP
我解釋下 iptables 就是防火牆規則了 -A 就是添加一條規則了
input為進的規則 還有出的規則為output -p 就是選擇的一個協議
icmp是協議的一中 它包括tcp udp icmp等 -j 就是對此規則的選擇
drop 就是放棄 ,accept 就是接受 ,reject彈回 ,log 記入日誌里
2.規則加進去之後我們可以用[root@zy root]# iptables -L
來查看防火牆規則
[root@zy root]# iptables -L -n 以數字的格式顯示
[root@zy root]# iptables -F 清空防火牆規則
[root@zy root]# iptables --help |more 查看iptables'的幫助文檔
[root@zy root]# iptables -L -n --line-numbers 查看規則的編號
3.現在我們做一個小實驗
[root@zy root]# ftp 192.168.1.144
Connected to 192.168.1.144 (192.168.1.144).
220 Welcome to zy FTP service.
Name (192.168.1.144:root):
結果證明是可以登錄的
我們寫入這條命令
[root@zy root]# iptables -A INPUT -p tcp -s 192.168.1.102 -d 192.168.1.144 --dport 21 -j DROP
然後從新登錄ftp發現失敗了
其中-s指的是願主機 -d 是指的目標主機 --dport 指的是目標埠
如果我們想從新可以登錄就要刪除該條規則
[root@zy root]# iptables -L -n --line-numbers 發現其規則號為2
num target prot opt source destination
1 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
2 DROP tcp -- 0.0.0.0/0 192.168.1.144 tcp dpt:21
3 ACCEPT tcp -- 0.0.0.0/0 192.168.1.102 tcp dpt:21
[root@zy root]# iptables -D INPUT 2
這樣就可以刪除掉該規則了 -D是刪除的命令
4.然後讓我們清除配置規則,來從新定義規則
[root@zy root]# iptables -F 清空防火牆規則
首先我們要加入ssh規則,因為我是用windows訪問linux的,所以一定要先把次規則打入
[root@zy root]# grep ssh /etc/services 查看ssh服務的埠為22
[root@zy root]# iptables -A INPUT -p tcp -d 192.168.1.144 --dport 22 -j ACCEPT 允許所有的客戶機從遠程登錄192.168.1.144的22埠
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 22 -j ACCEPT 允許192.168.1.144的22 埠出去
[root@zy root]# iptables -L -n --line-numbers
查看下防火牆的規則
5,防火牆的默認規則是允許所有的,所有我們要把它改為默認拒絕所有需要什麼服務再加上
[root@zy root]# iptables -P INPUT DROP
[root@zy root]# iptables -P FORWARD DROP
[root@zy root]# iptables -P OUTPUT DROP
三個規則一起關掉
[root@zy root]# netstat -nal 雖然還是開了很多埠但是起作用的埠就只有22了只有ssh協議可以進來了
[root@zy root]# service iptables save
將當前規則保存到 /etc/sysconfig/iptables: [ 確定 ]
這樣這條規則就保存到iptables中了 開機從啟就會執行這條規則的
6.現在我們做一個實驗把web服務加進去
[root@zy root]# iptables -A INPUT -p tcp -d 192.168.1.144 --dport 80 -j ACCEPT
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 80 -j ACCEPT
[root@zy root]# iptables -L -n
[root@zy root]# service iptables save
7.加入dns伺服器的埠
[root@zy root]# grep domain /etc/services
domain 53/tcp # name-domain server
domain 53/udp
[root@zy root]# iptables -A OUTPUT -p udp --dport 53 -j ACCEPT 請求對方主機解析
[root@zy root]# iptables -A INPUT -p udp --sport 53 -j ACCEPT 對方發來回應解析
這樣dns解析也就完成了
[root@zy root]# service iptables save
[root@zy root]# host www.sina.com 我的解析是成功的
如果你們不成功請檢查下
[root@zy root]# more /etc/resolv.conf
8.如果你自己做自己的dns伺服器的訪問
你需要加入如下的兩條命令
[root@zy root]# iptables -A INPUT -p udp --dport 53 -j ACCEPT
[root@zy root]# iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
[root@zy root]# iptables -L -n
9.打開本機的互聯設備
[root@zy root]# netstat -tnl
發現有127.0.0.1的迴環設備都是要打開的
[root@zy root]# iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 把所有原是127.0.0.1的,目標是127.0.0.1的全部打開
[root@zy root]# ^IN^OUT 我們使用命令替換功能
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
[root@zy root]# iptables -L -n
10.為了安全期間我們要把防火牆做的更嚴密些,例如22號埠對於給我發送過請求的包,我才給於回應,沒給我發送請求的包我是不與理會的,這樣做的原因是預防系統漏洞產生的,主動發包發出去
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 22 -m state --state ESTABLISHED -j ACCEPT
-m 是擴展條間 state 是匹配狀態 --state ESTABLISHED 狀態是鏈接過,
[root@zy root]# iptables -L -n
然後我們再刪除
[root@zy root]# iptables -D OUTPUT 5 即規則是ACCEPT tcp -- 192.168.1.144 0.0.0.0/0 tcp spt:22 的這一條 切記一定要先建好擴展規則,然後在刪除負責ssh鏈接會斷開
[root@zy root]# service iptables save
同理80埠也一樣要設定 不允許80埠主動發包給遠端機子
[root@zy root]# iptables -A OUTPUT -p tcp -s 192.168.1.144 --sport 80 -m state --state ESTABLISHED
[root@zy root]# iptables -L -n
然後我們再刪除
[root@zy root]# iptables -D OUTPUT 1 即ACCEPT tcp -- 192.168.1.144 0.0.0.0/0 tcp spt:80 的這條規則
[root@zy root]# iptables -L -n
[root@zy root]# service iptables save
上面的這些規則都是設定我們為伺服器的
但作為客戶機同樣要進行防護,道理是一樣的 ,配置也差不多,大家自己修改下了
11,前面我們都是配置了input和output 沒有配置forward forward是發往外網的,當你用到路由器的時候才需要配置forward
當你需要區域網上的其他主機通過你才能連接到互聯網上的時候你需要把forward打開
[root@zy root]# iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT 這裡我允許區域網192.168.1.0 這個網段的地址通過我訪問互聯網
[root@zy root]# iptables -A FORWARD -d 192.168.1.0/24 -j
是允許互聯網回應給內部主機
記住就算配置了forward 也要對一個文件修改下,否則forward是不起作用的,也就是打開內核的轉換文件
[root@zy root]# echo "1" > /proc/sys/net/ipv4/ip_forward
另外還要保存這個值,我們需要打開
[root@zy root]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
wq
[root@zy root]# iptables -L -n
好了 ,但是現在還不能訪問區域網的主機還是不能訪問外網的,因為它是內網的地址,訪問外網還需要做一個nat地址轉換
12. 學習nat地址轉換
nat地址轉換在網關上進行改變的
[root@zy root]# iptables -t nat -L -n -t nat查看nat轉換表
我們假設有一個環境
主機A 的ip 地址是 192.168.1.102 區域網內網
主機B 是雙網卡的ip 地址是 10.0.0.254 , 192.168.1. 144 可以把主機b看作一個路由器
主機C 的ip是 10.0.0.1 外網
[root@zy root]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.0.0.254
-t nat是 nat類型的轉換 -A POSTROUTING 區域網的182.168.1.0 /24 通過源地址直接轉換為10.0.0.254
這個10.0.0.254是一個靜態的地址,但是如果我們是撥號上網的話,這個地址 就不能固定下來了
[root@zy root]# iptables -t nat -L -n
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 192.168.1.0/24 0.0.0.0/0 to:10.0.0.254
[root@zy root]#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
其中MASQUERADE是一個動態獲取網關地址的命令
這樣我們就可以動態的獲取到地址,
我們假設另一個環境
主機A 的ip 地址是 192.168.1.102 外網
主機B 是雙網卡的ip 地址是 10.0.0.254 , 192.168.1. 144 可以把主機b看作一個路由器
主機C 的ip是 10.0.0.1 區域網內網的web伺服器
我們就要加入這樣的一條命令
[root@zy root]# iptables -t nat -A PREROUTING -d 192.168.1.0/24 -p tcp -dport 80 -j DNAT --to-destination 10.0.0.254
這樣外網訪問內網的web伺服器就首先進入10.0.0.254這個路由器了
    是男人看了就回帖,如果是女人留下你的聯繫方法,如果是人妖對不起地球人不歡迎你.

[火星人 ] linux 跟我一起學9已經有452次圍觀

http://coctec.com/docs/linux/show-post-202791.html