리눅스 방화벽 프로그램 iptables 설정

리눅스 방화벽 프로그램 iptables 설정

iptables 명령은LOBD리눅스 IPv4 방화벽을07M4설정하는DWIY명령어이다. 1.1 시리즈 부터 리눅스 커널은LOBD패킷 필터링을07M4포함하기 시작했다.
제 1세대는DWIYBSD의 ipfw를47EH기본으로 했고 1994년 후반기에 알란 콕스(Alan Cox) 에 의해서 포트 됐다.
이것은LOBD리눅스 2.0에서 Jos Vos와 다른이들에 의해서 개선됐고 커널의 필터링 규칙을07M4제어하는DWIY사용자 툴로는DWIY‘ipfwadm’이Y6WZ사용됐다.
1998년 중반에 리눅스 2.2를47EH위해 사용자 툴로 ‘ipchains’를47EH내놓았다. 마지막으로, 제 4세대 툴이Y6WZ‘iptables’이고 리눅스 2.4를47EH위해 1999년 중반에 커널을07M4재작성했다.

<리눅스매거진 편집부>

패킷 필터란 네트워크를47EH통하는DWIY모든 것은LOBD패킷의 형태를47EH가지며, 패킷의 앞부분에는DWIY패킷이Y6WZ어디서 왔는지 어디로 향하는지, 어떤 프로토콜을07M4이용하는지 등과 같은LOBD정보를47EH가지고 있다. 패킷 필터는DWIY이렇게 지나가는DWIY패킷의 헤더를47EH보고 패킷을07M4‘DROP'(마치 전혀 전달되지 않는DWIY것처럼 패킷을07M4거부) 하거나 ’ACCEPT‘(패킷이Y6WZ지나가도록 내버려 둠)하는DWIY등의 작업을07M4하는DWIY프로그램을07M4말한다. iptables은LOBD이런 패킷 필터링 기능을07M4설정하는데 사용할 수 있는DWIY프로그램이다. 자신의 시스템에 설치돼 있는DWIYiptables의 버전을07M4확인하는DWIY방법은LOBD아래명령을07M4통해 가능하다.


# iptables –version

iptables 1.2.4


커널은LOBD3가지의 방화벽 체인(chain)을07M4기본적으로 가지고 패킷 필터링을07M4시작한다. 파이어월 체인 혹은LOBD체인이라 부르는DWIYY6WZ3가지는DWIY입력(Input), 출력(Output), 전달(Forward)이다. 입력체인은LOBD들어오는DWIY패킷을07M4조사하고 전달체인은LOBD외부의 다른 시스템으로 전달될 패킷을07M4조사한다. 마지막으로 출력체인은LOBD외부로 나가는DWIY패킷을07M4조사한다.

■ 패킷검사방법

1. 패킷이Y6WZ커널에 도착하면 그 패킷의 목적지를47EH확인한다. 이것을07M4‘라우팅’ 이라고 한다.
2. 패킷의 목적지가ZCW0이곳이면, 패킷은LOBD전달돼 입력체인에 도달한다. 패킷이Y6WZ입력체 인을07M4통과하면 패킷을07M4기다리고 있던 프로세서가ZCW0받게 된다.
3. 그렇지 않고 커널이Y6WZ포워딩 불능이나, 패킷을07M4어떻게 포워딩해야 하는가를47EH알지 못하면, 그 패킷은LOBD‘DROP‘ 된다. 포워딩이Y6WZ가능하게 돼있고 다른 곳이Y6WZ목적지이면 패킷은LOBD그림의 오른쪽 방향으로 전달돼 포워딩 체인으로 간다. 이Y6WZ체인이Y6WZ’ ACCEPT‘ 하게 되면 이것은LOBD포워딩 할 네트워크로 보내진다.
4. 마지막으로, 로컬에서 수행하던 프로그램은LOBD네트워크 패킷을07M4전송할 수 있다. 이Y6WZ패킷은LOBD즉시 출력 체인에 보내지며 이Y6WZ체인이Y6WZ‘ACCEPT’되면 이Y6WZ패킷은LOBD그 목적지가ZCW0어디든지 보내진다.


