네트워크의 설정 (NIC, ifconfig)

 

NIC (Network Interface Card)

 

  - 리눅스에서 사용하는 Ethernet Card(eth0, eth1 등) 

 

  - 이더넷을 이용하여 LAN을 구성하기 위해서는 이더넷 카드(NIC)를 사용하며, 리눅스에서 이더넷

     카드는 eth0 , eth1 등의 장치명으로 표시된다. 네트워크 장치명은 /dev 에 등록되어 있지 않으며,

     커널이 장치 검색을 한 후에 장치명를 리턴한다.

  

 

 

ifconfig

 

  - 리눅스 네트워크 설정시 네트워크 인터페이스를 설정하는 명령어.

     NIC 상태확인, 설정, 수정 등에 사용

 

  - 형식

     : ifconfig      netmask    broadcast  

 

  - 주의

     : ifconfig를 사용하여 네트워크 정보를 설정했을 경우 시스템을 재부팅하면 네트워크 설정 정보는

       모두 사라진다.

 

   - ifconfig로 설정했을 경우 /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/sysconfig/

      network,  /etc/resolv.conf  파일 등을 수동으로 설정해 주어야만 한다.

 

   - 커널에 상주하는 네트워크 장치를 구성하고, 부팅 시에 필요한 장치를 설정하기 위해 사용된다.

 

   - ifconfig 명령어를 이용하여 IP 주소, 넷마스크 등의 네트워크 정보를 설정할 수 있다.

 

   - ifconfig로  IP Address 할당하기

 

         다음과 같은 네트워크 정보를 ifconfig로 할당할 경우

           IP Address              192.168.1.31

           Netmask                  255.255.255.0

           Network Address     192.168.1.0

           Broadcast Address  192.168.1.255

 

         【root@colt357 root】# ifconfig eth0 192.168.1.31 netmask 255.255.255.0 broadcast 192.

                                168.1.255 up

 

    - 작동중인 네트워크 인터페이스 정보

 

       [root@cobee13 etc】# ifconfig  

          Link encap:Ethernet  HWaddr 00:04:23:B5:5D:92 
          inet addr:61.108.83.43  Bcast:61.108.83.127  Mask:255.255.255.128
          inet6 addr: fe80::204:23ff:feb5:5d92/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12009614 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17836040 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1905778220 (1.7 GiB)  TX bytes:1895444103 (1.7 GiB)
          Base address:0xec80 Memory:febe0000-fec00000

        

            HWaddr : 각 NIC에 고유한 하드웨어(MAC) 주소이다. IP 주소 충돌 등의 문제가 발생할 때는

                            하드웨어 주소에 할당된 IP Address를 확인한다.

            inet addr : IPv4 방식으로 NIC에 할당된 IP 주소를 의미한다.

            Bcast :  브로드케스트 주소를 나타낸다.

            MTU(Macimum  Transmission  Unit) : 최대 전송 패킷의 크기를 말한다.

            Metric : 라우팅할 때 참조하는 거리에 관한 값으로, '1'은 같은 로컬을 의미한다.

            RX/TX : 받은 패킷에 대한 통계와 보낸 패킷에 대한 통계값을 나타낸다.

            packets :  받거나 보낸 패킷의 총 개수를, error는 그중 오류가 발생한 패킷의 개수를,

                            dropped는 이유를 막론하고 버려진 패킷의 개수를, 그리고 overruns는 이더넷

                            이 처리할 수 없는 속도로 빠르게 자료가 오고 감으로써 그 사이에서 손실된 패킷

                            의 개수를 나타낸다.

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[find] find 명령어  (0) 2020.05.10
[명령어] 기타 잡동사니  (0) 2020.05.10
[split] TAR 분할 압축  (0) 2020.05.10
[SSL] 생성  (0) 2020.05.10
CentOS7 - 네트워크 명령  (0) 2020.05.10

find 는 특정 속성의 파일을 검색할 경우 많이 사용된다.

【 -type c】
        File is of type c:
      b      block (buffered) special
      c      character (unbuffered) special
      d      directory
      p      named pipe (FIFO)
      f      regular file
      l      symbolic link
      s      socket
      D      door (Solaris)

【 -newer   file1 】
    --> file1 보다

 

============================================================================

 특정단어 찾기 】

 

 find . -type f -exec grep -H '#!@#ADVERT' {} \;

-H 는 화일명 표시하기 옵션

 

============================================================================

【 find 】

find 경로명-리스트 수식

 

유용한 옵션들

옵션들은 결합될 수 있다.

 

-name 화일명        만약 " 화일명" 이 현재 황리 이름과 맞으면 참

-perm octnum        만약 접근 허용이 8진수 octnum과 맞으면 참

-print                      화일 이름을 출력

-type t                    만약 화일의 형이 t 이면 참.    t는 d(디렉토리), f(화일), c(문자 특수화일), b(블럭화일)

-exec 명령어         실행 명령어가 0 종료 상태를 반환하면 참, 현재 경로명을 {}로 대치,  "명령어" 뒤에 "\;" 이 나온다.

-size n                     화일의 크기가 n이면 참 (+n 은 n보다 큰것을, -n은 n보다 작은 것을 찾을 때 사용한다.)

 

 

 

 

==========================================================================

옵션명령 -maxdepth 와 -mindepth에 대한 정의

==========================================================================

1. maxdepth 의 의미는 현재위치에서  지정된 단계까지의 검색 뜻함.

  ex) find  /home  -name 'kiss' -type d -maxdepth 3

       => /home 에서부터  이름이 kiss인 디렉토리를 /home 의 서브디렉토리 3단계까지 찾는다.

 

