주요 콘텐츠로 건너뛰기

OpenVOS 아키텍처는 여러 독립적인 시스템을 사용합니다. X25 통신을 위한 NIO, 파이버 채널 디스크 어레이 컨트롤러, 전원을 위한 UPS, IP를 통한 RSN용 RSN 인터넷 콘솔 서버 및 이러한 모든 시스템이 개인 이더넷/IP 네트워크를 통해 통신할 수 있는 유지 보수 네트워크 이더넷 스위치. 이러한 시스템은 다양한 OpenVOS 프로세스에서 모니터링하여 올바르게 실행되고 있는지 확인합니다. 그러나 사용자 로그인과 같은 일부 이벤트는 모니터링되지 않습니다. RSN 콘솔과 네트워크 스위치에는 로그인하거나 로그인하려고 할 때마다 로깅 서버에 메시지를 보낼 수 있습니다. 네트워크 스위치는 Stratus 모듈에만 연결되어 있으므로 Stratus 모듈에서 로깅 서버를 실행하는 것이 합리적입니다. 이를 위해 매우 간단한 로깅 서버를 만들었으며, 날짜 시간 스탬프와 메시지를 표준 출력으로 보낸 호스트의 IP 주소와 함께 수신하는 메시지를 작성하기만 하면 됩니다. 서버를 시작 프로세스로 실행하면 메시지를 프로세스의 아웃 파일에 저장할 수 있습니다.

네트워크 스위치의 예
승인 된 사람이 루트로 네트워크 스위치에 로그인 할 때 루트 암호를 입력하는 데 문제가 있을 수 있습니다.


2011-10-02 11:55:39 : 10.10.10.1.75 : >%AAA-W-REJECT: 새로운 텔넷 연결 사용
+r 루트, 소스 10.10.1.1 대상 10.10.1.75 거부

2011-10-02 11:56:03 : 10.10.1.1.75 : >%AAA-W-REJECT: 새로운 텔넷 연결 사용
+r 루트, 소스 10.10.1.1 대상 10.10.1.75 거부

2011-10-02 11:56:08 : 10.10.10.1.75 : >%AAA-I-CONNECT: 사용자 CLI 세션 용 사용자 CLI 세션
+ot 오버 텔넷, 소스 10.10.1.1.1 대상 10.10.1.75 허용

다음은 시스템 관리자 사용자 아이디를 추측하는 사람입니다.


2011-10-02 12:03:13 : 10.10.1.75 : >%AAA-W-REJECT: 새로운 텔넷 연결 사용
+r 관리자, 소스 10.10.1.1 대상 10.10.1.75 거부

2011-10-02 12:03:30 : 10.10.1.1.75 : >%AAA-W-REJECT: 새로운 텔넷 연결 사용
+r sysadmin, 소스 10.10.1.1.1 대상 10.10.1.75 거부

2011-10-02 12:04:39 : 10.10.1.1.75 : >%AAA-W-REJECT: 새로운 텔넷 연결 사용
+r 관리자, 출처 10.10.1.1.1 대상 10.10.1.75 거부

사용자 로그인 외에도 구성이 변경되었을 때 네트워크 스위치가 보고됩니다.


2011-10-02 15:16:29 : 10.10.10.1.75 : >%COPY-I-FILECPY: 파일 복사 - 소스 URL 실행
+닝 컨피그 대상 URL flash://startup-config

2011-10-02 15:16:43 : 10.10.10.1.75 : >%COPY-N-TRAP: 복사 작업은 컴플리트였습니다.
+ed 성공적으로

또한 통신 문제를 해결할 때 매우 유용할 수 있는 링크를 위아래로 보고합니다.


2011-10-02 15:49:17 : 10.10.1.1.75 : >%LINK-W-Down: 2/e24

2011-10-02 15:49:20 : 10.10.1.75 : >%LINK-I-Up: 2/e24
  RSN 인터넷 콘솔 서버의 예
RSN 콘솔에 연결 하 고 루트로 로그인 하는 모듈에서 누군가가 잘못 암호를 입력 한 후 두 번.