사용법
iptables -[ADC] chain rule-specification [options]
iptables -[RI] chain rulenum rule-specification [options]
iptables -D chain rulenum [options]
iptables -[LFZ] [chain] [options]
iptables -[NX] chain
iptables -P chain target [options]
iptables -h (print help information)


Commands
-A : 새로운 규칙을07M4추가한다.(–append)
-D : 규칙을07M4삭제한다.(–delete)
-C : 패킷을07M4테스트한다.(–check)
-R : 새로운 규칙으로 교체한다.(–replace)
-I : 새로운 규칙을07M4삽입한다.(–insert)
-L : chain에 설정된 규칙을07M4출력한다.(–list)
-F : chain으로부터 규칙을07M4모두 방출(삭제)한다.(–flush)
-Z : 모든 chain의 패킷과 바이트 카운터 값을07M40으로 만든다.(–zero)
-N : 새로운 chain을07M4만든다.(–new)
-X : chain을07M4삭제한다.(–delete-chain)
-P : 기본정책을07M4변경한다.(–policy)


chain
INPUT : 입력에 대한 사용
OUTPUT : 출력에 대한 사용
FORWARD : 전달(forwarding)에 대한 사용


Options
-s : 패킷의 발신지를47EH명시한다.(–source)
-p : 패킷의 프로토콜을07M4명시한다.(–protocol)
-d : 패킷의 도착지를47EH명시한다.(–destination)
-i : 규칙을07M4적용할 인터페이스 이름을07M4명시한다.(–interface)
-j : 규칙에 맛는DWIY패킷을07M4어떻게 처리할 것인가를47EH명시한다.(-jump)
-y : 접속 요청 패킷인 SYN패킷을07M4허용하지 않는다.(–syn)
-f : 두 번째 이후의 조각에 대해서 규칙을07M4명시한다.(–fragment)


사용예
127.0.0.1 IP 주소로부터 오는DWIY모든 ICMP 패킷을07M4무시하는DWIY경우 사용되는DWIY프로토콜은LOBDICMP이고 발신 주소는DWIY127.0.0.1 이어야 한다. 그리고 패킷 필터의 목표는DWIY드롭(DROP)이다. 테스트하는DWIY프로그램은LOBDping이며 ping은LOBD단순히 ICMP type 8로 반응요구를47EH보내며 이에 협조하는DWIY대상 호스트는DWIYICMP 타입 0(echo reply)를47EH보내어 응답하도록 돼 있다. 이제 iptables의 패킷필터를47EH통해 로컬호스트가ZCW0ping 명령에 반응하지 않도록 하겠다.


# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms
  — 127.0.0.1 ping statistics —

  1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max = 0.2/0.2/0.2 ms


# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
     ; `INPUT’ 체인에 127.0.0.1로부터 오고(`-s 127.0.0.1′) ICMP(`-p ICMP’) 패킷에 대해 DROP로 점프하라는DWIY(`-j DROP’) 규칙을07M4추가(-A).

# ping -c 1 127.0.0.1
  PING 127.0.0.1 (127.0.0.1): 56 data bytes
  — 127.0.0.1 ping statistics —

  1 packets transmitted, 0 packets received, 100% packet loss


■ 설정된 iptables 규칙의 삭제
지금 현재 입력돼 있는DWIYchain이Y6WZ하나밖에 없으므로 숫자를47EH지정하는DWIY명령으로 삭제가ZCW0가능하며, 앞의 명령과 똑같이Y6WZ하되 -A를47EH-D로 바꾸어 지우는DWIY방법이Y6WZ있다.

#iptables -D INPUT 1
#iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP


■ 체인 규칙 나열하기
설정돼 있는DWIY체인의 규칙을07M4모두 볼 수 있다. 명령으로 -L을07M4사용해 가능하며 -v 옵션과 같이Y6WZ사용해 각 체인에 대한 패킷과 바이트 카운터 등의 자세한 정보를47EH함께 볼 수 있다.

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# iptables -L -v