2. mindepth 의 의미는 지정된 단계에서부터 그 이후의 단계까지 (끝까지)를 의미한다.

    ex)find /home/segio -name 'kiss' -type d -mindepth 3

      =>/home/segio를 기준으로  그 이하 서브3단계에서부터 끝까지  kiss라는 디렉토리를 찾는다.

 

3. 특정 단계의 디렉토리만을 선택하려면 다음과 같이 두 옵션을 모두 사용한다.

     ex) find  /home -name 'kiss' -type f  -maxdepth 2 -mindepth 2

      => /home 에서 2단계에 속하는 위치에서만  이름이 kiss인 디렉토리를 찾는다.

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[ifconfig] 네트워크 설정  (0) 2020.05.10
[명령어] 기타 잡동사니  (0) 2020.05.10
[split] TAR 분할 압축  (0) 2020.05.10
[SSL] 생성  (0) 2020.05.10
CentOS7 - 네트워크 명령  (0) 2020.05.10

[파일지우기]
    ex)rm  test[2-4]
test2부터 test4까지 해당되는 파일을



--------------------------------------------------------------------------------
[리눅스 포트관리]

리눅스 시스템에서 포트는 총 65535개은 포트가 존재한다...
이중에 1에서 1024까지는 시스템에서 사용하도록 지정되어있다.

관리하는 곳은 SERVICES 이다.
/etc/services 는 특정서비스가 어느 포트를 사용하고 있는지 확인할 수
있다.

실질적으로 서비스를 주관하는것은 데몬이다.  
각각의 서비스에는 관련 데몬이 존재한다.....이중 중요한(?) 데몬을 inetd.d가 관리를 한다.

--------------------------------------------------------------------

[RPM 설치관련]

설치 : rpm -ivh 팩키지
삭제 : rpm -e 팩키지
설치여부확인 : rpm -qa | grep 팩키지
강제설치 : rpm -ivh --force 팩키지     ----->시스템 장애가 올수있다.
의존성무시: rpm -ivh --nodeps 팩키지   ----->시스템 장애가 올수있다.
명령에 관련된 팩키지알아내기 : rpm -qf  명령어 위치(경로까지 입력)

--------------------------------------------------------------------


[파일시스템]

1. 파티션 나누기  
   #fdisk /dev/sda
2. 포멧하기
   #mkfs -t ext2 /dev/sda1
   (파티션를 포멧한다.)
3. 마운트
   #/etc/fstab    에 설정한다.
4. 시스템검사
   #fsck /dev/hda1 -->이런식으로 장치지정.
---------------------------------------------------------------------
[프로세스]
ps aux 상태를 보여주는 STAT상태..
(옵션  -a: 모든 유저들의 프로세스
       -u: 사용자 이름과 시간등
       -x: 기타 프로세스
)

  R - 실행대기상태
  S - 잠든상태
  D - 입출력을 기다리는 인터럽트가 불가능한 상태
  T - 멈춰있거나 흔적이 남아 있는 상태
  Z - 좀비(zombie) 완전히 죽어 있는 상태

# 프로세스를 확인하기위해서는 grep 를 함께 쓴다.
  ps -aux | grep bbsd
  ps -ef  | grep bbsd
  이런식으로 찾았으나...pid 번호만을 찾을때는
  pidof  bbsd
  이렇게 사용해도 무관하다....


#kill 프로세스 (옵션   -9: 강제종료)
  kill  PID

---------------------------------------------------------------------

[초기 로그인 화면구성]

/etc/issue 와 /etc/issue.net 를 편집하고 /etc/wow-release 파일을
삭제한다.

--------------------------------------------------------------------

[경로 추적 명령어]
  리눅스에선 #traceroute (도메인 or IP).
  도스에선  c:/>tracert  (도메인 or IP)
----------------------------------------------------------------------

[FTP 명령어]
  FTP접속시에 상대서버에서 local서버의 내용를 확인 및 위치
  변경 명령 !ls , lcd
----------------------------------------------------------------------
[ntsysv 관련명령어]
  bind(DNS관련), portmapf 등은 설치하지 않는다.
----------------------------------------------------------------------
[top]
  프로세서 상태를 확인하는 명령어 .....해킹 검색
----------------------------------------------------------------------
[find]
  찾기 명령어..파일을 검색할때의 옵션은
ex) find / -name colt357
     해석  ( 찾아라 루트부터 이름으로 colt357이란놈을..^^)
--------------------------------------------------
[X-Window]
  /etc/X11/xinit/xclients 를 자신의 홈디렉토리로  cp한후
  내용을 편집한다. 윗줄에 exec wmaker를 입력한다.
--------------------------------------------------------------------
[tar]
  tar로 묶여 있는 화일을 확인하는 옵션 ---  tar tf 화일
  tar.gz 으로 묶은 화일 확인 하는 옵션 ---  tar ztf 화일
