제 스타일식 VM ( CentOS 7.6 ) 세팅 후 초기 설정하는 내용입니다.

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


[ 업데이트 및 기본 사용자 설정 ] 
## SSH Root 직접 로그인 금지
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config

## 일반유저 계정 생성
useradd -d /home/test test
echo "1234" | passwd test --stdin

## Selinux DISABLE
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

## Minimal Package 에서 개발자도구와, 기본 net-tools , 모니터링 도구 설치, 커널 및 보안 업데이트
yum -y groupinstall "Development Tools" 
yum -y update && yum -y upgrade
yum -y install epel-release 
yum -y install net-tools sysstat ntsysv lshw perl vim-enhanced wget htop iftop telnet

## Hostname 을 원하는 내용으로 지정
echo "TEST01" > /etc/hostname

## DNS Resolve 파일 설정 ( DHCP 서버를 쓰거나, ifcfg에 DNS1,DNS2 세팅했다면 필요 없음. networkmanager 기반의 네트워크 세팅일 경우에도 필요없음 ) 
echo -e "nameserver 168.126.68.1\nnameserver 8.8.8.8" > /etc/resolv.conf

## 로컬 시간 설정
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

## 명령어 알리아스 추가
echo "alias vi='vim'" >> /root/.bashrc

## root 터미널 색깔 변경
echo "PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h:\[\e[33m\]\w\[\e[0m\]# '" >> /root/.bash_profile

## SAR 수집주기 변경
perl -pi -e 's/10/1/g' /etc/cron.d/sysstat

## 로긴시 출력 메세지
echo "
//////////////////////////////////////////////////////////////////////////////
TEST VM Machine #01 
//////////////////////////////////////////////////////////////////////////////" > /etc/motd
echo "

## Syslog 설정(sulog 는 secure 로그로 대체가능하지만, 별도 설정 했습니다)
echo "SULOG_FILE /var/log/sulog" >> /etc/login.defs
echo "authpriv.info /var/log/sulog" >> /etc/rsyslog.conf
echo "local1.* /var/log/bashlog" > /etc/rsyslog.d/90-bashlog.conf

systemctl restart rsyslog.service
chmod 600 /var/log/sulog
echo "*.crit;*.warn;*.alert;*.emerg;*.err;authpriv.* /var/log/rsyslog" >> /etc/rsyslog.conf
systemctl restart rsyslog.service
perl -pi -e 's/rotate 4/rotate 24/g'  /etc/logrotate.conf

## CentOS 에서 rc.local 자동 사용시 유저권한에 +x 추가.
chmod u+x /etc/rc.d/rc.local

## 로그클리어
dmesg -c

[ /etc/profile 에 history 타임스탬프 추가. 빨간 \는 "를 입력하기 위한 정규식 이스케이프. ] 
echo -e "export HISTSIZE=9999\nexport HISTFILESIZE=9999\nexport HISTTIMEFORMAT=\"%Y-%m-%d [%H:%M:%S]\"  \n" >> /etc/profile
source /etc/profile

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


블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

너무 노후서버여서 센토7의 기본 gui 환경을 감당 못한다던지..

( 대표적으로 부팅후 자꾸 모니터 주파수 범위 초과 뜨는 서버들 ) 


의 경우에는

Install 창에서 Tab 키 누르면 커널라인이 활성화 되는데

거기서 quite 뒤에 linux text 입력 후 진행하면, text install methoud 로 진행할수 있습니다.


단, 디스크 파티셔닝은 불가한 부분은 참고.



블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

디스크 용량 확보를 위해, 특정 경로의 용량을 순차적으로 나열

[root@localhost ~]# df -Th

Filesystem     Type      Size  Used Avail Use% Mounted on

/dev/sda3      ext4      3.3T  2.2T  935G  70% /

devtmpfs       devtmpfs  7.7G     0  7.7G   0% /dev

tmpfs          tmpfs     7.8G     0  7.8G   0% /dev/shm

tmpfs          tmpfs     7.8G  818M  7.0G  11% /run

tmpfs          tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup

/dev/sda2      ext4      477M  134M  315M  30% /boot

tmpfs          tmpfs     1.6G     0  1.6G   0% /run/user/1000



1) 해당 경로 전체 용량