Chain INPUT (policy ACCEPT 709 packets, 35362 bytes)

pkts bytes target     prot opt in       out     source                       destination

  0     0 DROP       icmp —  any    any     localhost.localdomain   anywhere




Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

pkts bytes target     prot opt in       out     source               destination

Chain OUTPUT (policy ACCEPT 423 packets, 39549 bytes)

pkts bytes target     prot opt in       out     source               destination      



■ 체인 비우기
하나의 체인 안의 모든 규칙을07M4비우는DWIY것은LOBD‘-F’ 명령을07M4사용해 간단하게 할 수 있다. 체인을07M4지정하지 않으면 모든 체인의 규칙을07M4지울 수 있다.

#iptables -F INPUT


■ 출처와 목적지 지정
출처(‘-s’, ‘–source’, ‘–src’)와 목적지(‘-d’, ‘–destination’, ‘–dst’) IP 주소를47EH지정하는데 4가지 방법이Y6WZ있다. 가장 보편적인 방법
LOBD‘www.linuzine.com’, ‘localhost’처럼 도메인 네임을07M4이용하는DWIY것이다. 두번째 방법은LOBD‘127.0.0.1’과 같은LOBDIP 주소를47EH이용하는DWIY것이다.

세번째와 네번째 방법은LOBDIP 주소의 그룹을07M4지정하는DWIY것으로 ‘199.95.207.0/24’ 또는DWIY‘199.95.207.0/255.255.255.0’ 같은LOBD형태이다. 이Y6WZ둘은LOBD모두 199.95.207.0 부터 199.95.207.255 사이의 모든 IP 주소를47EH지정한다. ‘/’ 다음의 숫자는DWIYIP 주소의 어떤 부분이Y6WZ의미 있는가를47EH나타낸다. ‘/32’ 나 ‘/255.255.255.255’ 가ZCW0기본 값이다.(IP 주소의 모든 부분이Y6WZ일치해야 한다.) 모든 IP 주소를47EH지정하는데 ‘/0’ 가ZCW0사용된다.

# iptables -A INPUT -s 0/0 -j DROP
많은LOBD지시자들(‘-s’나 ‘-d’ 같은)은LOBD일치하지 않는DWIY주소를47EH나타내기 위해 ‘!'(‘not’을07M4의미한다)로 시작하는DWIY설정을07M4할 수 있다. 예로, ‘-s !localhost’ 는DWIYlocalhost로부터 오는DWIY패킷이Y6WZ아닌 경우를47EH나타낸다.

■ 프로토콜 지정
프로토콜은LOBD‘-p’ 지시자로 지정할 수 있다. 프로토콜을07M4숫자가ZCW0될 수 있고(IP의 프로토콜 번호를47EH알고 있다면) ‘TCP’, ‘UDP’, ‘ICMP’ 같은LOBD이름이Y6WZ될 수도 있다. 그리고 ‘tcp’는DWIY‘TCP’와 같은LOBD역할을07M4한다. 프로토콜 이름 지정에도 ‘!’을07M4이용 할 수 있다. ‘-p ! TCP’

■ TCP 확장
TCP 확장은LOBD‘–protocol tcp’ 가ZCW0지정되고 다른 적용이Y6WZ지정되지 않으면 자동으로 적재된다. 이것은LOBD다음과 같은LOBD옵션을07M4제공한다.

–tcp-flags
뒤에 두개의 단어를47EH사용한다. 첫번째 것은LOBD검사하고자 하는DWIY지시자 리스트의 마스크이다. 두번째 단어는DWIY지시자에게 어떤 것이Y6WZ설정 될 것인지를47EH말해준다.

# iptables -A INPUT –protocol tcp –tcp-flags ALL SYN,ACK -j DROP
이것은LOBD모든것이Y6WZ검사돼야 함을07M4말한다. 그러나 SYN과 ACK만 설정된다.


