|
|
��� �������� �������� �� ��������� ������: English Castellano ChineseGB Deutsch Francais Nederlands Russian Turkce |
����� Vincent Renardias <vincent(at)renardias.com> �� ������: ������������ GNU/Linux � 1993, ������� ��������� (Vincent Renardias) ����� ���������� ��� ����������� � 1996: ����������� Debian, ����������� ���������� ��������� GIMP � �������� ����� GNOME, ���������� ������ ������������� Linux User Group � ������� (PLUG)... ������, ����������� �������� R&D EFB2, �� ���������� ���������� GNU/Linux. ������� �� �������: ������� ������ <gooamoko(at)rambler.ru> ����������:
|
������:
������ ������ ������� ���� ������������ � ����������� ������� Linux Magazine France, ��������������� �� ������������. ��������, ������ � ����������� ������� ��������� LinuxFocus ����������� ��� ������ �� ����� ������������ �������. �������������� LinuxFocus �������� �� ��� ����� �� ����� �������� �� ����������. ������� ����, ��� �������� � ��� ������. ������ ������ ����� �������������� �� ���� �������, ������� �� �� �������������.
���� �� ������� ����� ������������� ������� ��������� - ��� ����������, ������� ���������� � ����.
��� ������ ������ ��������� ����������, ������������� � �������� ����������� (firewall).
� ������ ������ �� ����������� ����������� ���� ��� ������������� � ���������������� ����� �������.
�������� ���������� ����� ���� ���������� ��� ����, ������� ����� �����������
��������� ������������� ������. �������� ����� ����� ���������� ������ ����� (������ ����)
� ���������� ����� ��� ��������� ����.
����� ����������� �������� ��� � ��������� ������������ ���������� ������� ������� �������,
�� ������ ���� ��������� �������� ����� ���������� ����� � "������� �����".
����������� ��� �������������� ��� ������ ����������, �������� ��� ������� ����������
(������ Ethernet), ���� �� ������� ��������� � ���������� ����, � ������ - �
��������������, ����� ������� �������������� ������ � ������� ����.
����� �������, ������������ ������ ����� ���� ����� ����������, �������
����� ��� �� ����� ����������� �� � ����������� �� �� ����������.
���������, �������������� ����������, ����� ���� �������� ����� ������� ������:
- "�������" ����: ��� �������� ����� ������������ ������������. ���������
������������ ��� ���� ����� ����� ������ ��� ���������.
���������� ��������� ���� ������ ���� ��������� �� ������������� �����������
������ �������������� � �������� �������� �� ��������� (��������� �����).
- ���� "ARP-������": ���������� ������������ ������������� ������� ���� �� ���
�������, ������� �������� � ������ �������� ��������� ��� ���� IP �������.
��� ������� ����������. ��������, �� 16-�� �������� ������� (� 28 ������ ������ �������),
������ 14 ��������, � ��� ��� ��� ������������ ����� ���� � ����������������� �����.
�������� �ݣ ���� ��� � ����� �������, �� ��������� ��������� ������ � 14 �� 6
(8 ������� �� ������� ������ ���� � ������������������ ������).
����� �� �� ������ ��������� ������ �������� ��������� IP-�������, �� ������ ������������
������ �������, ������� ����������� ����� � ���� ������.
����� ����, ������ ������� �� ������� �����-���� ��������� � ��������� ����
�� �� ��������������, �� �� ���������� �����������.
- ���� Ethernet: ������������ ���� Ethernet (�� IP
����), ������ �������� ���������� ��������� � ������ �����������.
����� ������������ ����� ���� ��������� ��� ���������� IP ������� Ethernet-�����������.
� ����� ������, ���������� ���������� ���������� ��� ������ ping, traceroute � �.�.
������� ��������, ��� ���������� ���������� ������� � ����� ������������ �������
���� ������ 2.2.x, � ������� ������ ������� �� ���� ������ 2.4.x ���� �� ��������.
������, ����� �� ����� ��� ���������� ��� ������, �� ������ ����������, ���
�� ������ ����� ����������� ��� ��� �� ������ ����� ����������.
���� ��� ���� ��������� ������ �������:
- ������, �������: ����������� ��� ������, ����� ���, ������� ������������� ��������.
- ������, ������: (�� � ���������, ����� ������������) ���� �����������
������ �������������, � ��� ��������� ������������.
��� ������ �����������: � ������ ������, ��������� (���������) ������ �������� �
��������� ������ ������ ��� ������ ����� �����������������.
������ ��� ������ ���������� � ������������ ���������� ������, �����������
��� ������������� ������.
�� ������ ������, ��������� (���������) ������ ������� ������������� ����������,
������� ����� ����� ������ �������... ���� ����� ������.
�������� ����� ������������ ����������� ����������� ��� ���������� ������� � Linux - ��� Netfilter; ��� �������� ������ 'ipchains', ������������ � Linux � ����� 2.2. Netfilter ������ �� ���� ������: ��������� ����, ������� ������ ���� �������������� � ����� ���� � ������� 'iptables' ������� ������ ���� �������� � ����� �������.
���������������� ������ �����, ��� ������� ����. ����� �� ������, ��� ���������� � ��������� �������� ����������. ��� ������, ��������� ����� ��������������� ��� ����, ������������ ARP-������ ��� ����������� ����� IP-�������, � ����� �� �������� ������� ����������.
����� ������ ������������ ������������ Debian ��� ��������� ����� �������, �� ���������� ����� ���� �������� ����� ������ �����������.
��-������, ��������, ��� ���� ���� ������������ Netfilter. ���� ��� ���, �� ����������� ������ ������ ���������:
ip_conntrack (4095 buckets, 32760 max)
ip_tables: (c)2000 Netfilter core team
�����, ��� �������� ����������������� ���� ����� ����������� ��������� Netfilter. ��������������� ����� ����� ���� ������� � ������� "Network Packet Filtering" ���� "Networking Options". �������� ����������� ����� � ������ "Netfilter Configuration". ���� �� ������������, ������ ������� ��� �����, ����� ����, ����� �������� Netfilter � ���� � �� ������������ ������. ���� �� �����-�� �������� ���� �� ������� Netfilter ��� �������� ��� �� ��������, ���������� �������� �� ����� � �� ����� �� ����� �������� � �����, ������� ��������������� � ������ ������.
�� ��� �� ������ ���������� ����� 'iproute2' (��������� �� �����������, ��
��� ������ ����� ������������ ������ �����, ��� ��� ������ ����� ���������
������� ���������������� ������ (��������) �����). � ������������ Debian,
��� ��������� ������ 'iproute2' ���������� ������� �������
'apt-get install iproute'.
� ������ �������������, ������� ��������������� ������. ���������� �� �����
������� ����� ��� �� �������� �����, ������� ����� ��������� �� ���������� ������:
ftp://ftp.inr.ac.ru/ip-routing/
������ ������ ���� ���������������� ��� Ethernet �����. �� ������ �������� ����
�������� �� ��, ��� ���� Linux, ����� ���������� ��������������� ������������,
������������� ����� ������� ���� ��� ������ ������ ������. ��������������,
����������� ������ ������.
������ ������� ���� �������� ������� � ����������
��������� ������ � ���� lilo.conf:
append="ether=0,0,eth1"
������ �� ������ ��������� Ethernet-����������.
��������� ���� ����� ��������� ������������ ���� � ��� �� IP-����� ���
����� ����, ��������, ����� �������, ���� �����.
��������, ��� � ��� ���� ������� 10.1.2.96/28,
������ ������� ���������� � 10.1.2.96 �� 10.1.2.111 ������������.
������������� ����� ����� ����� 10.1.2.97, � ��� ��������� ���
���������� - 10.1.2.98. ��������� eth0 ����� ��������� �
�������������� ����� �������������� ������ RJ-45, ����
��� ����� ��������� ��������, ��� ������������� ���� (hub) ��� ������
(switch); ��������� eth1 ����� ��������� � ����/������, � ������
- � ����������� ��������� ����.
��������������, ��� ���������� ����� ���������������� �� ���������� �����������:
address : 10.1.2.98 netmask : 255.255.255.240 network : 10.1.2.96 broadcast: 10.1.2.111 gateway : 10.1.2.97
����� ���������� ��������� ������ (��������), ������� ������ ����������� �����
��������� ������������ ������� ���� ��� ���������� ���������.
net.vars: configuration variables PREFIX=10.1.2 DMZ_ADDR=$PREFIX.96/28 # Interface definitions BAD_IFACE=eth0 DMZ_IFACE=eth1 ROUTER=$PREFIX.97 net-config.sh: network configuration script #!/bin/sh # Comment out the next line to display the commands at execution time # set -x # We read the variables defined in the previous file source /etc/init.d/net.vars # We remove the present routes from the local network ip route del $PREFIX.96/28 dev $BAD_IFACE ip route del $PREFIX.96/28 dev $DMZ_IFACE # We define that the local network can be reached through eth1 # and the router through eth0. ip route add $ROUTER dev $BAD_IFACE ip route add $PREFIX.96/28 dev $DMZ_IFACE # We activate Proxy-ARP for both interfaces echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp # We activate the IP forwarding to allow the packets coming to one card # to be routed to the other one. echo 1 > /proc/sys/net/ipv4/ip_forward
������, ������� �������� � ���������� ��������� ARP-������
��� ����� ������������.
��� ���� ����� ���� ��������� ��� "��������" � ������ � ��� ��
����, ��� ���������� ����� Ethernet ����� (��� MAC ����� ��� ����������
�����), ���������� ��� IP-������.
����� ���������-�������� ���������� ������: "����� MAC-����� ����������,
�������� IP-����� 1.2.3.4 ?" � ���������-�������� ������ ��������.
��� ������ ������ "�������", ������������� ��� ������ tcpdump:
- ������: ��������� 172.16.6.72 ���������� MAC-�����, ������������ IP-������ 172.16.6.10.
19:46:15.702516 arp who-has 172.16.6.10 tell
172.16.6.72
- �����: ��������� 172.16.6.10 ������������� ���� ����� ������� �����.
19:46:15.702747 arp reply 172.16.6.10 is-at 0:a0:4b:7:43:71
��� �������� ��� � ���������� ��������� ����������: ARP-������� �������������� ��� ������ ����������������� ��������, ������������ ������ ����� ���������� �����. ����� �������, ������ �� ����������� ���������� �� ���������� MAC-������ ��������������, ������ ���� ���������� ����������� �����������. ��������� ������������ ARP-������ ��������� ������ ��� ��������, ��� ��� �� ����� ���������� ARP-�������.
�� ������ ������, �� ������ ����� ���������� ���� � �����������, ����������� ���� �������� ����� ��������� � ������� �����.
������, �� ������ ��������� ���������� ��������� Netfilter.
Netfilter ��������� ����������� ��������������� �� ����� �������.
� ���������� ������������, ������ ����������� ����� ��������� ������:
- INPUT: ��� �������, �������� ����� ���������,
- FORWARD: ��� ���� �������, ������������ �� ������ ���������� � �������,
- OUTPUT: ��� �������, ��������� ����� ���������.
������� 'iptables' ��������� ���������, �������� � ������� ������� �
������ �� ���� ������� ��� ��������� ��������� ����������.
����� ����, ������ ������� ����� �������� �� ���������, ������� ����������
�������� � ������, ����� ����� �� ������������� �� ������ ������� � �������.
������ �������� ���������������� ������� - ���:
- ACCEPT: ������ ��������� ���������,
- REJECT: ����� ����������� � ���������� �����, ��������� � �������
(ICMP Port Unreachable, TCP RESET, � ����������� �� ��������),
- LOG: ���������� ������ ������� � ��������� ������,
- DROP: ����� ������������ � ����� �� ����������.
��� ������� ����� iptables, ����������� ��������� ���������. �� ������������ �� �����:
-N: ������� ����� �������.
-X: ������� ������ �������.
-P: �������� �������� ������� �� ���������.
-L: ������� ������ ������ � �������.
-F: ���������� ��� ������� � �������.
-Z: ������� ����� � �������� �������, ��������� ����� �������.
��� ��������� ������� �������� ��������� �������:
-A: ��������� ������� � ����� �������.
-I: ��������� ����� ������� � �������� ������� � �������.
-R: �������� �������� ������� � �������.
-D: �������� ������� � �������, ��������� ���� ����� �������, ���� ��� ��������.
������� ���������� ��������� ������������ ������: �� ����������� ping-������
(��� ��� ICMP-������� 'echo-reply'), ������ �� ��������� ����������.
������� �������������, ��� �������� ��������� "���������" (�.�. �������� �� ������� ping):
# ping -c 1 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes 64 bytes from 172.16.6.74: icmp_seq=0 ttl=255 time=0.6 ms --- 172.16.6.74 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.6/0.6/0.6 ms������, ������� ������� (������� ������� ICMP-�����) � INPUT-������� ('-p icmp --icmp-type echo-reply') ��� �������, ������ � ���������� 172.16.6.74 ('-s 172.16.6.74'). ��� ������ ����� ��������������� ('-j DROP').
# iptables -A INPUT -s 172.16.6.74 -p icmp --icmp-type echo-reply -j DROP
������, ������� ����� "��������" ���� ���������:
# ping -c 3 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes --- 172.16.6.74 ping statistics --- 3 packets transmitted, 0 packets received, 100% packet loss
��� �� � ����� �������, ������ �� ������. �� ����� ���������, ��� ��� ������ ���� ������������� (3 ������ ��� 252 �����):
# iptables -L INPUT -v Chain INPUT (policy ACCEPT 604K packets, 482M bytes) pkts bytes target prot opt in out source destination 3 252 DROP icmp -- any any 172.16.6.74 anywhere
����� ������� ��� ��� ����, ��� ���� ������ ������� ������ ������� �� ������� INPUT:
# iptables -D INPUT 1
������, PING ���������� �����:
# ping -c 1 172.16.6.74 PING 172.16.6.74 (172.16.6.74): 56 data bytes 64 bytes from 172.16.6.74: icmp_seq=0 ttl=255 time=0.6 ms --- 172.16.6.74 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.6/0.6/0.6 ms #
��������!
�� ������ �������� ������ ������� � ���� ���������� ������������ (������� �� �� ������� ������� � ����� ������) � ������� ����� ������� ���������� ����� ���. ��������, ����� ���� �������� �������� ������������ ������ � ��������� ��������.
������, ������� �������� ��������� ������� ��� ������������ �����������.
�� ����� ��������� ssh, ������ �������� ���� (DNS), ������ http � smtp �
������ ������.
��� ���������, ������� ��������� �������� � �������� �������� (������),
���� ������� ������������ �����. �������� ������ ������� ������� ������������
����� ���������� �����. ��� ��������� ������ ��������� ����������� ������� ���
�������� ������������ ��� ����� ������������ ������.
rc.firewall #!/bin/sh # Flushing out the rules iptables -F iptables -F INPUT iptables -F OUTPUT iptables -F FORWARD # The chain is built according to the direction. # bad = eth0 (outside) # dmz = eth1 (inside) iptables -X bad-dmz iptables -N bad-dmz iptables -X dmz-bad iptables -N dmz-bad iptables -X icmp-acc iptables -N icmp-acc iptables -X log-and-drop iptables -N log-and-drop # Specific chain used for logging packets before blocking them iptables -A log-and-drop -j LOG --log-prefix "drop " iptables -A log-and-drop -j DROP # The packets having the TCP flags activated are dropped # and so for the ones with no flag at all (often used with Nmap scans) iptables -A FORWARD -p tcp --tcp-flags ALL ALL -j log-and-drop iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j log-and-drop # The packets coming from reserved addresses classes are dropped # and so for multicast iptables -A FORWARD -i eth+ -s 224.0.0.0/4 -j log-and-drop iptables -A FORWARD -i eth+ -s 192.168.0.0/16 -j log-and-drop iptables -A FORWARD -i eth+ -s 172.16.0.0/12 -j log-and-drop iptables -A FORWARD -i eth+ -s 10.0.0.0/8 -j log-and-drop # The packets belonging to an already established connexion are accepted iptables -A FORWARD -m state --state INVALID -j log-and-drop iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # The corresponding chain is sent according to the packet origin iptables -A FORWARD -s $DMZ_ADDR -i $DMZ_IFACE -o $BAD_IFACE -j dmz-bad iptables -A FORWARD -o $DMZ_IFACE -j bad-dmz # All the rest is ignored iptables -A FORWARD -j log-and-drop # Accepted ICMPs iptables -A icmp-acc -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type source-quench -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type echo-request -j ACCEPT iptables -A icmp-acc -p icmp --icmp-type echo-reply -j ACCEPT iptables -A icmp-acc -j log-and-drop # Outside -> Inside chain # mail, DNS, http(s) and SSH are accepted iptables -A bad-dmz -p tcp --dport smtp -j ACCEPT iptables -A bad-dmz -p udp --dport domain -j ACCEPT iptables -A bad-dmz -p tcp --dport domain -j ACCEPT iptables -A bad-dmz -p tcp --dport www -j ACCEPT iptables -A bad-dmz -p tcp --dport https -j ACCEPT iptables -A bad-dmz -p tcp --dport ssh -j ACCEPT iptables -A bad-dmz -p icmp -j icmp-acc iptables -A bad-dmz -j log-and-drop # Inside -> Outside chain # mail, DNS, http(s) and telnet are accepted iptables -A dmz-bad -p tcp --dport smtp -j ACCEPT iptables -A dmz-bad -p tcp --sport smtp -j ACCEPT iptables -A dmz-bad -p udp --dport domain -j ACCEPT iptables -A dmz-bad -p tcp --dport domain -j ACCEPT iptables -A dmz-bad -p tcp --dport www -j ACCEPT iptables -A dmz-bad -p tcp --dport https -j ACCEPT iptables -A dmz-bad -p tcp --dport telnet -j ACCEPT iptables -A dmz-bad -p icmp -j icmp-acc iptables -A dmz-bad -j log-and-drop # Chains for the machine itself iptables -N bad-if iptables -N dmz-if iptables -A INPUT -i $BAD_IFACE -j bad-if iptables -A INPUT -i $DMZ_IFACE -j dmz-if # External interface # SSH only accepted on this machine iptables -A bad-if -p icmp -j icmp-acc iptables -A bad-if -p tcp --dport ssh -j ACCEPT iptables -A bad-if -p tcp --sport ssh -j ACCEPT ipchains -A bad-if -j log-and-drop # Internal interface iptables -A dmz-if -p icmp -j icmp-acc iptables -A dmz-if -j ACCEPT
��������� ���� � �������� ������������. Linux ����� �������������� ���� ToS ("��� �������") � �������� ��� ��������, ����� ���� ������� ��������� ����������. ��������, ��������� ������� �������� ��������� SSH ������ ��� ��������� ������� ����������.
iptables -A OUTPUT -t mangle -p tcp --dport ssh -j TOS --set-tos Minimize-Delay
��� �� �����, ��� FTP ����������, �� ������ ������������ ����� '--set-tos Maximize-Throughput' ��� ��������� �������� ��������.
��� � �ӣ. ������, �� ������ ������ ��������� ������� ���������� �������.
������, ������ �����, ��� ���������� - �� �������, ����� ��������� ������������.
��� ����� ���� �ݣ ���� ����������������. ��������� ����������� �� �����������
��� �� ������������� ������� ("�������") �������, ����� ��������� ������ ��
������������, ������ ����������� ��������� � �.�.
|
Webpages maintained by the LinuxFocus Editor team
© Vincent Renardias, FDL LinuxFocus.org |
Translation information:
|
2003-05-24, generated by lfparser version 2.31