ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LINUX TCP DUMP를 활용한 포트 확인
    System of Infra/LINUX 2021. 8. 8. 16:49
    반응형

    LINUX로고이미지

    Linux TCPDUMP를 활용한 포트 확인

    [root@test_svr01 /]# cat /etc/redhat-release
    CentOS Linux release 7.8.2003 (Core) -> 해당 운영체제의 버전

    -> 해당 OS의 버전 확인 명령어를 통해서 TCP DUMP 테스트를 진행할 운영체제 버전을 확인합니다. 현재 OS의 버전은 Cent 7.8 버전인 것을 확인할 수 있습니다.

    [root@test_svr01 /]# yum list | grep -i tcpdump
    tcpdump.x86_64 14:4.9.2-4.el7_7.1 @anaconda
    
    [root@test_svr01 /]# tcpdump -V
    tcpdump: option requires an argument -- 'V'
    tcpdump version 4.9.2 -> 해당 TCPDUMP의 버전
    libpcap version 1.5.3
    OpenSSL 1.0.2k-fips 26 Jan 2017

    -> 해당 운영체제에 TCPDUMP의 파일 셋이 존재하는지의 여부와 설치가 되었다면 해당 명령어를 통해서 확인을 합니다. 현재 TCPDUMP는 4.9.2를 사용하고 있는것을 확인할 수 있습니다.

    [root@test_svr01 /]# rpm -qa | grep -i openssh
    openssh-clients-7.4p1-21.el7.x86_64
    openssh-7.4p1-21.el7.x86_64
    openssh-server-7.4p1-21.el7.x86_64
    
    [root@test_svr01 /]# yum list installed | grep -i openssh
    Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
    openssh.x86_64 7.4p1-21.el7 @anaconda
    openssh-clients.x86_64 7.4p1-21.el7 @anaconda
    openssh-server.x86_64 7.4p1-21.el7 @anaconda
    
    [root@test_svr01 /]# ssh -V
    OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

    -> 원격지에서 SSH 접속을 통해서 접근을 시도하기 위해서 해당 운영체제에 Openssh의 버전과 파일 셋이 설치가 되어 있는지 확인합니다. rpm, yum 또는 ssh -v를 통해서 확인할 수 있습니다.

    [root@test_svr01 /]# netstat -ntl | grep 22
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
    tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
    tcp6 0 0 :::22 :::* LISTEN
    
    [root@test_svr01 /]# ps -ef | grep sshd
    root 52038 1 0 Jun09 ? 00:00:00 /usr/sbin/sshd -D
    root 176588 173862 0 11:34 pts/1 00:00:00 grep --color=auto sshd
    
    [root@test_svr01 /]# cat /etc/ssh/sshd_config | grep sftp
    Subsystem sftp /usr/libexec/openssh/sftp-server

    -> test_svr01 서버의 22번 ssh포트가 listen 상태인 것을 확인하고 데몬 역시 활성화가 되어 있는지 확인을 합니다. 추가적으로 sftp를 사용하게 된다면 sftp의 활성화가 된 것을 확인합니다.

    [root@test_svr02 /]# cat /etc/services | grep sftp
    sftp 115/tcp
    sftp 115/udp
    venus-se 2431/udp # udp sftp side effect
    codasrv-se 2433/udp # udp sftp side effectQ
    utsftp 2529/tcp # UTS FTP
    utsftp 2529/udp # UTS FTP
    
    [root@test_svr02 /]# ps -ef | grep sshd
    root 212487 1 0 Jun09 ? 00:00:00 /usr/sbin/sshd -D
    root 244982 241921 0 11:34 pts/0 00:00:00 grep --color=auto sshd
    
    [root@test_svr02 /]# cat /etc/services | grep sftp
    sftp 115/tcp
    sftp 115/udp
    utsftp 2529/tcp # UTS FTP
    utsftp 2529/udp # UTS FTP
    
    [root@test_svr02 /]# cat /etc/ssh/sshd_config | grep sftp
    Subsystem sftp /usr/libexec/openssh/sftp-server

    -> test_svr02 서버 역시 test_svr01과 동일한 ssh 데몬 및 22번 포트가 활성화되어 있는지 확인을 합니다.

    [root@test_svr01 /]# systemctl restart sshd
    [root@test_svr02 /]# systemctl restart sshd

    -> test_svr01,test_svr02 서버의 sshd 데몬을 재기동을 진행하도록 합니다.

    [root@test_svr01 /]# ifconfig -a
    bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
    inet 172.17.***.**1 netmask 255.255.255.0 broadcast 172.17.***.***
    
    [root@test_svr02 /]# ifconfig -a | more
    bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
    inet 172.17.***.**2 netmask 255.255.255.0 broadcast 172.17.***.***

    -> 1번서버의 IP와 2번 서버의 IP 정보를 확인합니다.

    [root@test_svr02 /]sftp root@172.17.***.**1
    The authenticity of host '172.17.***.**1 (172.17.***.**1)' can't be established.
    RSA key fingerprint is SHA256:/tBl27oVj8DdB15sFHM30NnyO8BWJN2y+WJnUskqz7c.
    Are you sure you want to continue connecting (yes/no/[fingerprint])?
    Warning: Permanently added '172.17.***.**1' (RSA) to the list of known hosts.
    root@172.17.***.**1's password:
    Connected to 172.17.***.**1.
    sftp>

     -> 2번 서버에서 1번 서버로 sftp 시도 시 패스워드 여부를 묻게 되고 패스워드를 입력하게 되면 접속이 허용되는 것을 확인할 수 있습니다.

    [root@test_svr02 /]sftp root@172.17.***.**1
    root@172.17.***.**1's password:

    -> 2번 서버에서 1번 서버로 sftp를 다시 한번 시도한 뒤 1번 서버에서 TCPDUMP를 통해서 패킷이 들어오는지 지켜보도록 하겠습니다.

    [root@test_svr01 /]# tcpdump -i bond0 src 172.17.***.**2
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on Team0, link-type EN10MB (Ethernet), capture size 262144 bytes
    13:49:50.813404 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [SEW], seq 4184010278, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], length 0
    13:49:50.815380 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [.], ack 1715537856, win 8212, length 0
    13:49:50.819340 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [P.], seq 0:33, ack 1, win 8212, length 33
    13:49:50.830577 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [P.], seq 33:1353, ack 22, win 8212, length 1320
    13:49:50.834425 172.17.***.**2.530722 > test_svr02.ssh: Flags [P.], seq 1353:1401, ack 1302, win 8207, length 48
    13:49:50.847861 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [P.], seq 1401:1417, ack 1666, win 8212, length 16
    13:49:50.916230 IP 172.17.***.**2.53072 > test_svr02.ssh: Flags [.], ack 1794, win 8212, length 0

    -> 1번 서버에서 SRC(출발지)의 IP를 바탕으로 패킷이 전송되면서 접근이 허용되고 있는지 확인을 할 수 있습니다. 이 같은 방법으로 방화벽 또는 어느 포인트에서 통신이 막혀 있는지 추측을 해볼 수 있습니다.

     

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.