iptables


һ��Iptables�Ķ��弰�������

   iptables �ǽ����� netfilter �ܹ����ϵ�һ������˹��?�ߣ�����Ҫ������������������ǽ��͸�����?Iptables �� ipchains ��չ��������Ĺ��ܸ�Ϊǿ��Iptables �ṩ�������ֹ��ܣ�����ˡ�NAT�������ַת������ͨ�õ� pre-route packet mangling������ˣ��������˰��Dz��޸İ�����ݡ�Iptables �ڰ���˷�������� ipchians ����Ҫ�ŵ����ٶȸ�죬ʹ�ø�㡣NAT��NAT ���Է�ΪԴ��ַ NAT ��Ŀ�ĵ�ַ NAT��

   Iptables ����׷�ӡ������ɾ�����˹���ʵ��������ִ����Щ���ǹ������ netfilter �������ģ�飨�� iptables ģ��� nat ģ�飩��Netfilter �� Linux ������һ��ͨ�üܹ������ṩ��һϵ�е� ���?��tables����ÿ���������� ��������chains����ɣ���ÿ�����п�����һ�������� ������rule����ɡ�  

   iptables��4���?5���������б��ǰ��ն���ݰ�IJ�����ֵģ����ǰ��ղ�ͬ��Hook������ֵģ������ʵ������netfilter������ά�ȡ�

 1��4����:

    filter,nat,mangle,raw��

    Ĭ�ϱ���filter��û��ָ�����ʱ�����filter�?��

    ��Ĵ������ȼ���raw>mangle>nat>filter��

    filter��һ��Ĺ��˹���

    nat:����nat���ܣ��˿�ӳ�䣬��ַӳ��ȣ�

    mangle:���ڶ��ض���ݰ���޸�

    raw:���޼���ߣ�����rawʱһ����Ϊ�˲�����iptables����ݰ�����Ӹ��ٴ��?�������

  filter ���ϵͳ chain�� INPUT�����룩��FORWAD(��ǰ)��OUTPUT�������

  nat ���ϵͳ chain�� PREROUTING��Ԥ���ࣩ��POSTROUTING��·��֮��OUTPUT�������

  mangle ���ϵͳ chain�� PREROUTING��Ԥ���ࣩ��OUTPUT�������


 2��5������

    PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING��

    PREROUTING:��ݰ����·�ɱ�֮ǰ

    INPUT:ͨ��·�ɱ��Ŀ�ĵ�Ϊ����

    FORWARDING:ͨ��·�ɱ��Ŀ�ĵز�Ϊ����

    OUTPUT:�ɱ����������ת��

    POSTROUTIONG:���͵���ӿ�֮ǰ��

    



iptables_第1张图片


      ÿһ�����п�����һ������������ÿһ��������������ģ������ݰ�ͷ���������������������������ݰ�һ����ݰ��һ����ʱ��ϵͳ�ͻ�ӵ�һ������ʼ��飬���Ƿ��ϸù�������������� ������㣬ϵͳ����ݸ�����������ķ����������ݰ�����������������һ���������������ݰ��ϸ�������һ������Ļ���ϵͳ�ͻ��ݸ���Ԥ�ȶ���IJ������������ݰ�


����IPTABLES �﷨��

  ��: iptables����ʹ�õ�����?filter��nat��mangle�������, �԰����ֻʹ�� filter ��,   filter����Ĭ�ϱ�,������ʾ˵��.

  ��������: ����ӡ�ɾ����µȡ�

  �������ڰ���˿������filter���е�INPUT��OUTPUT��FORWARD����Ҳ���Բ����û��Զ��������

  ����ƥ����������ָ�����ֹ���ƥ�䣬��IP��ַ���˿ڡ������͵ȡ�

  Ŀ�궯����������ƥ��һ����ʱ������Ҫִ�е������õ��У�

   ACCEPT�� �����ͨ��

   DROP�� �����

 һЩ��չ��Ŀ�껹�У�

 REJECT: �ܾ�����ͬʱ�����߷���û�н��ܵ�֪ͨ��

 LOG: ���й���Ϣ��¼����־��

 TOS: ��д���TOSֵ��

 REDIRECT: �ض���  

   redirect����ȫ����ת�����������õ���ת�ĵ�ַ�� �����·����������ӡ������������ĵ�ַ���п��Կ�����ת������ӵ�ַ�����ԣ�forward��Ӹ�Ч����forward����������Ҫʱ������ʹ��Request Dispatcher.forward()���������ң�����Ҳ����������ʵ�ʵ����ӡ�����Щ����£����磬��Ҫ��ת��һ������������ϵ���Դ�������ʹ�� HttpServletResponse.sendRequest()������ 

  forward�������п���Ȩ��ת���ڿͻ����������ַ���в�����ʾ��ת���ĵ�ַ�����Dz���ı�Request��ֵ���������Ҫ����һ��ҳ�����ܴ��л�ȡ�µ���Ϣ�Ļ��������Request.setAttribute()������һЩ��־���������һ��ҳ���л�ȡ��

 ʹFORWARD�����ܹ���Ч��2�ַ���:

 ��1��[root@rhlinux root]# vi /proc/sys/net/ipv4/ip_forward

    [root@rhlinux root]# echo "1" > /proc/sys/net/ipv4/ip_forward


 ��2��[root@rhlinux root]# vi /etc/sysconfig/network

    [root@rhlinux root]# echo "FORWARD_IPV4=true" > /etc/sysconfig/network