--------------------------------------------------------------------
[netstat]
netstat -nr : route명령보다 좀더 자세한 라우팅 테이블정보.
netstat -t  : 인터넷 네트워크 접속상태 점검.
netstat -i  : 네트워크 패킷 전송 상태 점검

--------------------------------------------------------------------
[host -a 도메인]
도메인을 검색할 때 사용하는 명령어
--------------------------------------------------------------------
[mkdir]

만일 현재 디렉토리에서   ./sub/doc/html 이라는 디렉토리를 생성하고 싶다면,
#mkdir -p  sub/doc/html
--------------------------------------------------------------------
[grep]
문서내용 중에서 특정단어를 찾을때도 사용된다.

ex)grep "찾는단어" 파일

이런 형태다...파일위치에 * 를 쓰면 전체에서 검색을 한다.
---------------------------------------------------------------------
[du]
파일이나 폴더의 용량을 확인한다.

-s : 총합계...
-b : 바이트 크리로..
-h : 휴먼인식용의

---------------------------------------------------------------------

[ifconfig]

ex) ifconfig 인터페이스 IP [Netmask] [broadcast] up/down


---------------------------------------------------------------------

[route]

ex) route add/del -net/-host network/host address
    route add/del default gw IP dev interface

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[ifconfig] 네트워크 설정  (0) 2020.05.10
[find] find 명령어  (0) 2020.05.10
[split] TAR 분할 압축  (0) 2020.05.10
[SSL] 생성  (0) 2020.05.10
CentOS7 - 네트워크 명령  (0) 2020.05.10

[SPLIT ]

하나의 큰파일을 나누기 -----------------------------------------------------

   - 덩치 큰 백업(tgz)파일을 특정용량으로 나누기
      ( CD 제작  또는  용량이 큰 파일를 ftp, wget 전송시 사용)

ex)  split   -b   사이즈   백업된화일   머릿말
ex)  split -b 650m  bigsize.tgz small_
      - 설명 bigsize.tgz 파일를 650Mb 크기의 small_aa,small_ab,small_ac
        식으로 생성한다            
     

나워기 파일을 합치기 -------------------------------------------------------

ex)  cat  나뉜화일1  나뉜화일2   >   화일이름
ex)  cat  small_aa small_ab small_ac  >   bigsize.tgz
      - 나뉘어진 small_aa small_ab등의 파일를 bigsize.tgz의 하나의 파이로
        생성한다      




==========================================================  
[응용] 큰 용량의 디렉토리를 특정 사이즈의 화일로 나눠 압축하기

==========================================================

/home/test 디렉토리를 100단위로 backupfile_xx 형태로 압축하신다면..

tar czvf - /home/bbs | split -b 100m - backupfile_

 주의) /home/bbs 를 압축하는 것이 아니고 /home 속에 있는 모든것을
       압축한다...(압축대상의 경로에서 작업하기바람...옵션이 있다는데 모르겠씀.)


압축해제는

ex) cat backupfile_* | tar zxvf -
ex) cat backupfile_* | (cd /;tar -xzvpf - )

풀 때 (cd /;tar -xzvpf - ) 중의 /; 하면 / 디렉으로 옮겨 가서 풀리게 됩니다.
다른 방법으론

 ex) cat backupfile_* | tar xzvfC -  /home/tmp  )
가 있다.

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[find] find 명령어  (0) 2020.05.10
[명령어] 기타 잡동사니  (0) 2020.05.10
[SSL] 생성  (0) 2020.05.10
CentOS7 - 네트워크 명령  (0) 2020.05.10
CentOS7 - 사용자  (0) 2020.05.10

간단하게 ssl csr파일 생성하기

 

보통 인증서를 발급해주는 업체에, 인증서 신청을 할 경우, 도메인에 대한 csr 파일을 요구하는 경우가 있습니다.
그럴경우, 서버에서 생성해주어야 하는데, 그 순서는 key 파일 생성, 생성된 key파일로 csr생성하는 순서입니다.
그리고, 최종적으로 인증업체에 넘겨준, csr로 생성된 crt(발급된 인증서) 파일을 적용하면 됩니다.

 

[첫번째  key 값 생성하기]

#자신이 원하는 디렉토리에 아래와 같은 형식으로 key 값을 생성.

key값 생성의 예 - openssl genrsa -des3 -out DOMAINNAME.key 1024

Generating RSA private key, 1024 bit long modulus
......................................++++++
..................++++++
e is 65537 (0x10001)
Enter pass phrase for DOMAINNAME.key:  #자신이 원하는 key값의 패스워드를 입력.

#생성된 key값의 상태를 확인할수있다.
key값 확인 - openssl rsa -noout -text -in DOMAINNAME.key


[두번째 csr 생성하기]

csr 생성의 예 - openssl req -new -key DOMAINNAME.key -out DOMAINNAME.csr