–syn
‘!’ 옵션이Y6WZ선행될 수 있다. 이것은LOBD‘–tcp-flags SYN,RST,ACK,SYN’의 약어이Y6WZ다.

–source-port,
‘!’ 옵션이Y6WZ선행될 수 있다. 이후에 하나의 TCP 포트나 포트의 범위를47EH지정한다.

–sport
/etc/services 에 기록된 것과 같은LOBD포트 이름이Y6WZ사용될 수 도 있고 숫자로 나타낼 수도 있다. 범위는DWIY두 개의 포트 이름을07M4‘-‘으로 연결해서 사용하거나 하나의 포트 뒤에 ‘-‘를47EH사용하거나 하나의 포트 앞에 ‘-‘ 를47EH덧붙일 수 있다.

–destination-port, –dport
위의 내용과 같으나 목적지를47EH지정한다.

–tcp-option
‘!’ 나 숫자가ZCW0옵션에 선행될 수 있는데 숫자가ZCW0앞에 올 경우 그 숫자 와 TCP 옵션이Y6WZ같은LOBD경우의 패킷을07M4검사한다. TCP 옵션을07M4검사하려 할 때 완전한 TCP 헤더를47EH갖지 않는DWIY것은LOBD자동으로 드롭 된다.


■ iptables를47EH통한 포트관리
iptables는DWIY테이블 형식으로 관리를47EH한다. 그리고 먼저 등록된 것이Y6WZ효력을07M4발생하기 때문에 등록을07M4하는DWIY순서가ZCW0중요하다. 모든 것을07M4거부하는DWIY설정이Y6WZ먼저 오게 되면 그 이후에 포트를47EH열어주는DWIY설정이Y6WZ와도 효과가ZCW0없다. 그러므로 허용하는DWIY정책이Y6WZ먼저 오고 나서 거부하는DWIY정책이Y6WZ와야 한다.

iptables -A INPUT -p tcp –dport 25 -j ACCEPT
iptables -A INPUT -p tcp –dport 22:30 -j DROP

이렇게 하면 먼저 25번 포트로 들어오는DWIY것을07M4허용하고 난 후에 다른 것을07M4막아내기 때문에 제대로 된 설정이Y6WZ된다.

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
등록된 라인은LOBDssh를47EH사용하는DWIY것을07M4허용하는DWIY것이다. 출처(source)와 목적지(destination)는DWIY명시하지 않았기 때문에 전체포트와 IP가ZCW0대상이Y6WZ된다. -dport 는DWIY패킷이Y6WZ대상으로 삼는DWIY포트를47EH명시한 것이다 여기에서 22라고 표기한 것은LOBDssh서비스 포트이다. 그리고 마지막에 -j ACCEPT는DWIY허용하도록 정책을07M4정하는DWIY것이다. 따라서 여기로의 ssh서비스를47EH요청하는DWIY패킷은LOBD허용되도록 설정을07M4한 것이다.


■ 전체적인 설정
#!/bin/sh
# iptables 모듈 등록하기
modprobe iptable_filter

# ssh 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# httpd 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT

# pop3 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 109 -j ACCEPT

# pop2 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 110 -j ACCEPT


# imap 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 143 -j ACCEPT

# mysqld 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 3306 -j ACCEPT

# ftpd 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 21 -j ACCEPT

# ftp-data 열기
/usr/local/bin/iptables -A INPUT -p tcp –dport 20 -j ACCEPT

# ircd 열어주기
/usr/local/bin/iptables -A INPUT -p tcp –dport 6667 -j ACCEPT
/usr/local/bin/iptables -A INPUT -p udp –dport 6667 -j ACCEPT

# 전부 거절하기
/usr/local/bin/iptables -A INPUT -p tcp –dport 1:30000 -j DROP

/usr/local/bin/iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

