天天看點

iptables 參數意義

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

-A 追加,在目前鍊的最後新增一個規則

-p tcp :TCP協定的擴充。一般有三種擴充

         --dport XX-XX:指定目标端口,不能指定多個非連續端口,隻能指定單個端口,比如

         --dport 21  或者 --dport 21-23 (此時表示21,22,23)

          --sport:指定源端口

         --tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)

            對于它,一般要跟兩個參數:

                       1.檢查的标志位

                         2.必須為1的标志位

                          --tcpflags syn,ack,fin,rst syn   =    --syn

        表示檢查這4個位,這4個位中syn必須為1,其他的必須為0。是以這個意思就是用于檢測三次握手的第一次包的。對于這種專門比對第一包的SYN為1的包,還有一種簡寫方式,叫做--syn -m multiport:表示啟用多端口擴充    之後我們就可以啟用比如 --dports 21,23,80   --state  

         指定要比對資料包的狀态,一共有4種狀态可以使用:INVALID、ESTABLISHED、NEW和RELATED。這個比對操作必須由-m state明确指定才能使用

ACCEPT                        允許符合條件的資料包通過

linux iptables 用法

2011-01-14 10:43

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -F

02

# 允許包從22端口進入

03

04

# 允許從22端口進入的包傳回

05

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

06

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

07

iptables -A INPUT -p udp --sport 53 -j ACCEPT

08

#允許本機通路本機

09

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

10

iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

11

#允許所有IP通路80端口

12

iptables -A INPUT -p tcp -s 0/0 --dport 80 -j ACCEPT

13

iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

14

#儲存配置

15

iptables-save > /etc/sysconfig/iptables

16

iptables -L

service iptables restart

1) 重新開機後生效

開啟: chkconfig iptables on

關閉: chkconfig iptables off

2) 即時生效,重新開機後失效

開啟: service iptables start

關閉: service iptables stop

需要說明的是對于Linux下的其它服務都可以用以上指令執行開啟和關閉操作。

在開啟了防火牆時,做如下設定,開啟相關端口,修改/etc/sysconfig/iptables 檔案,添加以下内容:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

打開終端

cd /java/tomcat

#執行

bin/startup.sh #啟動tomcat

bin/shutdown.sh #停止tomcat

tail -f logs/catalina.out #看tomcat的控制台輸出;

#看是否已經有tomcat在運作了

ps -ef |grep tomcat

#如果有,用kill;

kill -9 pid #pid 為相應的程序号

例如 ps -ef |grep tomcat 輸出如下

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

input =>filter #目的ip是本機的資料包

forward =>filter #穿過本機的資料包

prerouting =>nat #修改目的位址(DNAT)

postrouting =>nat #修改源位址(SNAT)

iptables -t 要操作的表 操作指令 要操作的鍊 規則号碼 比對條件 -j 比對到以後的指令

iptables -I INPUT -j DROP #-t 預設為filter

iptables -I INPUT 3 -j DROP #連結裡插入一條規則(插入第三條)

iptables -D INPUT 3 #按号碼比對删除

iptables -D INPUT -s 192.168.0.1 -j DROP #按内容比對删除

iptables -R INPUT 3 -j ACCEPT #将原來3的規則改為-j ACCEPT

iptables -P INPUT DROP #設定預設規則

iptables -F INPUT #清空filter表INPUT鍊中的所有規則

iptables -t nat -F PREROUTING

iptables -t nat vxnL PREROUTING

--# v: 顯示詳細資訊

--# x: 在v的基礎上,禁止自動機關換算

--# n: 隻顯示IP位址和端口号碼,不顯示域名和服務名稱

========比對條件

-i -i eth0 #流入接口(是否從網口eth0進來)

-o #流出接口

-s -s 192.168.1.0/24 #來源位址

-d #目的位址

-p -p icmp --icmp-type #協定類型

--sport --sport 1000:3000 #來源的端口

--dport --dport 1000: :3000 #目的的端口1000:(1000端口以上) :3000(3000端口以下)

-s 192.168.0.1 -dwww.sina.com-p tcp -dport 80

================================

iptables -A INPUT -j ACCEPT #允許所有通路本機IP的資料包通過

iptables -A FORWARD -s 192.168.0.1 -j DROP #阻止來源位址為192.168.80.39的資料包通過本機

-j DNAT #目的位址轉換,DNAT支援轉換為單IP,也支援轉換到IP址

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.3:80

#把從ppp0進來的要通路tcp/80的資料包的位址改為192.168.0.3

-j SNAT #源位址轉換

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1

#将内網192.168.0.0/24的源位址改為1.1.1.1,用于nat表

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1-1.1.1.10

#修改成為一個位址池

-j MASQUERADE #動态源位址轉換

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

#将源位址為192.168.0.0/24的資料包進行位址僞裝

===================附加子產品

state #按包狀态比對

mac #按來源mac比對

limit #按包速率比對

multiport #多端口比對

--state

-m state #new,related,established,invalid

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

#包狀态 RELATED(衍生态),ESTABLISHED(連接配接态),NEW(有别于tcp的syn),INVALID(不被識别的)

iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP

#阻斷來自某MAC位址的資料包通過本機

iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -j ACCEPT

#用一定速率去比對資料包

iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -j ACCEPT

#一次比對多個端口

=======================================執行個體分析===================================

單伺服器的防護:

iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT

iptables -P INPUT DROP

制作網關:

echo "1" > /proc/sys/net/ipv4/ip_forward #啟用路由轉發

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

限制内網使用者:filter->forward

iptables -A FORWARD -s 192.168.0.3 -j DROP

iptables -A FORWARD -m mac --mac-source 11:22:33:44:55:66 -j DROP

iptables -A FORWARD -dwww.163.com-j DROP

内網做對外伺服器:

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.1.1

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81 -j DNAT --to 192.168.1.2:80

========================================連接配接追蹤子產品=================================

主動模式(ACTIVE)

使用連接配接追蹤子產品(打開tcp/20,防火牆打開高範圍端口,配置ftp,減小被動模式端口範圍)

modprobe ip_nat_ftp

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

被動模式(PASSIVE)

=============================網關政策=================================

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/tcp_syncookies

echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

modprobe ip_nat_ftp

堵:

iptables -A FORWARD -p tcp --dport 80 -j DROP

iptables -A FORWARD -p tcp --dport yyy:zzz -j DROP

通:

iptables -A FORWARD -p tcp --dport xxx -j ACCEPT

iptables -A FORWARD -p tcp --dport yyy:zzz -j ACCEPT

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -P FORWARD DROP

==========================三大紀律五項注意=============================

3: filter nat mangle

5: prerouting,input,forward,output,postrouting

==========================注意事項==============================

#養車好的習慣

iptables -vnL

iptables -t nat -vnL

iptables-save

#注意邏輯順序

iptables -A INPUT -p tcp --dport xxx -j ACCEPT

iptables -I INPUT -p tcp --dport yyy -j ACCEPT

繼續閱讀