-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