-A 追加,在当前链的最后新增一个规则
-p tcp :TCP协议的扩展。一般有三种扩展
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"> --dportXX-XX:指定目标端口,不能指定多个非连续端口,只能指定单个端口,比如</span></wbr></wbr></wbr>
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"> --dport21</span><wbr><span style="font-size:18px"> 或者 --dport 21-23 (此时表示21,22,23)</span></wbr></wbr></wbr></wbr>
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">--sport:指定源端口</span></wbr></wbr></wbr>
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">--tcp-fiags:TCP的标志位(SYN,ACK,FIN,PSH,RST,URG)对于它,一般要跟两个参数:</span></wbr></wbr></wbr>
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">1.检查的标志位</span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">2.必须为1的标志位--tcpflags syn,ack,fin,rstsyn</span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">=</span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">--syn表示检查这4个位,这4个位中syn必须为1,其他的必须为0。所以这个意思就是用于</span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
检测三次握手的第一次包的。对于这种专门匹配第一包的SYN为1的包,还有一种简写方式,叫做--syn
-m multiport:表示启用多端口扩展
<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">之后我们就可以启用比如 --dports21,23,80</span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
--state<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">指定要匹配数据包的状态,一共有4种状态可以使用:INVALID、ESTABLISHED、NEW和RELATED。这个匹配操作必须由-mstate明确指定才能使用</span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
ACCEPT<wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px"></span><wbr><span style="font-size:18px">允许符合条件的数据包通过</span></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
iptables -F |
02 | # 允许包从22端口进入 |
03 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
04 | # 允许从22端口进入的包返回 |
05 | iptables -A OUTPUT -p tcp --sport 22 -m state --stateESTABLISHED -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 --stateESTABLISHED -j ACCEPT |
14 | #保存配置 |
15 | iptables-save > /etc/sysconfig/iptables |
16 | iptables -L |
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 --dport80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport22 -j ACCEPT
文章转载自网管之家:http://www.bitscn.com/os/linux/200710/116667.html
打开终端
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 输出如下
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的规则改为-jACCEPT
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-ptcp -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 --to1.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 --to1.1.1.1-1.1.1.10
#修改成为一个地址池
-j MASQUERADE #动态源地址转换
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -jMASQUERADE
#将源地址为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 -jACCEPT
#包状态RELATED(衍生态),ESTABLISHED(连接态),NEW(有别于tcp的syn),INVALID(不被识别的)
iptables -A FORWARD -m mac --mac-source XX:XX:XX:XX:XX:XX -jDROP
#阻断来自某MAC地址的数据包通过本机
iptables -A FORWARD -d 192.168.0.1 -m limit --limit 50/s -jACCEPT
#用一定速率去匹配数据包
iptables -A INPUT -p tcp -m multiport --dports 21,22,25,80,110 -jACCEPT
#一次匹配多个端口
=======================================实例分析===================================
单服务器的防护:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -jACCEPT
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 -jMASQUERADE
限制内网用户: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 -jDROP
iptables -A FORWARD -dwww.163.com-jDROP
内网做对外服务器:
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
iptables -A INPUT -m state --state RELATED,ESTABLISHED -jACCEPT
iptables -P INPUT DROP
被动模式(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 -jACCEPT
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 -jACCEPT
==========================FAQ======================================
iptables -m 模块名 -h
/lib/modules/`uname -r`/kernel/net/ipv4/netfilter #模块存放的路径
modprobe ip_nat_ftp #加载模块
=========================实战======================================
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -jACCEPT
iptables -P INPUT DROP
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 j SNAT--to 202.106.0.254
iptables -t nat -A POSTROUTING -d 202.106.0.254 -ptcp --dport 80 -j DNAT --to 172.17.0.1
iptables -A FORWARD -i eth2 -p eth1 -m state --state NEW -jDROP