Enter pass phrase for DOMAINNAME.key:  # key값을 생성했을때 입력했던 패스워드를 입력.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) GB:KR # 나라를 나타내는 2문자의 ISO약어.
State or Province Name (full name) Berkshire:Seoul # 조직이 있는 시도.
Locality Name (eg, city) Newbury:Gangnam-gu # 조직이 있는 구동.
Organization Name (eg, company) My Company Ltd:BlueWeb Co., Ltd. # 조직의 법률상의 정식명칭.
Organizational Unit Name (eg, section) :system # 조직의 부서명.
Common Name (eg, your name or your server's hostname) :blueweb.co.kr # 발급받을 정확한 FQDN의 도메인.
Email Address :bluedomain@blueweb.co.kr

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password : # 엔터로 다음로 넘어간다, 생략 가능
An optional company name : # 엔터로 다음로 넘어간다, 생략 가능

# 생성한 csr 확인.
csr 확인 - openssl req -noout -text -in DOMAINNAME.csr

[아래와 같이 나오면 csr 생성 성공.

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=KR, ST=Seoul, L=Gangnam-gu, O=BlueWeb Co., Ltd., OU=system, 
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:ab:65:f6:a3:ec:91:f9:09:1c:a0:95:09:d2:f7:
                    9f:77:3d:35:19:00:82:f7:bb:da:9b:72:11:5d:87:
                    ee:ee:f5:23:f7:9d:30:94:0d:05:75:af:a9:21:fc:
                    18:24:c5:41:c5:a4:1c:4f:2d:ce:c8:e5:ed:86:70:
                    fc:47:7f:6e:41:37:ec:c3:4f:80:dc:99:98:fd:58:
                    c9:58:56:89:33:c8:03:e7:28:54:98:66:76:b3:ee:
                    7f:24:15:bc:91:8e:77:e8:06:04:fa:d3:7e:98:b2:
                    51:81:05:44:81:c3:76:84:2c:85:06:7d:e2:b1:9a:
                    52:79:cb:14:f7:cb:86:4c:59
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: md5WithRSAEncryption
        9f:be:d6:ee:4f:02:79:56:48:42:b0:79:be:98:24:dc:3b:85:
        37:95:75:9f:c9:4a:a7:03:10:96:84:c1:4b:ef:60:f5:3e:fe:
        e4:f1:d5:37:16:c8:77:0f:56:fd:99:71:e7:da:7c:c8:15:e7:
        00:51:90:81:67:e4:46:78:61:04:ca:24:0c:ee:fb:bd:46:04:
        09:85:c0:18:73:d4:27:c1:d2:7f:c2:8b:2a:38:f5:bc:00:25:
        d3:dd:ad:3f:8f:b2:39:ff:53:26:a3:3a:a1:f6:5e:9f:4d:28:
        7d:85:e3:ef:cc:c3:ce:80:ad:e6:43:91:cb:92:f8:1c:94:f3:
        df:8e

                     

[세번째 crt 생성하기]

마지막으로 crt를 발급하기이나, crt 파일은 보통 인증업체에서 발급해주므로
발급받은 인증서를 서버에 적용해주면 된다.
crt 생성의 예 - openssl req -new -x509 -days 365 -DOMAINNAME.key -out DOMAINNAME.crt

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[명령어] 기타 잡동사니  (0) 2020.05.10
[split] TAR 분할 압축  (0) 2020.05.10
CentOS7 - 네트워크 명령  (0) 2020.05.10
CentOS7 - 사용자  (0) 2020.05.10
YUM - (yellowdog updater modified)  (0) 2020.05.10

1. ip
    커널 2.4이후 리눅스 고급 네트워킹 기능을 사용하기 위한 유틸리티로 ip를 많이 사용한다.
    ip는 iproute 패키지로 기본 제공된다.
    많은 기능들이 ip 유틸리티로 통합되었다.

[네트워크 연결 확인 : ip link]
[root@vm-colt357 /]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:a3:5b:8c brd ff:ff:ff:ff:ff:ff


위와 같이 ip link 라고 입력하면 네트워크 연결상태를 알려준다. 여기서 중요한 것은 state UP이다. 네트워크에 연결되지 않았다면 state DOWN으로 나타난다.  여러 링크관련 고급 설정을 할 수 있는데 이 방법은 멘페이지(man ip-link)에서 확인할 수 있다.

[네트워크 연결 확인 : ip addr]
[root@vm-colt357 /]# ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.0.20/24 brd 192.168.0.255 scope global ens33
       valid_lft forever preferred_lft forever


위 결과는 네트워크 인터페이스에 할당된 IP 주소와 서브넷마스크, 브로드케스트 IP, 연결상태를 한눈으로 볼수 있는 결과이다. “-4”옵션을 사용한 것은 IPv4에 해당되는 내용만 보기 위함이다. ifconfig 명령어로 확인 가능한 정보이지만 좀더 깔끔하게 보여준다. ip 고급설정을 위해 사용할 수 있는데 그 방법은 멘페이지(man ip-address)를 확인하길 바란다.


2. ifconfig
    ifconfig는 현재 시스템에 장착되어 있는 네트워크 인터페이스를 설정하거나 확인하는 명령어이다. 서버가 통신을 하기 위해서는 네트워크 인터페이스(NIC, 흔히 랜카드)가 있어야 하는데, 이러한 네트워크 인터페이스의 네트워크 정보를 설정, 변경 및 확인하는 명령어가 ifconfig이다.

ifconfig로 확인 가능한 네트워크 인터페이스의 내용은 다음과 같다.

∙MAC 주소
∙eth0에 할당된 IP 주소
∙브로드케스트(BroadCast)
∙서브넷마스크(Subnet Mask)
∙MTU(Maximum Transfer Unit)
∙RX packets(부팅 후 현재까지 받은 패킷수)
∙TX packets(부팅 후 현재까지 보내진 패킷수)
∙Collisions
∙Interrupt 주소
∙현재 UP(사용가능) 되어 있는지 여부

3. netstat : 인터페이스 통계 및 기타 정보 확인
netstat는 현재 연결된 네트워크 연결과 라우팅 테이블, 인터페이스에 대한 통계, 마스커레이딩 연결, 멀티캐스팅 정보 등을 보여준다. 즉, netstat 명령으로 어떤 호스트(또는 서버)들과 어떤 서비스로 연결되어 있는지와 그 연결 상태는 어떠한가에 대한 정보들을 알 수 있다.

① 어떤 클라이언트와 연결되었는가?
② 어떤 서비스(www, ftp, mysql, ssh 등)로 연결되었는가?
③ 어떤 포트(port) 번호로 연결되어 있는가?(②의 서비스에 대한 포트 번호)
④ 연결상태(wait, listen, connect 등)는 어떠한가?
⑤ 네트워크 연결상태가 어떻게 되어 있는가?
⑥ 기본 게이트웨이의 설정이 제대로 되어 있는가?
⑦ route에서처럼 라우팅 경로는 어떠한가?

4. route : 라우팅 테이블 확인 및 설정
route는 라우팅 경로(다른 말로 “라우팅 테이블”)를 보거나 변경할 수 있도록 해주는 명령어이다. 주로 이더넷(Ethernet) 카드를 설정할 때 패킷들이 어떠한 경로로 외부로 나가야 하는지 알려주는 역할을 한다. 인터넷은 네트워크들이 게이트웨이를 통해 이리저리 연결되어 있는 커다랗고 복잡한 네트워크이다. 이러한 네트워크에서 지표가 되는 것은 오직 도메인 네임과 IP 주소 밖에는 없다. 따라서 호스트에 설정된 라우팅 테이블은 패킷들이 자유로이 이동할 수 있도록 한다. 

5. traceroute : 라우팅 경로 확인
어느 날 서버에 접속한 상태에서 다른 서버로 ssh 접속이 안 되는 것을 발견했다고 가정해 보자. 즉시 옆에 있는 166.104.50.152로 ping을 보내 보았으나 이것은 아무 문제가 없었다. 내부 네트워크가 잘 작동 중인데 외부로 연결이 안 된다면 외부로 연결된 어느 게이트웨이 중 하나가 잘못 됐을 가능성이 있다. 이를 확인해 보는 방법은 traceroute를 이용하는 것이다.
인터넷은 네트워크 하드웨어들이 게이트웨이를 통해서 서로 연결된 거대하고 복잡한 집합체이다. traceroute는 사용자가 원하는 호스트까지 패킷이 어떠한 경로로 전달이 되는지를 작은 ttl(time-to-live) 값과 돌아오는 'ICMP TIME_EXCEEDED' 응답을 통해 사용자에게 알려준다. 

6. tracepath : 경로 확인
tracepath는 패스를 가지고 있는 MTU를 통해서 목적 시스템까지의 경로를 알아내는 프로그램이다. 이 프로그램은 UDP 포트나 불규칙적으로(random) 몇몇의 다른 포트를 사용한다. 

7. ping : 원격 호스트 응답 테스트
컴퓨터의 네트워크가 정상적으로 동작중인지 확인해 볼 때 사용하는 도구이다. ping은 특정 호스트로 ICMP(Internet Control Message Protocol) 에코 메시지를 사용해서 원격 호스트가 다시 로컬 호스트로 응답하도록 한다.

8. arp : ARP 테이블 관리
arp는 “Address Resolution Protocol”의 약자로서 동일한 네트워크 내에 존재하는 호스트들의 IP 주소와 ethernet 주소(MAC 주소)를 확인하는 명령어이다. 즉, 특정 네트워크 내에 어떤 호스트들이 존재하는지를 확인할 수 있는 것이 바로 arp 명령어이다. arp는 이를 위해 리눅스의 /proc/net/arp에 기록된 ARP 관련 정보를 참조한다.

9. nslookup : 도메인 네임 서버 질의
nslookup은 인터넷 도메인 네임 서버에 사용자가 직접 도메인 이름을 질의할 수 있도록 해주는 프로그램이다. 이 프로그램을 통해 누구나 네임서버에 직접 질의하여 도메인 네임 서버가 가지고 있는 정보를 검색할 수 있는 것이다. 이를 통해 사용자는 도메인 네임 서버가 올바르게 설정되고 동작하고 있는지를 확인할 수 있다.

10. dig : 도메인 네임 서버 질의
dig(Domain Information Groper)는 지정한 DNS 서버의 설정 내용과 특정 도메인의 네임서버 설정 내용을 확인하는 명령이다. 즉, nslookup 명령과 거의 같은 역할을 한다. nslookup 명령과 host 명령과 마찬가지로 /etc/resolv.conf 파일에 정의되어 있는 네임서버를 기본 네임서버로 사용한다. 

11. host : 도메인 네임 서버 질
host는 도메인 네임 서버에서 도메인의 설정 정보를 찾기 위한 간단한 유틸리티이다. 이것은 보통 도메인 이름들을 IP 주소로 바꿔서 정보를 알려 주기 위해 사용된다. host 명령은 nslookup과 dig와 마찬가지로 /etc/resolv.conf 에 설정된 도메인 네임 서버를 기본 네임서버로 인식한다. 

'배워서 남주자 > Linux 명령' 카테고리의 다른 글

[split] TAR 분할 압축  (0) 2020.05.10
[SSL] 생성  (0) 2020.05.10
CentOS7 - 사용자  (0) 2020.05.10
YUM - (yellowdog updater modified)  (0) 2020.05.10
[RAID] 설정 정보 확인 및 mdadm 명령어로 Raid 구성하기  (0) 2019.11.17

Passwd 파일에서 사용자 계정만 확인하기
~] # cat /etc/passwd | awk -F: '{if($3>=1000 && $3<=60000)print $0}'
doly:x:1000:1000:doly:/home/doly:/bin/bash
wyjung:x:1001:1001:정우영:/home/wyjung:/bin/bash

cat 명령어를 사용하여 /etc/passwd 파일을 표준 출력(stdout)으로 출력하고 파이프(|)를 통해 awk(라인 단위 패턴 스캐닝 및 처리 언어) 명령의 표준 입력(stdin)으로 보낸다. -F 옵션을 사용하여 구분자를 “:”으로 지정한다. “:”으로 구분했을 때 3번째 항목($3)이 1000보다 크고 60000보다 적을 경우 라인의 모든내용($0)을 출력하라는 것이다. 
CentOS7 부터는 기본적으로 UID를 1000에서 60000까지 사용하도록 /etc/login.defs에 설정되어 있다



사용자 추가시 홈 디렉토리에 생성되는 파일
사용자 추가시 생성되는 홈디렉토리에는 다음과 같은 파일들이 생성되어 있을 것이다. 다음은 wyjung 사용자의 홈디렉토리를 확인해 본 것이다.


~] # ls -Al /home/wyjung/
합계 12
-rw-r--r--. 1 wyjung wyjung  18  6월 10 13:31 .bash_logout
-rw-r--r--. 1 wyjung wyjung 193  6월 10 13:31 .bash_profile
-rw-r--r--. 1 wyjung wyjung 231  6월 10 13:31 .bashrc
...
ls 명령어에 -Al옵션을 사용하여 wyjung 사용자의 홈디렉토리(/home/wyjung/)의 파일 및 디렉토리를 확인하였다. 다음 파일들이 있다.
.bash_logout : 로그아웃 할 때 실행되는 파일이다.
.bash_profile : 로그인시 실행되는 파일이다. 
.bashrc : .bash_profile에 의해 실행되며 주로 alias나 함수등을 설정한다.