iptables�﷨��ʽ:

  iptables [-t table] CMD [chain] [rule-matcher] [-j target]

��������:

   -A �� -append ����ѡ��β����һ�����������

   -D �� -delete ����ѡ��β��ɾ��һ�����߶�������

   -R �� -replace ����ѡ�����滻һ��ƥ�����

   -I �� -insert �Ը���Ĺ��������ѡ���в���һ�����߶��������������Ϊ1,������ͷ����

   -L �� -list �г�ָ�����е����й���,���û��ָ����,���г����е����й���

   -F �� -flush ���ָ�����ͱ��е����й���, ���粻ָ����,��ô��������������ա�

   -N �� -new-chain ��ָ����һ���µ��û��Զ�����,����������������ͬ��

   -X �� -delete-chain ɾ��ָ�����û�������,���豣֤���еĹ�����ʹ��ʱ����ɾ��,��û��ָ����,��ɾ�������û���.

   -P �� -policy Ϊ������ָ��Ĭ�Ϲ���(����������),�û�������û��ȱʡ����,ȱʡ����Ҳʹ�������е����һ������,��-L��ʾʱ���ڵ�һ����ʾ.

   -C �� -check ����İ��Ƿ���ָ�����Ĺ�����ƥ��.

   -Z �� -zero ��ָ���������еĹ�����ֽ�(BYTE)����������.

   -h ��ʾ������Ϣ.


����ƥ�������:

  -p , [!] protocol ָ��Ҫƥ���Э��,������tcp, udp, icmp, all, ǰ׺!Ϊ�߼���,��ʾ���Э���������Э��.

  -s [!] address[/mask] ָ��Դ��ַ���ߵ�ַ��Χ.

  -sport [!] port[:port] ָ��Դ�˿ںŻ�Χ,�����ö˿ں�Ҳ������/ETC/SERVICES�ļ��е�����.

  -d [!] address[/mask] ָ��Ŀ�ĵ�ַ���ߵ�ַ��Χ.

  -dport [!] port[:port] ָ��Ŀ�Ķ˿ںŻ�Χ,�����ö˿ں�Ҳ������/ETC/SERVICES�ļ��е�����.

  -icmp-type [!] typename ָ��ƥ������ICMP��Ϣ����(����ʹ�� iptables -p icmp -h �鿴��Ч��ICMP������)

  -o [!] interface name[+] ƥ�����Ķ�������ӿ�,��ѡ��ֻ�����OUTPUT,FORWARD,POSTROUTING���ǺϷ���.


����ƶ����ù���:

 /etc/sysconfig/iptables �ļ��� iptables �ػ���̵��õ�Ĭ�Ϲ����ļ�.

 ����ʹ�����������ִ�й��IPTABLES����:

   /sbin/iptables-save > /etc/sysconfig/iptables


Ҫ�ָ�ԭ���Ĺ����,����ʹ��:

  /sbin/iptables-restore < /etc/sysconfig/iptables

  iptables�����route������һ��,����֮��ͻ�ָ�,����:

  [root@rhlinux root]# service iptables save

  ����ǰ���浽 /etc/sysconfig/iptables�� [ ȷ�� ]

��һ�ַ����ǣ� 

 /etc/rc.d/init.d/iptables ��IPTABLES�������ű�,����:

 [root@rhlinux root]# /etc/rc.d/init.d/iptables save

 ����ǰ���浽 /etc/sysconfig/iptables�� [ ȷ�� ]

��ʵ��


���������

  [root@rh34 root]# iptables -L -n

 ���г���/���е����й�����˷���ǽĬ��ʹ�õ���filter�?���ʹ�ô�����г�filter�����������ݣ�-n����ɼӿ���ʾ�ٶȣ�Ҳ�ɲ���-n����

  [root@rh34 root]# iptables -F

 �����Ԥ���filter�����й������еĹ���

  [root@rh34 root]# iptables -X

 �����Ԥ���filter��ʹ�����Զ������еĹ���

 [root@rh34 root]# iptables -Z

 ����ָ���������е����а��ֽڼ��������㣩

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