[root@localhost]# du -sh ./

1.1T    ./


2) 해당 경로 하위 디렉토리와 각 대용량 순 순차 정렬

[root@localhost]# du -sh ./* | sort -rh

23G     ./lv.lma
22G     ./lv.lwb
19G     ./lv.ssc
17G     ./celine.lmd
14G     ./lv.lwsme
14G     ./celine.ssf
14G     ./bluebellg
13G     ./lv.lih
13G     ./fendi.ssi
12G     ./fendi.ssgmj
12G     ./bally.lmk
11G     ./lv.sil
11G     ./lv.lbm
9.5G    ./celine.ljn
.
.


sort 옵션에서 n과 h의 차이점

-n 으로 정렬하면 1G 1K 1M 등의 순차정렬에서 문제가 좀 있어 -h 로 함

  -h, --human-numeric-sort    compare human readable numbers (e.g., 2K 1G)

  -n, --numeric-sort          compare according to string numerical value


이는 ls 등에서도 동일합니다.

File Size 를 K/M/G 등으로 편하게 정렬하기

# ls -laSh   

-S : Sort

-h : Human numerical compare.

-a : 숨겨진 파일

-l : 상세출력





블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

리눅스에서 데이터 가공할 때 | 는 아주 많이 쓰입니다. 

금번 예시는 grep -E  옵션으로 정규표현식 확장해서 사용하면 됩니다.

Regexp selection and interpretation:

  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)


| (파이프) 는 or 의 의미인건 잘 아실겁니다.

주의점) 공백의 차이가 있으므로 주의



사용 예시)

#grep -E '//|zone' /etc/named.conf

= // 주석 라인과, zone 으로 시작되는 라인을 순차적으로 출력함.


[ 원본 ] 

// 테스트#1

#cat /etc/named.conf

zone "1111.co.kr" in {

        type master;

        file "1111.co.kr";

};

zone "1234.co.krr" in {

        type master;

        file "1234.co.krr";

};

// 테스트2


zone "2345.co.kr" in {

        type master;

        file "2345.co.kr";

};

zone "2222.com" in {

        type master;

        file "2222.com";

};


#grep -E "//|zone" /etc/named.conf


// 테스트#1

