1. 程式人生 > >閘道器伺服器設定手冊(iptables+iptables_logger_v0.4)

閘道器伺服器設定手冊(iptables+iptables_logger_v0.4)

iptables_logger的配置網站:

iptables_logger網站:

http://www.gege.org/iptables/

1.scripts/feed_db.pl

這個指令碼檔案使用perl編寫,需要修改其中引數才能才能執行。

2.php+mysql+apache整合

安裝是需要安裝php+php-mysql,不然php和mysql不能呼叫連線。

3.通過執行檔案去尋找根源

  • iptables遮蔽QQ與MSN

目前環境如下:
內網網段:192.168.10.0/24;
閘道器:192.168.10.254(在大樓物業處);
因此現在在內部做一個自己的閘道器,在上面做iptables策略.
今後內網網路更換為192.168.9.0/24;閘道器為192.168.9.254
筆記如下:
1.配置閘道器伺服器網絡卡資訊:
ifconfig eth0 192.168.10.222 //配置網絡卡0
ifconfig eth1 192.168.9.254 //配置網絡卡1
route add default gateway 192.168.10.254 //配置預設閘道器
2.利用iptables設定NAT
iptables -t nat -a POSTROUTING -o eth0 -s 192.168.9.0/24 -j SNAT --to 192.168.10.222 //將9網段NAT為192.168.10.222出去
3.利用iptables做策略限制QQ與MSN
QQ伺服器埠為:8000;客戶端埠為:4000(開啟第二個QQ時為4001,依次類推);均為UDP.
MSN埠數較多:1863為登陸所需要的埠以及3000-4000等等;MSN伺服器為gateway.messenger.hotmail.com.
iptables -A FORWARD --protocol udp --dport 8000 -j REJECT //遮蔽QQ伺服器
iptables -A FORWARD -d gateway.messenger.hotmail.com -j REJECT //遮蔽msn伺服器
iptables -A FORWARD --protocol tcp --dport 1863 -j REJECT //遮蔽msn客戶端埠

不是就想對百度進行封。而是所有的網址。比如www.qq.com ,news。qq.com。mail。qq.com。要只要寫入*。qq.com就可以禁止上面3個網址了。我是在路由上做的(開發路由)。

#! /bin/bash
/etc/init.d/iptables stop 1>/dev/null
echo 1 > /proc/sys/net/ipv4/ip_forward
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT ACCEPT

/sbin/iptables -A INPUT -s 127.0.0.1 -j ACCEPT

/sbin/iptables -t nat -A POSTROUTING -s 192.168.168.0/24 -o eth1 -j SNAT --to x.x.x.x

/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#ACCEPT EXCEPTION
iptables -A FORWARD -s 192.168.168.157 -j ACCEPT
iptables -A FORWARD -s 66.161.95.128/25 -j ACCEPT
iptables -A FORWARD -d 66.161.95.128/25 -j ACCEPT

#DROP QQ
iptables -A FORWARD -p udp --dport 1080 -j DROP
iptables -A FORWARD -p udp --dport 4000 -j DROP
iptables -A FORWARD -p udp --dport 8000 -j DROP
iptables -A FORWARD -d 61.135.131.240 -j DROP
iptables -A FORWARD -d 61.141.194.0/24 -j DROP
iptables -A FORWARD -d 61.144.238.0/24 -j DROP
iptables -A FORWARD -d 218.17.209.23 -j DROP
iptables -A FORWARD -d 218.17.209.42 -j DROP
iptables -A FORWARD -d 218.17.217.103 -j DROP
iptables -A FORWARD -d 218.18.95.0/24 -j DROP
iptables -A FORWARD -d 219.133.38.0/24 -j DROP
iptables -A FORWARD -d 219.133.40.15 -j DROP
iptables -A FORWARD -d 219.133.45.15 -j DROP
iptables -A FORWARD -d 219.133.49.0/24 -j DROP
iptables -A FORWARD -d 202.96.170.0/24 -j DROP
iptables -A FORWARD -d 202.103.190.61 -j DROP
iptables -A FORWARD -d 202.103.149.40 -j DROP
iptables -A FORWARD -d 202.104.129.0/24 -j DROP

#DROP MSN
iptables -A FORWARD -p tcp --dport 1863 -j DROP
iptables -A FORWARD -p udp --dport 1863 -j DROP
iptables -A FORWARD -p tcp --sport 1863 -j DROP
iptables -A FORWARD -p udp --sport 1863 -j DROP
iptables -A FORWARD -d 207.46.104.20 -j DROP
iptables -A FORWARD -d 207.46.110.0/24 -j DROP
iptables -A FORWARD -s 207.46.104.20 -j DROP
iptables -A FORWARD -s 207.46.110.0/24 -j DROP

#DROP dianlv,emule
iptables -A FORWARD -p udp --dport 4661 -j DROP
iptables -A FORWARD -p udp --dport 4662 -j DROP
iptables -A FORWARD -p tcp --dport 4661 -j DROP
iptables -A FORWARD -p tcp --dport 4662 -j DROP
iptables -A FORWARD -p udp --sport 4661 -j DROP
iptables -A FORWARD -p udp --sport 4662 -j DROP
iptables -A FORWARD -p tcp --sport 4661 -j DROP
iptables -A FORWARD -p tcp --sport 4662 -j DROP

#ACCEPT ICMP
iptables -A FORWARD -p icmp -j ACCEPT

#ACCEPT SSH
iptables -A FORWARD -p tcp --sport 22 -j ACCEPT
iptables -A FORWARD -p tcp --dport 22 -j ACCEPT

#ACCEPT HTTP
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --sport 443 -j ACCEPT