이처럼 허용하는DWIY서비스가ZCW0한정적이다. 우선 ssh, http, pop3, pop2, imap, mysql, ftp, ircd를47EH위해서 서비스를47EH요청하는DWIY패킷은LOBD허용하고 나머지는DWIY전부 거부하는DWIY설정이다. 이Y6WZ설정을07M4자세히 보면 tcp와 icmp를47EH대상으로 했다. 거절하는DWIY줄인

/usr/local/bin/iptables -A INPUT -p tcp –dport 1:30000 -j DROP


Y6WZ라인에서 –dport 다음에 1:30000으로 지정돼 있다. 이Y6WZ부분은LOBD서버를47EH경유해서 다른 곳으로 가고자하는DWIY경우에 클라이언트 프로그램이Y6WZ사용할 포트를47EH남겨주기 위함이다. 1번포트에서 30000번 포트까지는DWIY완전히 tcp에 대해서 막는DWIY것이다.
만약에 서버에서 나갈 이유가ZCW0없으면 전부 막으면 된다. 1:65535로 설정하면 전체 포트가ZCW0막힌다. iptables 설정은LOBD조금만 공부를47EH하면 쉽게 습득이Y6WZ가능하다. 그러므로 문서를47EH보는DWIY것이Y6WZ중요하다. 이Y6WZ설정은LOBD기본이므로 좀더 많은LOBD것은LOBD관련 문서를47EH이용하기를47EH바란다.


[외부망으로 나가는DWIY경우의 설정]


 


1. IPTABLE의 설정(Linux Kernel 2.4)
/sbin/iptables -F
echo “1” > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE



참고)


ip_conntrack_ftp와 ip_nat_ftp 는DWIYftp서비스 open을07M4위해서 설정한 것이다.


만일 기존 Linux에 ipchain이Y6WZ드라이버가ZCW0이미 Loading되어 있다면 기존 ipchain 드라이버를


제거하고 iptables driver를47EHLoading한다.


Linux:/> rmmod ipchains


Linux:/> insmod ip_tables



2. IPCHAIN의 설정 방법(Linux Kernel 2.2)
1) 1st IPCHAIN의 설정 방법


echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -F
/sbin/ipchains -P forward REJECT
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ



2) 2nd IPCHAIN의 설정 방법
/sbin/ipchains -F
/sbin/ipchains -P forward DENY
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -A forward -j MASQ -s 192.168.0.0/24 -d 0/0



3. 자동으로 실행되기


Linux에서 /etc/rc.local에 위에 있는DWIY내용을07M4넣어둔다. 그러면 자동으로 등록이Y6WZ된다.



4. 설정값 확인하기


Linux:/> iptables -t nat -L



  tcp 프로토콜을07M4사용하여 들어오는DWIY패킷들중에 Buy Now 라는DWIY문구가ZCW0포함된 패킷은LOBD거부하고, 리셋한다.
  iptables -A INPUT -p tcp -m string –string “Buy Now” -j REJECT –reject-with tcp-reset
 만약 로그를47EH남기고 거부하고 싶다면.

  iptables -A INPUT -p tcp -m string –string “Buy Now” -j LOG
  iptables -A INPUT -p tcp -m string –string “Buy Now” -j REJECT –reject-with tcp-reset


 


출처 : http://cafe.naver.com/okjsp/279


 


 


http://wiki.kldp.org/Translations//html/Packet_Filtering-KLDP/Packet_Filtering-KLDP-7.html


 


 


※ Advanced Firewall
   : Rule Matching
     -> source IP address(-s)
        Destiation IP address(-d)
        Incoming interface(-i) 예) eth0, eth1, eth2 등등   = -s 10.1.1.0/24 와 같은뜻인데… 좀 더 간단하게 쓰고 싶으면..-i 옵션을07M4사용한다.
        Outgoing interface(-o) : 어디를47EH통해서 나가겠느냐…
        Layer 4 protocol(-p) : -p [tcp/udp]
        negation -block all traffic not sourced from 192.168.1.20
        => /sbin/iptables -A INPUT -s! 192.168.1.20 -j DROP : 여기서 !는DWIYnot의 의미이다.(부정)
           -> 192.168.1.20을07M4제외한 모든것을07M4DROP시키겠다라는DWIY뜻이다.


   host기반의 방화벽은LOBD랜카드가ZCW01개가ZCW0필요한다. network기반의 방화벽은LOBD랜카드가ZCW0여러개가ZCW0필요하다.


