iptables

Netfilter Tables and Chains

有五条链分别是:
    INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING
四个表:
filter:INPUT,OUTPUT,FORWARD
nat:OUTPUT,PREROUTING,POSTROUTING
mangle:INPUT,FORWARD,OUTPUT,PREROUTING,POSTROUTING
iptables [-t table] command CHAIN number critioti(匹配条件) -j target
command
  rules:
     -A (append)
     -I [num](insert)
     -D [num](delete) 如: iptables -D FOEWARD 1
     -R [num](replace)
  chains:
     -N chain_name (new)
     -X chain_name (删除用户自定义的空链)
     -F [chain_name] (若没指chain_name则是清空filter表中的链)
     -P chain_name {DROP,ACCEPT}(默认策略policy)
     -Z chain_name (清空计数器为0)
     -E old_chain_name  new_chain_name  
规则查看:
  -L (list)
    -v (verbose)显示更详细的信息,还有-vv,-vv...
    -n (以数字的方式显示匹配条件)
    -x(精确值包体积之和)
    --line-numbers (把规则前面编号)
-j DROP,REJECT,ACCEPT,DNAT,SNAT(此是指定静态地址,若是动态则为MASQUEBADE),LOG,REDITECT(端口重定向)
匹配条件:a:common matching(通用匹配)
             -s,-source(指定原地址)
             -d,-destination(指定目标地址)
             -i [interface] (流入的接口)
             -o [interface] (从哪个网卡出去的接口)
             -p {tcp,udp,icmp}
          b:extended matching(扩展匹配)
             #显示扩展
                -m state --state {NEW,ESTABLISHED,RELATED,INVALID(不可识别的)}
             #隐式扩展
                -p tcp
                  --sport (源端口)
                  --dport(目标端口)
                  --tcp-flags syn,ack,rst,fin syn  (指定syn为1,其他为0,就是建立一个NEW,新连接)
                -p udp
                  --sport
                  --dport
                -p icmp
                  --icmp_type (标定icmp数据包的)
下面为一些iptables的例子:
  主机防火墙:
    这个是http服务的
    #iptables -A INPUT -d 192.168.0.52 -p tcp --dport 80 -m state --state NEW,ESTABLISHED  -j ACCEPT
    #iptables -A OUTPUT -s 192.168.0.52 -p tcp --sport 80 -m state --state ESTABLISHED  -j ACCEPT
    ftp服务
    #iptables -A INPUT -d 192.168.0.155 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
    #iptables -A OUTPUT -s 192.168.0.155 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
    #iptables -A INPUT -d 192.168.0.52 -m state --state ESTABLISHED,RELATED -j ACCEPT
    #iptables -A OUTPUT -s 192.168.0.52 -m state --state ESTABLISHED -j ACCEPT
    我们用iptables时的ftp服务时,还要配置此文件/etc/sysconfig/iptables-config,在里面加入"ip_conntrack_ftp,ip_nat_ftp",看这两个模块是否加入进去,查看可以用lsmod | grep ip
  网络防火墙:
    首先这个防火墙主机得有路由功能:
    /proc/sys/net/ipv4/ip-forward=1(此关机就失效)或在此文件/etc/sysctl.conf(永久有效)中配置ipv4-forward=1,可以用命令sysctl -p 来查看。
    增加训练难度,#iptables -P FORWARD DROP
    #iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    #iptables -A FORWARD -s 192.168.10.2 -d 192.168.0.0/24 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
    这个是http服务的,我们可以通过查看文件/var/log/httpd来查看访问的日志。
  也可以用iptables来记录日志:(须在所有iptables定义的规则前加此命令)
    如:#iptables -I FORWARD 1 -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -j LOG --log-prefix "web server"  (--log-prefix是在日志前面加个web server的)
  ftp服务可以在防火墙内通过:
        #iptables -A INPUT -d 192.168.0.155 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
        #iptables -A OUTPUT -s 192.168.0.155 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
 #iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  通过NAT转换来实现http服务:
 #iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -j SNAT --to-source 192.168.10.1
        #iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -m state --state NEW,ESTABLESHED -j ACCEPT
 #iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
  通过DNAT转换来实现http服务:
 #iptables -t nat -A PREROUTING -s 192.168.0.0/24 -d 192.168.0.52 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.2
        #iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.10.2 -p tcp --dport 80 -m state --state NEW,ESTABLESHED -j ACCEPT
 #iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
       
iptables还有其他用法:
   如: #iptables -A FORWARD -s 192.168.10.0/24 -m connlimit !--connlimit-above 6 -j ACCEPT  (connlimit意思是并发连接数的限制,这里是不能超过六个)
        #iptables -A INPUT  -d 192.168.0.155 -m string --string "text" -alog {bm|kmp} -j DROP (过滤含有字符串text的内容)
           其中把INPUT改成FORWARD这个只能过滤含有text的链接。如: www.text.com
        #iptables -A FORWARD -s 192.168.10.0/24 -p tcp --dport 80 -m time --timesstart 12:00 --timestop 19:00 -j DROP
             (这个是指80端口不能再12:00-19:00被访问)
 #iptables -A FORWARD -s 192.168.10.0/24 -p tcp -m multiport --destination-ports 21,80 -j DROP (multiport指定多端口的)
用过滤7层的iptables来防止p2p式的服务:
   如: #iptables -A FORWARD -m layer7 --l7proto qq -j DROP
 

           

你可能感兴趣的:(职场,iptables,休闲)