#ACCEPT FTP
iptables -A FORWARD -p tcp --dport 20 -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp --sport 20 -j ACCEPT
iptables -A FORWARD -p tcp --sport 21 -j ACCEPT

#ACCEPT MAIL
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 433 -j ACCEPT
iptables -A FORWARD -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 433 -j ACCEPT

#ACCEPT DNS
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -p tcp --sport 53 -j ACCEPT
iptables -A FORWARD -p udp --sport 53 -j ACCEPT
 

# 動態的檢視上網記錄

tail -f /var/log/squid/access.log

# 動態的iptables記錄

tail -f /var/log/iptables.log

# 開啟iptables 的log解析到mysql資料庫中

/etc/rc.d/init.d/iptablelog start

Iptables服務全攻略之實戰配置 之學習筆記(1)

一、netfilter 鏈 表 規則  之間的關係及相關認識
netfilter是表的容器,表是鏈的容器,鏈是規則的容器。 
1、filter表      實現包過濾(預設的表)
            INPUT           鏈    處理進入本機的資料包
           FORWORD        鏈    處理轉發的資料包
              OUTPUT       鏈    處理本地生成的資料包
   該表只允許兩種規則 ACCEPT DROP
2.、 nat表        網路地址轉換用 (可實現一對一,一對多,多對多等的NAT工作)
          PREROUTING       鏈     處理即將進入本機的資料包
          POSTROUTING      鏈     處理即將發出的資料包
             OUTPUT         鏈     處理在路由之前待轉換的本地生成的資料包
3.   Mangle 表  主要用於對指定的包進行修改,適用於以上五種鏈。
二、
 此句示例
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.100
  將資料包的源地址轉換為 192.168.1.100
      
此句示例
Iptables -t nat -A PREROUTING  -i etho -p tcp --dport 80 -j DNAT --to 5.6.7.8:8080
改變對網絡卡eth0 80埠的請求的資料包的目的地址到5.6.7.8的8080埠
注:DNAT 多用於釋出內網的服務。
三、將案例說明中的規則寫成了指令碼 ,以方便於實際適用
  該案例圖片來源於[url]http://redking.blog.51cto.com/27212/143185[/url]
  該案例圖片來源於[url]http://redking.blog.51cto.com/27212/143185[/url]
具體指令碼如下:
#!/bin/bash
echo "starting iptables rules...."
#啟用路由轉發功能
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#以下三步可省略,預設是開啟的
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptalbes -t nat -P POSTROUTING ACCEPT
#允許迴環地址的通訊
iptables -A INPUT -i lo -j ACCEPT
#新增連線狀態設定
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#開放80埠
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#開啟DNS使用UDP、TCP的53埠
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
#開啟SSH使用的TCP協議22埠
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#開放QQ,MSN相關埠
iptables -A FORWARD -p tcp --dport 1863 -j ACCEPT
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -p udp --dport 8000 -j ACCEPT
iptables -A FORWARD -p tcp --dport 4000 -j ACCEPT
#開放郵件埠
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT 
iptables -A FORWARD -p udp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --dport 143 -j ACCEPT 
iptables -A FORWARD -p udp --dport 143 -j ACCEPT
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT 
iptables -A FORWARD -p udp --dport 993 -j ACCEPT
iptables -A FORWARD -p tcp --dport 995 -j ACCEPT 
iptables -A FORWARD -p udp --dport 995 -j ACCEPT
#nat設定
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE
#釋出內網web伺服器
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80
#end
 
 
附註:遮蔽QQ MSN時 除了可以遮蔽埠外,還可以遮蔽域名和IP
 Iptables -A FORWARD -d 域名或IP -j DROP
可將以上指令碼內容命名為filter-dnat 並加入啟動檔案中
 具體操作
Touch /etc/rc.d/filter-dnat
Chmod u+x /etc/rc.d/filter-dnat
Echo "/etc/rc.d/filter-dnat" >> /etc/rc.d/rc.local
 

---------------------------------------------------------------------------------------

通過squid2.6(yum install)和iptables結合使用,達到透明代理上網的nat功能。

iptables -t nat -A PREROUTING -s $INNET -p tcp --dport 80 -j REDIRECT --to-ports 3128

通過上面的規則,我們就可以實現將所有網頁的資訊通過squid來控制上網和記錄上網記錄等等功能。

但是這裡碰到一個問題,就是tcp/ip(80埠)協議到squid後,不經過forward規則,mac地址和ip繫結的效果

也就沒有了中影,某一臺機器修改了自己的ip後,使用ping命令是ping不通的,這是因為,ping沒有經過透明代理

squid,我們通過瀏覽器上網,是可以進過的。所以這裡自然就想到了使用squid來繫結mac和ip。搜尋了好長時間

在找到真正原因。其中一條就是重新編譯squid,我以前剛剛使用linux時,最怕最煩的就是手工的安裝程式,有時候

一下午也裝不好一個程式,所以,我儘量想找其他方法來解決這個問題,就是通過arp命令來靜態的繫結mac ip,好多

人也想要這麼去做,可是通過我的實際證明其中大部分方法都是沒有經過實驗或者是沒有說明清楚。

     最後還是要重新編譯squid,網上的資訊也不是太多,其中有一篇非常好。其實重新編譯一下也不是太煩,只要掌握

一定的規則和技巧便可。

除了安裝上面的安裝步驟外還要新增(/etc/squid/squid.conf):

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on    # 這四行為Transparent proxy 設定

squid2.6版本以後,就不需要怎麼麻煩了,只要在 埠3128後面加 transparent(透明代理)便可

重新設定配置檔案以後,使其生效:

  1. sbin/squid -k parse
  2. sbin/squid -k reconfigure

經過怎麼多天,對linux的進一步的人生,讓我感受到了linux的強大和靈活。

加油每一天。