��������Ĭ�ϲ��ԣ�Ĭ���������У����߶������У�

 [root@rh34 root]# iptables -P INPUT ACCEPT

 [root@rh34 root]# iptables -P OUTPUT ACCEPT

 [root@rh34 root]# iptables -P FORWARD ACCEPT

 �����������ڲ�ͬ��������Ĭ��������ԣ���������Ӧ��DROP���ϸ������Ϸ���ǽӦ����DROPȻ���������ض���

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

��������ӹ�������������ǿ���ָ������ӿڣ����νӿ�ʱ�Ƚ�ʵ�ã���

 [root@rh34 root]# iptables -A INPUT -i eth1 -j ACCEPT

 [root@rh34 root]# iptables -A OUTPUT -o eth1 -j ACCEPT

 [root@rh34 root]# iptables -A FORWARD -i eth1 -j ACCEPT

 [root@rh34 root]# iptables -A FORWARD -o eth1 -j ACCEPT

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

ʹ���û��Զ�������

 [root@rh34 root]# iptables -N brus

 ������һ���û��Զ������brus������

 [root@rh34 root]# iptables -A brus -s 0/0 -d 0/0 -p icmp -j DROP

 ���ڴ�����������һ������

 [root@rh34 root]# iptables -A INPUT -s 0/0 -d 0/0 -j brus

 ����Ĭ�ϵ�INPUT�����һ������ʹ���а���brus�Զ��������?

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

��ƥ�����ʵ��


 ƥ��Э�飺

 iptables -A INPUT -p tcp

��ָ��ƥ��Э��ΪTCP��

 iptables -A INPUT -p ! tcp

��ָ��ƥ��TCP�����Э�飩


ƥ���ַ��

 iptables -A INPUT -s 192.168.1.1

 ��ƥ������

 iptables -A INPUT -s 192.168.1.0/24

 ��ƥ�����磩

 iptables -A FORWARD -s ! 192.168.1.1

 ��ƥ�����������

 iptables -A FORWARD -s ! 192.168.1.0/24

 ��ƥ����������磩


ƥ��ӿڣ�

 iptables -A INPUT -i eth0

 iptables -A FORWARD -o eth0

 ��ƥ��ij��ָ���Ľӿڣ�

 iptables -A FORWARD -o ppp+

 ��ƥ����������Ϊppp�Ľӿڣ�


ƥ��˿ڣ�

 iptables -A INPUT -p tcp --sport www

 iptables -A INPUT -p tcp --sport 80

 ��ƥ�䵥һָ��Դ�˿ڣ�

 iptables -A INPUT -p ucp --dport 53

 ��ƥ�䵥һָ��Ŀ�Ķ˿ڣ�

 iptables -A INPUT -p ucp --dport ! 53

 ��ָ���˿����⣩

 iptables -A INPUT -p tcp --dport 22:80

 ��ָ���˿ڷ�Χ����������ʵ�ֵ���22��80�˿ڣ�

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

������չ�Ĺ��ƥ�䣺

��ϣ����ƥ��ļ�Ҫ˵������ʹ�ã� iptables -m name_of_match --help��

 ��˿�ƥ����չ��

 iptables -A INPUT -p tcp -m multiport --source-port 22,53,80

 ��ƥ����Դ�˿ڣ�

 iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80

 ��ƥ����Ŀ�Ķ˿ڣ�

 iptables -A INPUT -p tcp -m multiport --port 22,53,80

 ��ƥ�����˿ڣ�������Դ����Ŀ�Ķ˿ڣ�


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

limit����ƥ����չ��

 [root@redhatlinux9 root]# iptables -A FORWARD -m limit --limit 300/hour

 ����ʾ����ÿСʱ����ͨ��300����ݰ�

 [root@redhatlinux9 root]# iptables -A INPUT -m limit --limit-burst 10

 ��--limit-burstָ������ʱ���ֵ(Ĭ��Ϊ5)�������ȶ�˲�������ݰ����������

 ����������������ȶ�һ��ͬʱӿ�����ݰ��Ƿ�ʮ������������޵İ�ֱ�ӱ�����

[root@redhatlinux9 root]# iptables -A FORWARD -p icmp -m limit --limit 3/m --limit-burst 3

 ���������ͨ��ƽ��ÿ����3������ô����ֵburst����Ϊ3�����ÿ����ͨ��İ����ĿС��3����ô����ֵbusrt����ÿ������(��ÿ��������ͨ��3������������Ϊ20��)���1�������ֵΪ3��ÿ����Ҫͨ��İ���������3����ô����ֵbusrt��������������ֵ������ڶ�������4������ô����ֵ��Ϊ2��ͬʱ4�������ͨ����������6������ֻ��ͨ��5��������ֵbusrt��Ϊ0��֮��ÿ������������С�ڵ���3������ֵbusrt����1�����ÿ���Ӱ������3������ֵbusrt�����٣�����ά��Ϊ0��

����ÿ�����������������������������(������Ϊ3)���ϵ�ǰ�Ĵ���ֵbusrt���κ�����£������Ա�֤3����ͨ���ֵbusrt�൱�����������İ�������

iptables�������������Linux�İ���˹�������ʵ�ַ���ǽ��NAT��զһ��iptables�����úܸ��ӣ����չ��ɺ���ʵ��iptables���ָ�������ѣ���������ͨ�����ʵ��ѧϰiptables����ϸ�÷���


�ġ�iptables����ϸ�÷�

 1.ɾ�����й��� 

  �����趨iptables����ʱ������һ����ȷ���ɹ�������������������ɹ���

   iptables -F (or iptables --flush) 


 2.����chain����

   ����filter table��Ĭ�ϵ�chain����ΪACCEPT�����ǿ���ͨ�����������޸�chain�IJ��ԣ�

   iptables -P INPUT DROP

   iptables -P FORWARD DROP

   iptables -P OUTPUT DROP

�����������ý����ա�ת���ͷ��������ʩ�бȽ��ϸ�İ���?���ڽ��պͷ��������Ϊ������һ��������������ʱ����Ҫע�����INPUT��OUTPUT�ֱ����á���Ȼ��������α��������ⷢ�����ϵ���������ɲ������á�


 3.����ָ��ip

  ��ʱ�����Ƿ���ij��ip��ͣ���������������ʱ���ǿ���ʹ�����������ָ��ip�����İ���

   BLOCK_THIS_IP="x.x.x.x"

   iptables -A INPUT -i eth0 -p tcp -s "$BLOCK_THIS_IP" -j DROP

   �����������ý���x.x.x.x ip����eth0��ڵ�tcp����


 4.���÷�����

  ����iptables�����ǿ��Զ��ճ��õ��ķ�������а�ȫ���?�����趨ֻ��ͨ��ָ����Ρ���ָ�����ͨ��SSH���ӱ���

  iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT

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

 ��Ҫ֧���ɱ���ͨ��SSH������������������ڱ���˿ڽ������ӣ������Ҫ�������¹���

 iptables -A INPUT -i eth0 -p tcp -s 192.168.100.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT

 iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

���Ƶģ�����HTTP/HTTPS(80/443)��pop3(110)��rsync(873)��MySQL(3306)�Ȼ���tcp���ӵķ���Ҳ���Բ��������������á�


 ���ڻ���udp��dns����ʹ������������˿ڷ���

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

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

 

 5.���ת������

 ������������ǽ����صķ�������һ��������ӵ�����������ڵİ�ת���������ʵ����������ͨ�ţ�����eth0��������eth1���ӹ������ù������£�

 iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

 

 6.�˿�ת������

  ���ڶ˿ڣ�����Ҳ��������iptables���ת�����ã�

  iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22

�������422�˿ڵİ�ת����22�˿ڣ����ͨ��422�˿�Ҳ�ɽ���SSH���ӣ���Ȼ����422�˿ڣ�����Ҳ��Ҫ�����ϡ�4.���÷����һ��һ��������֧�����ӽ����Ĺ���


 7.DoS��������

  ������չģ��limit�����ǻ���������iptables����ʵ��DoS����������

  iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

--litmit 25/minute ָʾÿ�����������������Ϊ25

--litmit-burst 100 ָʾ�����������100ʱ������ litmit/minute ����


 8.����web�������

  ���ǿ��Խ�һ̨��������Ϊǰ�˷�����������iptables���������ַ������÷������£�

���ƴ���

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:80

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.102:80

iptables -A PREROUTING -i eth0 -p tcp --dport 80 -m state --state NEW -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.103:80

���ƴ���

�������ù����õ�nth��չģ�飬��80�˿ڵ�������⵽��̨��������


 9.����������������־

   ʹ��LOGĿ���syslog�������ǿ��Լ�¼ijЭ��ij�˿��µ��շ���������ü�¼��������������ͨ�����·�ʽʵ�֡�

�����Զ���һ��chain��

iptables -N LOGGING

��ν����н��հ���LOGGING chain�У�

iptables -A INPUT -j LOGGING

Ȼ��������־ǰ׺����־����

iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7

�����DROP��������

iptables -A LOGGING -j DROP

���������syslog.conf�ļ���ָ��iptables����־�����


 




���ij��� ��Linux�� ���ͣ�ת������������ϵ��

你可能感兴趣的:(iptables)