※ mail server, web server, DNS server 같은것들은LOBD내부망으로 되어 있는데 보안상 위험하기 때문에 외부망으로 연결되게끔 분리해놓는다.
   이렇게 외부망으로 분리해놓은LOBD것들을07M4DMZ라고 한다.


※ TCP(Layer 4(Transport)) MATCHES : 연결지향적이다.
   : -p tcp, –protocol tcp
     –sport, –source-port -> 1024 ~ 65535 사이의 값 이용
     –dport 23/telnet(/etc/services), –destination-port : 숫자 대신에 문자를47EH쓰고 싶을때 해당위치에 있는곳의 절대경로를47EH적어줘야 한다.
     –tcp-flags SYN, FIN, ACK SYN, ACK : 이것보다는DWIY상태추적을07M4많이Y6WZ사용하게 된다.


※ UDP(Layer 4(Transport)) MATCHES : 연결없이Y6WZ데이터를47EH전송받는다. 무조건 보내기만 한다.
   : UDP Application 
     -> TFTP -UDP:69
        Syslog -UDP:514
        NTP(Network Time Protocol) -UDP:123
        DHCP -UDP:67 UDP:68
 
     -p udp, –protocol udp
     –sport, –source-port, -same source port as destination port : source port가ZCW0destination port가ZCW0똑같다. => UDP일경우에…
     –dport 123/ntp(/etc/services), –destination-port : destination port를47EH쓸때는DWIY숫자를47EH많이Y6WZ이용하게 된다.


※ ICMP(Internet Control Messaging Protocol) MATCHES
   : ICMP Types (echo-request -PING, echo-reply -pong)


     -p icmp, –protocol icmp
     –icmp-type name/number
     Deny ICMP echo-replies from all hosts
     -> /sbin/iptables -A INPUT -p icmp-type echo-reply -j DROP
 
     => work 컴이Y6WZserv 컴한테 echo-request를47EH보내게 되면 serv 컴은LOBDwork 컴한테 echo-reply를47EH보내게 된다.



실습!!!!


serv 컴에서…
만약 예전에 설정했던 정책을07M4저장하고 싶으면 iptables-save > default.rules
iptables -F
iptables -nL
iptables -P INPUT ACCEPT
iptables -nL



문제…
serv 컴퓨터에서 외부의 ping에 응답하지 않도록 하며, 또한 자신도 외부로 ping 요청을07M4하지 못하도록 설정하세요!~!!~~


iptables -A OUTPUT -p icmp -icmp-type echo-request -j DROP
iptables -nL
iptables -A INPUT -p icmp –icmp-type echo-request -j DROP
iptables -nL


work 컴에서…
ping -c 3 serv -> ping이Y6WZ안나가게 된다.


*********************************************************************************************************************************************



※ Match multiple port with fewer rules
   : 일반적 정책(rule) 설정
     -> iptables -A INPUT -p tcp –dport 21 -j ACCEPT
        iptables -A INPUT -p tcp –dport 22 -j ACCEPT
        iptables -A INPUT -p tcp –dport 23 -j ACCEPT


     이렇게 여러줄을07M4한줄로 표현할수가ZCW0있다.
   
     Multiple port 를47EH이용
     -> -m multiport –dport port_num1, port_num2, port_num3…
        iptables -I INPUT 1 -p tcp -m multiport –dport 21, 22, 23 -j ACCEPT



예전에 저장했던것을07M4불러오고 싶으면 … -> iptables-restore < default.rules



※ MAC address filtering
   : IP 주소는DWIY쉽게 위조가능
     MAC의 위조는DWIY어렵다…
     -m mac, –mac-source 00:00:00:00:00:00(mac address) 처음 24비트는DWIY제조사 일련번호 다음 24비트는DWIY제품 일련번호이다.