2011-10-02 12:11:03 : 10.10.1.1.200 : in.telnetd[2942]: 10.10.1.1.1 (10)에서 연결
+.10.1.1)
2011-10-02 12:11:03 : 10.10.1.200 : telnetd[2942]: doit: getaddrinfo: 임시
이름 해상도의 +실패
2011-10-02 12:11:07 : 10.10.1.200 : 로그인[2943]: '루트'에 대한 잘못된 암호
'10.10.1.1'에서 +'ttyp0'
2011-10-02 12:11:15 : 10.10.1.200 : 로그인[2943]: '루트'에 대한 잘못된 암호
'10.10.1.1'에서 +'ttyp0'
2011-10-02 12:11:35 : 10.10.1.200 : 로그인[2945]: 'ttyp0'에 루트 로그인 '10
+..10.1.1'

RSN 콘솔은 잘못된 사용자 ID로 시도한 경우 알 수 없는 사용자 ID를 보고합니다.


2011-10-02 12:12:31 : 10.10.1.1.200 : in.telnetd[2946]: 10.10.1.1.1 (10)에서 연결
+.10.1.1)
2011-10-02 12:12:32 : 10.10.1.200 : telnetd[2946]: 도트: getaddrinfo: 일시적
이름 해상도의 +실패
2011-10-02 12:12:37 : 10.10.1.200 : 로그인[2947]: '알 수 없음'에 대한 잘못된 암호
'10.10.1.1'에서 'ttyp0'에
2011-10-02 12:12:45 : 10.10.1.200 : 로그인[2947]: '알 수 없음'에 대한 잘못된 암호
'10.10.1.1'에서 'ttyp0'에
2011-10-02 12:12:54 : 10.10.1.200 : 로그인[2947]: '알 수 없음'에 대한 잘못된 암호
'10.10.1.1'에서 'ttyp0'에

RSN 콘솔은 유효한 사용자 ID rsn_admin 로그인하는 데 사용되는 경우 보고되지 않습니다. 그러나 연결은 계속 표시됩니다. rsn_admin 사용자 ID는 시스템 구성 파일을 변경할 수 없습니다. rsn_admin 사용자가 su 명령으로 루트로 변경하려고 하면 기록됩니다.


2011-10-02 12:15:37 : 10.10.1.1.200 : in.telnetd[2957]: 10.10.1.1.1 (10)에서 연결
+.10.1.1)
2011-10-02 12:15:38 : 10.10.1.200 : telnetd[2957]: 도트: getaddrinfo: 임시
이름 해상도의 +실패
2011-10-02 12:15:54 : 10.10.1.200 : su[2959]: + ttyp0 rsn_admin 뿌리
2011-10-02 12:15:54 : 10.10.1.200 : PAM_unix[2959]: (su) 세션은 사용자를 위해 열렸다.
+ rsn_admin 뿌리 (uid =500)

실패하는 시도와 마찬가지로.


2011-10-02 12:19:50 : 10.10.1.200 : PAM_unix[2972]: 인증 실패; rsn_
+관리자(uid=500) -> su 서비스에 대한 루트
2011-10-02 12:19:52 : 10.10.1.200 : su[2972]: pam_authenticate: 인증 f
+ailure
2011-10-02 12:19:52 : 10.10.1.200 : su[2972]: - ttyp0 rsn_admin 루트

 

네트워크 스위치를 구성하여 OpenVOS 모듈로 로그 메시지를 보내려면 스위치를 루트로 로그인한 다음 로깅 명령을 실행한 다음 새 구성을 저장해야 합니다.

텔넷 10.10.1.75                                       
노력...
10.10.1.75에 연결됩니다.
탈출 문자는 '^]'입니다.

사용자 이름:루트
암호:******

콘솔 # 구성
콘솔(config)# 로깅 10.10.1.1
콘솔(구성)#

콘솔 # 카피 실행-구성 시작-구성

 

RSN 콘솔을 구성하여 OpenVOS 모듈로 로그 메시지를 보내려면 콘솔에 루트로 로그인하고 "syslogd –R 10.10.1.1:514"라는 명령으로 syslogd 프로세스를 시작해야 합니다. syslogd 프로세스가 재부팅 후 시작되었는지 확인하려면 /etc/tc.d/rc.local 파일을 변경해야 합니다.

telnet 10.10.1.200
Trying...
Connected to 10.10.1.200.
Escape character is '^]'.