zone "1111.co.kr" in {

zone "1234.co.krr" in {

// 테스트2

zone "2345.co.kr" in {

zone "2222.com" in {


출력값에서 지저분한 { 를 제거하고 싶으면 grep -v 옵션 이나 awk 로..


#grep -E "//|zone" /etc/named.conf | awk -F{ '{ print $1 }'

// 테스트#1

zone "1111.co.kr" in

zone "1234.co.krr" in

// 테스트2

zone "2345.co.kr" in

zone "2222.com" in



깔끔하다.


블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

Network 설정 파일인 /efc/sysconfig/network-scripts/ifcfg-eth0 에 대해 간단히 짚어보고 넘어가겠습니다.

네트워크의 기본적인 설정은 /etc/sysconfig/network 와 이 두 파일에서 한다고 보면 됩니다.

근래 CentOS 는 GUI 환경이 지원되기 때문에, 그곳에서 설정할 수도 있으나 개인적으로는 추천하지 않습니다.

다양한 환경과 상황을 위해서는 역시 커맨드 모드에 익숙해지도록 합시다.

 

1. /etc/sysconfig/network

리눅스를 로그인하면,

[root@myunginy ~]#

처럼 뜨는데요. myunginy < 가 현재 네트워크의 네임 명을 의미 합니다.

@앞은 사용자 계정을 의미하구요.

뒤의 ~는 현재 사용자가 위치한 곳을 가리킵니다.

 

해당 네트워크의 네임명을 이 파일에서 변경할 수 있습니다.

 

NETWORKING=YES

HOSTNAME= [바꿀 네임명]

 

2. /etc/sysconfig/network-scripts/ifcfg-eth0

만약 랜카드를 다중으로 써서 eth0 말고 1..2..3 이 존재할 경우 그에 맞춰서 수정하시면 됩니다.

수정 후 네트워크 서비스를 재시작해 주어야 적용 됩니다.

( 단일 네트워크일 경우 service network restart 또는 /etc/rc.d/init.d/network restart )

( 혹여 여러 랜카드 중 지정해서 재기동해야 할 경우에는 ifdown 후 ifup 또는 ifconfig [ eth() ] down/up 명령으로 기동할 수 있습니다. )

 

DEVICE=eth0        :: 장치 인식명
TYPE=Ethernet        :: 장치의 타입 ( 일반적으로 이더넷 외에 볼 일이 없습니다 ) 
ONBOOT=yes        :: 부트 시 랜카드를 자동으로 올릴 것인지의 유/무
NM_CONTROLLED=yes        :: Network Management 의 사용 유/무
BOOTPROTO=none        :: IP 할당 타입. none ( 없음 ) | static ( 수동 ) | dhcp ( 동적 )
HWADDR=00:0c:29:f0:1d:a5        :: 하드웨어 장비의 MAC Address
IPADDR=192.168.0.5    :: IP 수동 지정일 경우, 이 곳에 기입.
PREFIX=24    :: 넷마스크의 255.255.255.0와 의미하는 바가 비슷하지만, 둘 다 설정되어 있을 경우 이 쪽이 우선됩니다.
GATEWAY=192.168.0.1        :: 출구. 네트워크가 나갈 Gateway
DEFROUTE=yes        :: 시스템에 셋팅된 Default Routing의 사용 유/무
IPV4_FAILURE_FATAL=yes         :: yes로 설정 시, dhclient 자동 할당 실패 이후 네트워크가 바로 자동 종료됩니다.
IPV6INIT=no        :: ipv6 의 사용 유/무
NAME="System eth0"        ::네트워크 장치의 별칭을 지정합니다.
NETMASK=255.255.255.0        ::서브넷 마스크
USERCTL=no        ::일반 유저의 네트워크 컨트롤 유/무


위 모든 것이 나와있을 수도 있고, 일부가 빠져 있을 수도 있습니다만, 기본적인 구동에는 서너 가지만 필요합니다.

UUID , PEERDNS 등의 옵션이 더 있을 수도 있으나 특별한 상황 외에는 입력하지 않아도 무난 합니다.

DNS1,2 = 도 별도로 입력 가능 합니다.

 

 

다음 장부터 본격적인 기초 명령어를 들어가보도록 하겠습니다.

지금까지 진행한 부분은, 이해가 안 되어도, 나중에 자연스럽게 알게 될 겁니다.

 

리눅스 각 데몬들의 환경 설정에 대한 모든 옵션은, /usr/share/doc/initscripts-(커널버젼:tab키로 자동완성 요망)/sysconfig.txt 파일에서 / 로 검색하여 확인해 볼 수 있습니다.

 

(계속)

 

 

 

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

#01에서 putty 로 접근까지는 좋았는데, 정작 들어간 다음에 네트워크 확인차

ifconfig 라는 명령어를 쳐보도록 합시다.

별도의 옵션이 없으면, 현재 연결된 모든 네트워크의 상태를 출력해 줍니다.

1단일 랜카드일 경우 eth0 과 lo ( 루프백 ) 을 출력하는데, eth0 만 보기로 하지요.

 

ifconfig eth0   ( 만약 네트워크가 수동 상태라 보이지 않는다면 ifconfig eth0 up / down 명령어로 조절 가능 합니다 )

만약, 아무런 정보가 기입이 되어 있지 않다면 ifconfig eth0 [ IP | netmask | up ] 을 입력하여 직접 불러올릴 수도 있습니다. ( 콘솔 )

 

putty 로 외부 리모트 중에 ifconfig eth0 down 나 service network stop 같은 명령어를 치면, 그 순간 네트워크가 꺼지면서, 원격도 꺼져 버리니 주의!

 

우리는 일단 네트워크가 되는 상태니까 putty 로 리눅스에 원격 접근한 거지요? ^^

 

하나 더 참고를 드리자면, 클래스 C..그러니까 255.255.255.0 의 환경에서는 ifconfig 넷마스크를 입력할 필요가 없습니다만, 그 이외의서브네팅이 존재한다면 필히 기입해 주어야 한다는 것!

 

 

그림과 같이 네트워크가 연결이 되지 않을 경우

1. 네트워크 구성정보가 정확한지 확인합니다.

2. Default Gateway ( 나가는 출구 ) 가 제대로 설정되었는지 확인합니다.

입니다. route 명령어로 우리는 현재 default gw 가 192.168.0.1 로 설정되어 있는 것을 볼 수 있습니다.

ping 8.8.8.8   로 외부 통신이 가능한지 체크해 봅시다.

 

만약 디폴트 게이트웨이가 제대로 설정되어 있지 않아 핑이 나가지 않는다면

route add default gw x.x.x.x  로 경로를 잡아 주도록 합니다.

 

물론 첫 장에 말했지만, 일반유저는 시스템 및 네트워크의 속성을 변경할 수 없습니다. root 의 권한에서 가능 합니다.

 

자, 네트워크 준비가 다 되었다면 ping 으로 이제 도메인을 쳐 봅시다. www.google.com

ping www.google.com

어? 이게 무슨 문제일까요. ping 8.8.8.8 은 잘 되는데 www.google.com 은 되지가 않습니다  !

이는 당연하게도, 우리는 숫자가 아닌 문자 google.com 을 입력했는데, 그걸 IP로 매칭해주는 설정

셋팅되어 있지 않아서 그렇습니다. 그래서 네트워크는 되는데 왜 인터넷이나 패키지 다운로드가 되지 않느냐고

질문하시는 초보자분들이 생각보다 많습니다 ^^ ( 패키지 미러링 사이트들도 문자니까요 )

 

해당 문제는 도메인 네임 ( Domain name ) 의 매칭 문제로써 DNS 가 필요합니다.

DNS 는 자신의 컴에 세팅할 수도 있지만, 일단은 기본적으로 KT의 공인된 수퍼 DNS 서버를 거치도록 합시다.

편집기로 /etc/resolve.conf 라는 파일을 열어서 nameserver 에 168.126.63.1 을 추가해 주면 됩니다.

TIP) 중간까지 치다가 TAB 키를 누르면 -맞다면- 뒤가 자동완성이 됩니다. 유용하니 익숙해지도록 합시다.

 

vi 편집기 사용능력이 리눅스의 절반이라고 해도 좋을 정도인데요.. 꼭 익숙해 지도록 합시다.

나중에 따로 정리 하겠습니다.

 

#는 주석처리를 의미합니다. 밑줄로 이동하여 소문자 <편집 모드-차후 설명-> 에서 소문자 o 를 누르면

그 아랫줄로 이동하면서 <수정 모드> 가 됩니다. 거기서 위처럼 입력해 줍니다.

위의 의미는 문자열을 입력할 시, 해당 168.126.63.1 서버에 저장된 DNS ZONE 정보의 내용을 참조하겠다는 소리입니다.

KT의 해당 서버에 www.google.com = IP 라는 ZONE 매칭 정보가 있다고 일단 생각하시면 되겠습니다.

저장은 : 입력후에 wq 를 입력 후 엔터치시면 됩니다.

 

자 다시 ping www.google.com 을 쳐 봅시다.

오 이제 됩니다 *^^*

ping 은 디폴트로 무제한 체크하므로 중간에 ctrl+c 로 중단하도록 합시다.

도메인 네트워크 체크는 host [ 도메인명 ] 으로도 가능 합니다.

자, 이제 우리는 인터넷을 마음껏 사용할 준비가 된 것입니다.

ip뿐만 아니라 도메인까지 문제가 없어야 한다는걸 깨달으셨으면, 이제 본격 커맨드를 시작할 준비가 된 것입니다.

 

ifconfig 에서의 ethernet 설정 환경 파일

CentOS 에서는 기본적으로 /etc/sysconfig/network-scripts/ifcfg-eth0 파일 입니다.

기본적으로 네트워크를 시작할 때 해당 환경 파일에서 로드 합니다.

(위에서 설정한 ifconfig eth0 123.456.789.000 이런 세팅은 리부팅되면 사라져 버려요 -ㅅ- )

다음 #03 장에서 파일의 내부 속성을 살펴보도록 하겠습니다.

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,

리눅스 연습을 할 때에도, Console.. 그러니까 리눅스 깔린 메인에서 작업하지 말고

보통 SSH(22) 를 사용한 원격 리모트를 하게 되며, putty 를 사용합니다.

putty connection manager 라는 tool을 이용하시면 여러 서버를 관리하실 때 유용합니다.

 

Port 는 별도로 설정한 포트가 있다면, 그것을 사용해도 됩나다.

( 리눅스의 SSHD 설정은 기본이 보통 22므로, 별도로 설정했다면 수정해주어야 합니다. iptables 에서 혹여 해당 포트가

막혀 있을 때에는 역시 포워딩도 같이 해주어야 합니다 )

차후 재실행시 설정의 번거로움을 피하고 싶으시다면, 위의 manager 툴을 이용하시거나, 위의 세션 저장을 하시면 됩니다.

 

한글 지원하는 리눅스를 사용시에는 문자셋으로 인해 글씨가 뷁어체(;)가 나올 수 있으므로 그럴 경우에는

유니코드를 UTF-8 로 변경해주도록 합니다.

 

나머지는 자신의 상황에 맞는 커스터마이징에 가까우므로 보통은 크게 손댈 일이 없습니다.

 

처음 접근시에는 SSH의 인증키 관련 허용 여부를 물어보는데 그냥 OK 해주시면 됩니다.

( 허용시 다음부터는 해당 연결에 인증이 성립하였으므로 , 물어보지 않습니다 )

보안상, root 로 바로 접속 하지 말고, 일반 유저로 로그인을 하는 버릇을 들이도록 합니다.

( SSHD config 에서 root 로그인 허용/비허용을 설정 할 수 있습니다 )

 

 

 

 

일반 유저인 myunginy 로 접속 성공한 화면입니다.

유저 확인용으로 whoami ( Windows 와 동일합니다 ) / id 라는 명령어로 현재 자신의 그룹ID 및 보안문맥의 상태를 체크 가능 합니다. 일반 유저는 당연히 시스템의 중요한 부분에 권한(Permit)의 문제로 수정 및 변경을 할 수 없습니다.

 

일반 유저 -> root ( 수퍼 유저. 관리자 - 윈도우즈의 Administrator ) 로 올라 가려면,  su - 라고 입력을 한 후 Passwd 를 입력 하면 됩니다.

 

이상 리눅스에 원격 접근하는 방법이었습니다.

( #02 에서 계속 )

블로그 이미지

늙은M군

개인 저장공간입니다. 해당 일부 과정들을 공인 인터넷 환경에서 악성적으로 응용할 시 피해가 발생할 수 있으며, 그에 대해 책임은 사용자에게 있습니다!! 주의해주세요.

,