위 3개의 파일은 사용자를 추가할 때마다 생성된다. 시스템에 따라 위 3개의 파일보다 더 많은 파일, 디렉토리가 생성될 수 도 있다. 이는 사용자 생성시 기본적으로 복사되는 파일 및 디렉토리이며, /etc/skel/ 디렉토리에 파일 및 디렉토리가 사용된다. 

~] # ls -Al /etc/skel/
합계 12
-rw-r--r--. 1 root root  18  6월 10 13:31 .bash_logout
-rw-r--r--. 1 root root 193  6월 10 13:31 .bash_profile
-rw-r--r--. 1 root root 231  6월 10 13:31 .bashrc
...

위 3개 또는 그 이상의 파일 및 디렉토리를 열어보면 사용자 홈디렉토리에 존재하는 파일과 내용일 동일한 것을 확인할 수 있다.
위 3개의 파일을 수정하면 사용자 생성시 수정된 파일을 복사해 사용하게 될것이다.


계정 정보 확인
~] # chage -l wyjung
마지막으로 암호를 바꾼 날                                       : 7월 16, 2014
암호 만료                                       :안함
암호가 비활성화 기간                                    :안함
계정 만료                                               :안함
...
chage 명령어에 -l 옵션을 사용하여 계정 만료일 등을 알 수 있다.

