yoni

[방화벽] 패킷 확인 본문

방화벽

[방화벽] 패킷 확인

yoni-1117 2020. 12. 7. 16:36
    • 배경
      : 2대의 서버인 DMZ영역과 폐쇄망(내부망)에서 ip와 port를 각자 할당 해 줬는대 서로 통신이 안되는 모습을 포착하였다.  


    • 방법 모색

      [TCP]
      1) telnet 시도
        : telnet ip port

      2) 각자 리눅스 서버에서(web, was) 포트가 리슨되어 있는지 확인
        : 리슨이 안되어 있으면 서비스가 정상적으로 떠있는게 아니다.
          netstat -an | grep "포트" | grep "LISTEN"

      3) curl로 연결이 되는지 확인 한다.
        : curl http://도메인(아이피):포트/index.jsp

      4) wget
        : 연결이되지않으면 404도 뜨지 않는다.


      [UDP]
      5) java 테스트 파일
  • 현상
    : DMZ == WEB서버, 내부망 == 폐쇄망 == WAS서버
    1) WAS -> WEB 접속 가능
    2) WEB -> WAS 접속 불가능

  • DMZ 구조
    DMZ는 일반적으로 메일서버, 웹서버, DNS 서버와 같이 외부에서 접근되어야 할 필요가 있는 서버들을 위해 사용된다. 외부 네트워크에서 DMZ로 가는 연결은 일반적으로 포트 주소 변환(port address translation 또는 PAT)을 통해 제어된다.



[방법모색 중 java 테스트파일]

  • UdpReceiver
    : 받는부
  • DMZ는 일반적으로 메일서버, 웹서버, DNS 서버와 같이 외부에서 접근되어야 할 필요가 있는 서버들을 위해 사용된다.
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class UdpReceiver
    {
        private int port;
    
        public UdpReceiver(int port)
        {
            this.port = port;
        }
    
        public void execute() throws IOException, InterruptedException
        {
            DatagramSocket ds = new DatagramSocket(port);
    
            while (true)
            {
                Thread.sleep(1000);
                System.out.println("waiting ... ");
    
                byte[] data = new byte[65508];
                DatagramPacket dp = new DatagramPacket(data, data.length);
                ds.receive(dp);
    
                System.out.println(dp.getAddress().getHostAddress() + " >> " + new String(dp.getData()).trim());
            }
        }
    
        public static void main(String[] args)
        {
            if (args.length != 1)
            {
                System.out.println("Usage : java UdpReceiver [PORT]");
            }
    
            UdpReceiver receiver = new UdpReceiver(Integer.parseInt(args[0]));
            System.out.println("UdpReceiver started ... PORT : " + args[0]);
    
            try
            {
                receiver.execute();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    
    }
    

    • UdpSender
      : 보내는부
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    public class UdpSender
    {
        private InetAddress ip;
        private int port;
    
        public UdpSender(String ipAddress, int port) throws UnknownHostException
        {
            this.ip = InetAddress.getByName(ipAddress);
            this.port = port;
        }
    
        public void execute() throws IOException
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    
            DatagramSocket ds = new DatagramSocket();
    
            while(true)
            {
                System.out.print("보낼 메세지 = ");
                String msg = in.readLine();
    
                DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.getBytes().length, ip, port);
                ds.send(dp);
    
                System.out.println("전송완료 !!");
            }
        }
    
        public static void main(String[] args) throws IOException
        {
            if (args.length != 2)
            {
                System.out.println("Usage : java UdpSender [IP] [PORT]");
            }
    
            UdpSender sender = new UdpSender(args[0], Integer.parseInt(args[1]));
            System.out.println("UdpSender started ... IP, PORT : " + args[0] + ", " + args[1]);
            sender.execute();
        }
    }
    
  • 외부 네트워크에서 DMZ로 가는 연결은 일반적으로 포트 주소 변환(port address translation 또는 PAT)을 통해 제어된다.

[리눅스 서버 쉘스크립트]

 

* UdpReceiver.sh

#/bin/sh

TEST_HOME=`cd ..;pwd`
CLASSPATH=$CLASSPATH:$TEST_HOME/classes/production/UdpTest

java -classpath $CLASSPATH test.UdpReceiver $1

 

* UdpSender.sh

#/bin/sh

TEST_HOME=`cd ..;pwd`
CLASSPATH=$CLASSPATH:$TEST_HOME/classes/production/UdpTest

java -classpath $CLASSPATH test.UdpSender $1 $2

'방화벽' 카테고리의 다른 글

TLS 버전 강제 적용  (0) 2024.05.31
Comments