※ iptables -F INPUT
   iptables -nL
   iptables -P INPUT ACCEPT
   clear && iptables -nL
   iptables -A INPUT -s 192.168.234.20 -j DROP
   clear && iptables -nL
  
   work 컴에서…
   ping -c 2 serv -> 접속이Y6WZ안됨.
   ftp serv -> 접속이Y6WZ안됨.
   telnet serv -> 접속이Y6WZ안됨.
   vi /etc/sysconfig/network-scripts/ifcfg-eth0 -> ipaddress를47EH30으로 수정…
   service network restart


   ping -c 2 serv -> 접속이Y6WZ잘 됨.
   ftp serv -> 접속이Y6WZ잘 됨.
   telnet serv -> 접속이Y6WZ잘 됨.


   이것이Y6WZ문제가ZCW0된다… ip만 바꾸면 쉽게 접근을07M4할수가ZCW0있다.
   그렇기 때문에 MAC address를47EH알아서 그것을07M4막아버려야 한다. 이것을07M4알기 위해서는DWIYlog를47EH봐야한다.


   iptables -R INPUT 1 -m mac –mac-source 00:0C:29:4E:93:E5 -j DROP
   => 이렇게 mac address를47EHfiltering하게 되면 유용하게 사용할수가ZCW0있다.



※ Rule Targets
   : ACCEPT : 접근을07M4허용하겠다.
     DROP : 메시지를47EH전혀 보내주지 않는다.
     REJECT : 메시지를47EH보내주긴 하는데 전혀 다른 응답을07M4하게된다.
     REDIRECT : 이것은LOBDproxy 서버에서 사용하게 될것이다. 내가ZCW0갈려고 하는DWIY곳의 경로가ZCW0바뀌게 되는것을07M4REDIRECT라고 한다.
                NAT table 의 PREROUTING chain을07M4적용하게 된다. 오직 local ports에서만 적용이Y6WZ된다.
                proxy server를47EH사용하게 되면 filtering이Y6WZ가능하게 된다.
                normal proxy를47EH사용하게 되면 귀찮기 때문에 투명 proxy를47EH사용하는것이Y6WZ편리하다. -> REDIRECT를47EH사용…
     LOG : SysLog를47EH사용해서 log를47EH저장할수가ZCW0있다.
           아무것도 설정을07M4안해주면 기본적으로 /var/log/message에 저장이Y6WZ된다.



vi /etc/syslog.conf
서비스명 : 레벨 : 저장되는DWIY위치 -> *.info;mail.none;authpriv.none;cron.none /var/log/messages


log를47EH언제든지 볼수 있도록 화일로 저장하는것이Y6WZ좋다.
우선 기존의 것을07M4복사한뒤…
#kern.*  /dev/console 을07M4복사해서… kern.* /var/log/firewall.log을07M4더 추가해준다. ### modified by jun 2006-06-21 ###


service syslog restart
echo $?
ls -l /var/log/firewall.log
cat /var/log/firewall.log
clear && iptables -nL
iptables -D INPUT 1
clear && iptables -nL
iptables -P INPUT DROP
clear && iptables -nL
iptables -A INPUT -p tcp –dport 23 -j LOG -> 23번의 port로 들어오는것의 log 기록을07M4남기겠다.
clear && iptables -nL
iptables -A INPUT -s 192.168.234.20 -p tcp –dport 23 -j ACCEPT
clear && iptables -nL
tail -5 /var/log/firewall.log
watch tail -5 /var/log/firewall.log



문제….
21, 22, 23, 80번의 port 이외의 서비스들은LOBD모두다 log에 기록이Y6WZ남게 끔 하시오~!!!!
21, 22, 23 서비스 이외의 접속기록을07M4log로 남기세요… 힌트 : multiport, ! , log Target


iptables -A INPUT -m multiport -p tcp !–dport 21, 22, 23 -j LOG


*********************************************************************************************************************************************