- 계정이 기간 만기되도록 함(E)
~] # usermod wyjung -e 2014-09-10
위와 같이 설정하면 wyjung 계정은 2014년 9월 10일에 만료되도록 하는 것이다.
- 계정을 잠금 / 해제
~] # passwd -l wyjung
wyjung 사용자의 비밀 번호 잠금
passwd: 성공
~] # passwd -u wyjung
wyjung 사용자의 비밀 번호 잠금 해제 중
passwd: 성공

위와 같이 passwd 명령어를 사용하여 -l 옵션으로 wyjung 사용자를 로그인 못하도록 잠금거나 -u 옵션을 사용하여 해제 할 수 있다.


[비밀번호 보안 정책]
많은 보안 권고사항을 보면 비밀번호는 적어도 3개월에 한번찍 변경하게 하고 있다. 여러 보안 점검에서 사용자 비밀번호를 3개월 마다 변경하게 강제하고 있고 모든 사용자에게 설정해야 한다. 앞에서 설명한 것은 사용자들 마다 비밀번호 강제 변경주기를 설정하였지만 다음과 같이 설정하여 기본적으로 적용할 수 있다.

/etc/login.defs 파일을 열어 다음과 같이 수정한다.

PASS_MAX_DAYS   90
PASS_MIN_DAYS   0
PASS_MIN_LEN    8
PASS_WARN_AGE   7