Moxa Embedded Linux, Professional Edition
Linux/armv5teb 2.4.18_mvl30-ixdp425

azvos login: root
Password:
Welcome to

    ___  _____  __        _______    _____                   __
   / _ / __/ |/ / ____  /  _/ _   / ___/__  ___  ___ ___  / /__
  / , _/ /    / /___/ _/ // ___/ / /__/ _ / _ (_-</ _ / / -_)
 /_/|_/___/_/|_/       /___/_/     ___/___/_//_/___/___/_/__/ 

 Authorized Users Only!

root@azvos:~# syslogd -R 10.10.1.1:514
root@azvos:~# 
root@azvos:~# 
root@azvos:~# 
root@azvos:~# cd /etc/rc.d
root@azvos:/etc/rc.d# cp rc.local rc.local.bak
root@azvos:/etc/rc.d# echo syslogd -R 10.10.1.1:514 >> rc.local
root@azvos:/etc/rc.d# tail rc.local
fi
/etc/init.d/ssh start
/etc/init.d/apache stop
/etc/init.d/portmap stop
rm -f /rsn/call.log
/rsn/callhome &
lcmmessage -c -m "   Welcome to   " -l
lcmmessage -m " RSN-IP Console " -l
cat /etc/motd
syslogd -R 10.10.1.1:514
root@azvos:/etc/rc.d#

 

위에 표시된 것과 동일한 출력을 얻을 수 있다고 가정하면 "rm rc.local.bak"로 rc.local.bak 파일을 삭제할 수 있습니다.

장치에 로깅이 설정되면 Stratus 모듈에서 로그 프로그램을 실행해야 합니다.  다음 명령 매크로로 프로그램을 시작하는 것이 좋습니다. 로그 파일의 이름이 로그됩니다. (날짜). (시간).out. 어떤 이유로 해당 이름이 이미 존재하는 경우 로그로 이름이 바뀝니다. (날짜). (시간).old.out. 이미 .old.out 접미사가 있는 파일이 있으면 삭제됩니다. 타임 스탬프가 두 번째에 있다는 것을 감안할 때 이것은 가능성이 없습니다. 아웃 파일에는 암시적 잠금 집합이 있으므로 파일을 언제든지 읽을 수 있습니다. 아웃 파일은 영원히 증가하므로 부품의 일부 유지 관리가 필요하거나 프로그램을 수정하여 출력 처리에 대해 더 스마트하게 만들 수 있습니다.



start_logd.cm은 여기에서 시작됩니다.
&
및 버전 1.00 11-11-02
[email protected]
&
그리고 이 스크립트는 로그 파일을 만들고, 암시적 잠금을 설정하고, 로그를 시작합니다.
및 프로세스. 프로세스가 일반적으로 종료되지 않으며 로그 파일에는
그리고 매우 큰 성장 잠재력.
&
&
이 소프트웨어는 보증 없이 "AS IS"기준으로 제공됩니다.
그리고 어떤 종류의 지원. 저자는 암시적 임의의 암시를 구체적으로 부인합니다.
특정 목적을 위해 가맹점 또는 적합성보증.
및 이 면책 조항은 임의의 구두 표현에도 불구하고 적용됩니다.
저자 또는 다른 사람이 제공하는 종류.
&
& 설정 DT (날짜). (시간)
& if (로그된 존재.&DT&.out)
그리고 !name logd.&DT&.out logd.&DT&.old.out-delete
create_file 로그.&DT&out
set_implicit_locking 로그.&DT&out
start_process 로그 -output_path 로그.&DT&out -특권 -process_name 로그
&
& start_logd.cm는 여기에서 끝납니다.

 

마침내 여기에 프로그램이 있습니다.



/* logd.c starts here

   Version 1.00 11-11-02
   [email protected]

   This software is provided on an "AS IS" basis, WITHOUT ANY WARRANTY OR
   ANY SUPPORT OF ANY KIND. The AUTHOR SPECIFICALLY DISCLAIMS ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE.
   This disclaimer applies, despite any verbal representations of any
   kind provided by the author or anyone else.
*/

#define _POSIX_SOURCE

#include <sys/select.h>
#include <prototypes/inet_proto.h>
#include <stdlib.h>
#include <string.h>
#include <c_utilities.h>
#include <errno.h>
#include <time.h>