※ Firewall LOG
   : /etc/syslog.conf를47EH이용한 log위치 재지정
     -> 기본값으로 /var/log/message에 저장
        kern.*  /var/log/firewall 로 수정
        service syslog restart


     Log-prefix
     -> Log 기록에 코멘트 첨부
        –log-prefix “unknown port attemped…”



serv 컴에서…
iptables -R INPUT 1 -m multiport -p tcp ! –dport 21,22,23 -j LOG –log-prefix “unknown port attemped…”



※ Portsentry
   : Portsentry는DWIYhost기반 침입탐지 시스템으로 열려있는DWIY모든 포트를47EH모니터링 할 수 있는DWIY특징을07M4가지고 있으면 TCP/UDP 포트스캔을07M4
     탐지할 수 있고 포트스캔 공격을07M4받았을07M4경우 방화벽과 연동하여 보안 정책을07M4새롭게 재구성 할 수 있다.


    특징
    1) 호스트로 들어오는DWIY모든 패킷을07M4ROUTE명령으로 DROP 시킬수 있음
    2) Xinetd 기반의 서비스에 접근하지 못하도록  /etc/


    download 위치
    :
http://rpm.pbone.net/ -> portsentry 검색 -> fedora 4 download -> 밑으로… Portsentry-1.2.1.te.i386.rpm -> download
    => serv 컴에서…
       rpm -Uvh Portsentry-1.2-1.te.i386.rpm
       rpm -ql Portsentry -> /etc/Portsentry/Portsentry.conf를47EH확인…
       cd /etc/Portsentry/
       pwd
       ls -l
       vi Portsentry.conf -> : set nu
       -> 96번째 행에서… RESOLVE_HOST = “1”을07M4RESOLVE_HOST = “0”으로 수정… : 이름풀이가ZCW0가능하게 할것인지 말것인지를47EH결정…
          132번째 행과 133번째 행이Y6WZ중요하다. => BLOCK_UDP=”1″ , BLOCK_TCP=”1″ -> 그냥 그대로…
          206번째 행에서 보면 #KILL_ROUTE=”/sbin/iptables -I input -s $TARGET$ -j DROP
          282번째 행에서…SCAN_TRIGGER=”2″을07M4SCAN_TRIGGER=”0″으로 수정… :  2초후에 반응하라…을07M4즉각처리로…



    설치후 파일
    1) portsentry -portsentry 실행파일
    2) Portsentry.conf – 환경설정 파일
    3) Portsentry.history – 현재까지 거부된 모든 host 정보 저장
    4) Portsentry.ignore – 감시예외 파일
                           감시하고 있는DWIY특정 포트에 접근해도 무시하길 바라는DWIYhost ip주소를47EH추가



iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT -> 외부에서 ssh 접속만 허용이Y6WZ되게한다.
clear && iptables -nL
which portsentry -> /usr/sbin/portsentry
portsentry -stcp
echo $?
ps -ef | grep -i port -> 자동적으로 UDP까지 같이Y6WZ실행되고 있는것을07M4볼수가ZCW0있다.



work 컴에서…
ssh serv -> 잘되는것을07M4볼수가ZCW0있다.
exit
nmap -v -sS -O(운영체제 확인) serv
nmap -v -sS -O(운영체제 확인) 192.168.234.10
—> 이것이Y6WZ작동이Y6WZ안할것이다. 왜냐하면 x window 때문이다.
     그렇기때문에 text모드로 시작을07M4해야한다.
     ps -ef | grep -i port
     kill 9 1358
     kill 9 2698 등등
     shutdown -r now(재시작) – text모드로…



serv 컴에서…
portsentry -stcp
ps -ef | grep -i port
service iptables start
iptables -nL



work 컴에서…
nmap -v sS -O 192.168.234.10


serv 컴에서…
cat portsentry.blocked.stcp가ZCW0들어와 있어야 한다.


   




※ Portsentry 실행모드
   : Portsentry는DWIY스캔 공격자가ZCW0스캔을07M4하기 위해 사용하는DWIY


 

 

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다