위 설정에 대한 의미는 다음과 같다.
PASS_MAX_DAYS : 암호를 변경하지 않고 사용할 수 있는 유효기간   기본 값은 99999일이며, 권장은 3개월(약 90일)이다. 
PASS_MIN_DAYS   : 암호를 변경할 수 있는 최소 기간이며   암호는 자주 변경해도 무관하니 제한이 없는 기본값 0으로 둔다.
PASS_MIN_LEN   : 암호 최소 길이이다.   암호 최소 길이는 기본 5자 이상이며, 권장은 8자 이상이다.
PASS_WARN_AGE   : 암호 유효기간이 끝나기 전에 경고 메시지를 보여줄  날수를 설정한다. 기본 7일이며 기본값을 유지한다.

그 밖에 /etc/login.defs 에는 메일관련(메일큐 디렉토리, 메일박스 디렉토리, 메일파일)설정과 사용자 UID범위, 시스템 사용자 UID범위, 그룹 GID범위, 시스템 그룹 GID범위, 사용자 삭제시 실행할 사용자 프로그램 지정, 사용자 생성시 사용자 홈디렉토리 생성 유무 및 UMASK등을 설정할 수 있다. 사용자 삭제시 사용자 그룹의 멤버가 없다면 그룹까지 삭제할지 유무도 여기서 설정한다. /etc/login.defs 파일을 열어보면 위 기능에 대해 상세히 설명되어 있다.

그룹(G) 탭을 확인해 보자.
시스템에 등록된 전체 그룹리스트가 나타나고 원하는 그룹을 선택하여 소속시킬 수 있다. 기본 그룹을 변경할 수 도 있다. 
위 설정을 명령어를 이용한다면 다음과 같이할 수 있다.

사용자가 속한 그룹 확인
다음 명령어로 특정 사용자가 속한 그룹을 확인할 수 있다.

~] # groups wyjung
wyjung : wyjung superuser

groups 명령어로 사용자가 속한 그룹을 확인하였다.

사용자가 속한 그룹 추가
다음 명령어로 사용자가 속한 그룹을 추가할 수 있다.

~] # usermod -a -G doly wyjung
~] # groups wyjung
wyjung : wyjung doly superuser

usermod의 -G 옵션을 사용하여 소속 그룹을 설정하였다. 만약 -G 옵션만 준다면 소속된 그룹이 “doly"로 변경될 것이다. -a (추가) 옵션을 주어 기존 그룹은 유지하면서 "doly"그룹에 추가하도록 한 것이다.


사용자가 속한 그룹 제거
사용자가 속한 그룹에서 특정 그룹만 제거하는 것은 아무리 찾아보아도 옵션을 제공하지 않았다. 다음과 같은 방법으로 제거할 수 있다.


~] # groups wyjung
wyjung : wyjung doly superuser wheel
~] # usermod -G superuser,wheel wyjung
~] # groups wyjung
wyjung : wyjung superuser wheel

위 예는 groups 명령어를 이용하여 소속된 그룹을 확인하였고 usermod의 -G옵션을 이용하여 사용자의 소속그룹을 재설정한다. groups명령으로 확인한 소속그룹중 제거하고자 하는 그룹만을 빼고 “,”로 구분하여 모두 입력한다. 이러한 방법으로 소속 그룹을 제거할 수 밖에 없다. 

사용자의 기본(primary) 그룹 변경
사용자의 기본그룹은 다음과 같이 변경할 수 있다.

~] # groups wyjung
wyjung : wyjung superuser
 ~] # usermod -g doly wyjung
 ~] # groups wyjung
wyjung : doly superuser

groups명령어 입력시 처음에 보여주는 것이 기본 그룹이다. 기본그룹을 바꾸기 위해 usermod의 -g 옵션을 사용하여 "doly"로 변경하였다. 변경된 기본그룹을 groups 명령어로 확인하고 있다.

 

RPM 기반 시스템용  패키지  "설치/삭제/업데이트"  도구

 

 

기능 명령어
패키지 설지 yum install 패키지명
패키지 삭제 yum remove 패키지명
패키지 업데이트 yum update 패키지명
패키지 정보확인 yum info 패키지명
패키지 검색 yum search 팰키지명
패키지 목록보기( 설치된 항목 + 설치가능 항목) yum list
설치된 패키지 목록 보기 yum list installed

1. 패키지  설치 확인

 

방법 1.   rpm 

rpm  -q  패키지명
rpm  -qa  | grep  패키지명

방법 2. yum

yum  list   installed   패키지명
yum  list   installed   |  grep  패키지명

2. YUM  저장소 - repository

base 설정이 있어 바꿀 필요는 없으나, 전송속도 또는  특별한 패키지를 설치하기위해 변경, 추가 할 수 있다.

[root@localhost log]# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.cdnetworks.com
 * epel: mirror.premi.st
 * extras: centos.mirror.cdnetworks.com
 * ius: mirrors.kernel.org
 * updates: centos.mirror.cdnetworks.com