#define BUFFERLEN 10000
#define bzero(s, len)             memset((char *)(s), 0, len)

int errno;

getCurrentDateTime (char * szDT)
{
time_t tTime;
struct tm *tmLT;

tTime = time ((time_t *) 0);
tmLT = localtime (&tTime);

sprintf (szDT, "%4ld-%02ld-%02ld %02ld:%02ld:%02ld",
          tmLT -> tm_year+1900,
          tmLT -> tm_mon,
          tmLT -> tm_mday,
          tmLT -> tm_hour,
          tmLT -> tm_min,
          tmLT -> tm_sec);
}

main (argc, argv)
int    argc;
char   *argv [];

{
 struct sockaddr_in serv_addr;
 struct sockaddr_in cli_addr;
 int clilen = sizeof (cli_addr);

 int zeroCount = 0;
 int socks0;
 int recvBytes;

 char szSender [16];
 char  szDateTime [32];
 char szMessage [BUFFERLEN];
 short portNumber;

 if (argc == 1)  /* no arguments - use the default of 514 */
    {
    portNumber = 514;
    }
 else
 if (argc == 2) /* one argument, must be the expected port number */
    {
    portNumber = atoi (argv [1]);
    if (portNumber == 0)
       {
       printf ("nn%s argument was not the expected port number", argv [1]);
       printf ("nUsage: logd [port number, default = 514]n");
       exit (-1);
       }
    }
 else /* more than one argument gets a usage message */
    {
    printf ("nnToo many arguments");
    printf ("nUsage: logd [port number, default = 514]n");
    exit (-1);
    }

/* Leting you know what argument values will actually be used */

 printf ("logd %dnn", portNumber);

 if ((socks0 = socket (AF_INET, SOCK_DGRAM, 0)) < 0)
    {
    perror ("logd: can't create dgram socket");
    exit (errno);
    }

/* build a sockaddr structure holding the address we will bind to. The IP
   address is INADDR_ANY meaning we will listen on all active IP addresses */

 bzero ( (char *) &serv_addr, sizeof (serv_addr));
 serv_addr.sin_family        = AF_INET;
 serv_addr.sin_addr.s_addr   = htonl (INADDR_ANY);
 serv_addr.sin_port          = htons (portNumber);

/* now bind to the address and port */

 if (bind (socks0, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) < 0)
    {
    perror ("logd: can't bind local address");
    exit (errno);
    }

/* main loop just does a recv, blocking until something is available to read.
   Assuming we receive at least 1 byte we get the current date-time,
   convert the senders IP address to a printable string and print the
   date-time, address and message starting at the 5th character position.
   The first four characters of a syslog message are <NN> where NN is a
   severity and facility code. These can be used for message filtering. Since
   this program doesn't do any filtering I just skip them. */
 while (1)
   {
    recvBytes=recvfrom(socks0,szMessage, BUFFERLEN, 0,
          (struct sockaddr *) &cli_addr, &clilen);
    if (recvBytes > 0)
       {
       getCurrentDateTime ((char *) &szDateTime);
       strcpy (szSender, inet_ntoa ((struct in_addr) cli_addr.sin_addr));
       szMessage [recvBytes] = 0;
       printf ("%s : %s : %sn", szDateTime, szSender, &szMessage[4]);
       zeroCount = 0;
       }
    else
    if (recvBytes < 0) /* in the event of an error report it and exit */
       {
       getCurrentDateTime ((char *) &szDateTime);
       printf ("%s : Error %d returned - exitingn", szDateTime, errno);
       exit (errno);
       }
    else  /* I can't think of any reason we would be getting null messages */
       {  /* but if we get a stream of them we would silently loop. This */
       zeroCount++;          /* forces out a message if we get 100 null */
       if (zeroCount > 99)   /* messages in a row */
          {
          getCurrentDateTime ((char *) &szDateTime);
          strcpy (szSender, inet_ntoa ((struct in_addr) cli_addr.sin_addr));
          printf ("%s : %s %sn", szDateTime,
               "We have received 100 null messages, the last one from",
               szSender);
          zeroCount = 0;
          }
       }
   }
}

/* logd.c ends here */

 

© 2024 스트라투스 테크놀로지스.