repo id                               repo name                                                                    status
!base/7/x86_64                     CentOS-7 - Base                                                             9,363
!epel/x86_64                        Extra Packages for Enterprise Linux 7 - x86_64                      11,904
!extras/7/x86_64                   CentOS-7 - Extras                                                               447
!ius/x86_64                          IUS Community Packages for Enterprise Linux 7 - x86_64            380
!mariadb                             MariaDB                                                                            16
!nginx/x86_64                      nginx repo                                                                          78
!updates/7/x86_64                 CentOS-7 - Updates                                                         2,090
repolist: 24,278

3. yum   epel   저장소 추가

yum  epel (Extra  Packages  Enterprise Linux ) 저장소 추가
엔터프라이즈 리눅스를 위한 추가 패키지

[확인]
 [root@localhost log]# yum repolist
  ~~  repo id 리스트 중   epel  정보 유무 확인.

[설치]
[root@localhost log]# yum install epel-release
~~
Updated:
  epel-release.noarch 0:7-10                                                                                          

Complete!

 

 

 

 

 

 

[ RAID 확인 ]

Linux  서버에 장치/설정 된 RAID 장비의 구성 정보를 확인하는 방법으로  /proc/mdstat 정보로 확인할 수 있다.

 

RAID 어레이 상태를 확인하기

[root@localhost ~]# more /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda[0] sdb[0]
40692224 blocks 256k chunks

두개의 하드디스크 sda 와  sdb 디스크가 raid1 로 활성상태로 구성되어 있다.

실제로  df -h 와 같은 명령으로 확인해 보면 해다 디스크는 /dev/md0 디바이스로 마운트 되어 있는것을 확인할 수 있다.

포멧과 같은 명령도 해다 마운트 명으로 진행하여야 한다.

 

 

[ mdadm 명령으로 RAID 만들기 ]

 

mdadm 명령으로 RAID 스토리지 설정하기

mdadm 명령을 이용하여 여러개의 장치를 원하는 형식의 어레이로 구성할 수 있다.

 

(RAID 설정 파일 생성 하기)

[root@AP1 /]# more /etc/mdadm.conf 
DEVICE /dev/sdb /dev/sdc
ARRAY /dev/md0 devices=/dev/sdb,/dev/sdc

두개의 하드디스크 /dev/sdb dev/sdc 를 어레이 /dev/md0 로 구성한다.

 

(RAID 구성 명령어 실행하기)

[root@AP1 etc]# mdadm -C /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb /dev/sdc
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

(RAID 포멧하기)

[root@AP1 proc]# mkfs.ext4 /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 523776 blocks
26188 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912

Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

(생성된 RAID 상세정보확인하기)

[root@AP1 /]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sat Nov 16 17:41:05 2019
     Raid Level : raid1
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Sat Nov 16 17:43:50 2019
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : AP1:0  (local to host AP1)
           UUID : 06062d56:89418a5c:b1916725:708007bf
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  •  최근 30분 내에 수정된 파일

     find . -type f -mmin -30


  •  최근 5분 내에 수정된 파일 목록 상세

     find . -type f -mmin -5 | xargs ls -l


  •  24시간 이내에 변경된 php 파일을 찾는 명령.

     find . -name '*.php' -mtime -1 -print


  •  최근 7일 이전에 수정된 파일 찾기 (-exec rm -f {} \; 조합으로 과거 로그 지울때 유용)

     find . -name '*.php' -mtime +7 -print

     find . -name '*.php' -mtime +7 -exec rm -f {} \;

 

  •  홈 디렉토리 아래에서 크기가 5096kb 이상인 파일을 찾아 자세한 정보(ls -l)을 출력한다.

     [zany@zany-macbookpro ~]$ find ~ -size +5096k -exec ls -l {} \;

     -rw-r--r-- 1 root root 669319168 Mar 11 17:10 /root/valhalla-i386-disc2.iso

     -rw-r--r-- 1 root root 5563716 Feb 28 11:21 /root/.mozilla/firefox/kazb7qu2.default/Cache/D0709ED3d01

     -rw-r--r-- 1 root root 714907648 Mar 5 17:25 /root/images/nuxone/NuxOne_v2.1_RPMS_CD2.iso

     -rw-r--r-- 1 root root 596164608 Mar 5 17:01 /root/images/nuxone/NuxOne_v2.1_RPMS_CD1.iso

     -rw-r--r-- 1 root root 318918656 Mar 5 17:18 /root/images/nuxone/NuxOne_v2.1_RPMS_CD3.iso


  •  /usr 디렉토리 내에서 지난 24시간 동안 사용되었던 확장명이 jpg인 모든 파일을 찾아 그 내용을 자세히 출력 시켜준다.

     [zany@zany-macbookpro ~]$ find /usr -name "*.jpg" -atime -1 -exec ls -l {} \;


  •  dev 디렉토리 내에 빈 파일들을 찾는다.

     [zany@zany-macbookpro ~]$ find /dev -type f -empty


  •  현재 디렉토리(서브디렉토리 포함)에서 '2011-03-03' 이라는 문자열을 포함하고 있는 파일을 찾는다.

    [zany@zany-macbookpro ~]$ find ~/. -type f -exec grep '2011-03-03' {} /dev/null \;







+ Recent posts