현재 스킨에서 불편한게 많아 대대적인 수정 또는 워드프레스로의 이전을 고려하고 있습니다....

시점은 9~10월입니다.

 

 

블로그 이미지

늙은M군

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

,


최종 합격 메일 및 출력 가능

패스 시, 구글 마크 달린 백팩이랑 후드 택일해서 받을 수 있군요.

백팩 백오더 3-4주 걸린다고 해서 우선 대기중..



블로그 이미지

늙은M군

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

,

[ 구성 ] 

HAProxy 서버 ( Public VIP ) * 1EA

( CentOS 7 EPEL yum install HAProxy 1.5.18 )

하단에 공인망 스위치와 사설스위치 각각 1대씩.

사설단에 연결된 192.168.0.15 / 16  이  WEB1 , WEB2 

 

[ Configure 기본 ] 

# cat /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global                          # 프로세스 전체에 영향을 주는 내용
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2                        # Syslog. UDP 514 Open 필요.

    chroot      /var/lib/haproxy                #서비스 Jail 경로. 수퍼유저로 프로세스 실행시, 모든 동작은 이 안에서만 수행됌. 보안 상승.
    pidfile     /var/run/haproxy.pid            # 실행 피드명
    maxconn     4000                            # 프로세스 당 최대 연결 수치
    user        haproxy                         # Manage ID
    group       haproxy                         # Manage Group
    daemon                                      # BackGround Mode Process

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults                                #front , back , listen 에 관련된 전역 섹션
    mode                    http                   # http 프로토콜을 사용하는 로드밸런싱 모드
    log                     global                      # 로그는 global 의 설정에 따른다.
    option                  httplog                     # 기본 Log 는 SIP,DIP와 Name 만 표기하므로, 이 옵션을 사용하여 디테일을 높임.
    option                  dontlognull                 # 로그 비대화 방지를 위해, Probe(정찰,스캔)같은 잡다한 기록을 HAProxy Log 화하지 않는 옵션.
    option http-server-close                            # 클라이언트와 리얼서버 연결 종료시, 디폴트로 유휴대기하지 않고, 서버에서 Handshake 를 종료하여, 더 빠른 새로운 세션을 준비할 수 있도록 함. 디폴트 옵션에 선언되어 있어도, 인스턴스 별로 no옵션으로 제외처리 가능함.
    option forwardfor       except 127.0.0.0/8          # 서버에 대한 응답을 HAProxy 가 받기 때문에(VIP), 리얼서버 IP를 HTTP헤더에 표기하기 위한 옵션.
    option                  redispatch                  # mode HTTP에서 Cookie에 지정된 Real 서버가 다운되면, 외부 클라이언트가 쿠키를 플러시하기 전에는 서비스에 문제를 일으킬 수 있으므로, 이 옵션을 줘서, 프록시의 지속성을 무시하고 쿠키, 세션 재분배를 실행하게 된다. retries 값이 0보다 커야 한다.
    retries                 3
    timeout http-request    10s                         # Request 시의 헤더에만 적용. DoS 방어를 위해, HTTP 요청 타임아웃시간 설정. ( 클라이언트의 연결 타임아웃과는 무관한, 서버(HAProxy) 의 옵션이다 )
    timeout queue           1m                          # 서버의 maxconn 에 도달시, 무한정 보류상태로 두지 않고 HTTP 503 응답을 보내면서 연결을 버리기까지의 시간.
    timeout connect         10s                         # TCP 패킷손실을 막기 위한 Real 서버로의 연결 최대 지연시간 설정. ( Backend 에 적용되나, 전역 설정 가능 )
    timeout client          1m                          # 외부 클라이언트의 요청이나 데이터와의 연결 최대 시간. request 와 같이 사용하여, 서버 안정성을 구현.
    timeout server          1m                          # 서버가 데이터를 승인하거나, 전송해야 할 때의 연결 최대 시간.
    timeout http-keep-alive 10s                         # 클라이언트의 요청에 따른 응답 전송 후, 다음 요청까지의 대기 시간. http-request 가 선행함.
    timeout check           10s                         # timeout server 와 동일하거나 작은 값을 가져야 한다.
    maxconn                 3000                        # 프로세스당 최대 연결 개수

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80                     # 클라이언트의 연결을 받는 부분 처리. WAF 기능에 가깝다.
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static                   # acl 에서 정의한 style 들을 backend static으로 보낸다.
    default_backend             web                             # 위의 조건 이외는 backend web 으로 보낸다.

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static                                  # 프론트엔드에서 acl 연결하는 실제 리얼서버 설정.
    balance     roundrobin
    server      static 192.168.0.15:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend web                     # 실제 접속시 로드밸런싱하는 서버
    balance     roundrobin                      # 순차적으로 로드밸런싱
    server  web1 192.168.0.15:80 check
    server  web2 192.168.0.16:80 check

#내부 사설서버들 반드시 방화벽 해제하던지, 포트 허용해둘 것.


#listen                         # 프론트/백엔드의 연결의 포트/옵션등을 정의함. TCP 제어나 Proxy 에 주로 사용.


listen stats # "stats"라는 이름으로 listen 지정
    bind *:9000 # 접속 포트 지정
    stats enable
    stats realm Haproxy Statistics  # 브라우저 타이틀
    stats uri /haproxy_stats  # stat 를 제공할 URI
    #stats auth Username:Password # 인증이 필요하면 추가한다

 

HAProxy Configure 메뉴얼 보시면 아시겠지만, 정말 Flow 이해에 좋습니다. 

너무나도 다양한 옵션이 있으나, 우선 이 정도로도 "동작" 은 합니다.

참고 해주시면 되겠습니다.

 

블로그 이미지

늙은M군

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

,

https://dev.mysql.com/doc/mysql-repo-excerpt/5.6/en/linux-installation-yum-repo.html


이 링크 하나면 yum 완벽합니다.

아래의 repo 파일 만든 후 yum clean all , yum repolist 확인 필수!



저는 CentOS 7.6 Lastest 버전이므로 6--> 7로 변경 했습니다


root@DB2:/etc/yum.repos.d# vi mysql.repo


[mysql57-community]

name=MySQL 5.7 Community Server

baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

enabled=1

gpgcheck=0

#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql



#yum clean all

#yum repolist

#yum install mysql-community* ( mysql-community-server 만 설치해도 되긴함 ) 

혹시 gpgkey 에러가 나서 server가 설치 안 된다면 yum install --nogpgcheck 옵션을 넣어주면 됩니다.



Dependencies Resolved


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

 Package                                 Arch               Version                   Repository                     Size

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

Installing:

 mysql-community-libs                    x86_64             5.7.26-1.el7              mysql57-community             2.2 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-libs-compat             x86_64             5.7.26-1.el7              mysql57-community             2.0 M

     replacing  mariadb-libs.x86_64 1:5.5.60-1.el7_5

 mysql-community-server                  x86_64             5.7.26-1.el7              mysql57-community             166 M

Installing for dependencies:

 mysql-community-client                  x86_64             5.7.26-1.el7              mysql57-community              24 M

 mysql-community-common                  x86_64             5.7.26-1.el7              mysql57-community             274 k


Transaction Summary

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

Install  3 Packages (+2 Dependent packages)


Total download size: 194 M



추가팁 ) 위의 레포지토리로 가령 MySQL 5.7.26 을 설치했을 때
PHP를 Source 로 Config 하기 위한 설정 부연합니다.
which 나 PATH 등으로 경로 찾아서 prefix 추가하시면 되는데.. yum 설치시 경로 그냥 포함시켜서 공유하겠습니다.

( PHP 7.3.4 Stable Source Tar 로 설치 시. 7버전대면 크게 다를 건 없을 겁니다. ) 


 ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysqli=/bin/mysql_config --with-pdo-mysql=/bin/mysql --with-zlib-dir=/usr/local --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-libxml-dir=/usr/lib --with-xmlrpc --with-freetype-dir=/usr/lib --with-gmp --with-gd --with-gdbm --with-bz2 --with-pic --with-openssl --with-gettext --enable-wddx --enable-sockets --enable-ftp --enable-bcmath --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-calendar --enable-sysvshm --enable-sysvsem --enable-soap --enable-exif --enable-sigchild  --enable-xml --disable-debug --with-iconv --with-curl --with-mcrypt --enable-fpm


--with 모듈이 문제가 있을 경우 /lib , /lib64 등의 idconfig 나 PATH 확인해주세요.



'Linux ( Cent OS ) > MySQL' 카테고리의 다른 글

[실무 예시] MySQL Table 비우기  (0) 2019.05.13
0. Log Parameters 간단 요약( Mysql 5.1 ) - 작성중  (0) 2019.05.02
7. Binary Log 삭제  (0) 2019.05.02
블로그 이미지

늙은M군

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

,

HAProxy 를 모르는 분은 없을 정도로 유명한 소프트웨어 L4~L7 로드밸런서 소개입니다.

컨피그 구성 및 사용방법은 대단히 많으나, 체계적인 플로우 이해에 도움이 되는 부분이 많을 것 같아, HAProxy Configure 메뉴얼이 필요할 것 같아 포스팅을 작성합니다.


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

Summary
-------

1.    Quick reminder about HTTP
1.1.      The HTTP transaction model
1.2.      HTTP request
1.2.1.        The request line
1.2.2.        The request headers
1.3.      HTTP response
1.3.1.        The response line
1.3.2.        The response headers

2.    Configuring HAProxy
2.1.      Configuration file format
2.2.      Quoting and escaping
2.3.      Environment variables
2.4.      Time format
2.5.      Examples

3.    Global parameters
3.1.      Process management and security
3.2.      Performance tuning
3.3.      Debugging
3.4.      Userlists
3.5.      Peers
3.6.      Mailers

4.    Proxies
4.1.      Proxy keywords matrix
4.2.      Alphabetically sorted keywords reference

5.    Bind and server options
5.1.      Bind options
5.2.      Server and default-server options
5.3.      Server DNS resolution
5.3.1.      Global overview
5.3.2.      The resolvers section

6.    HTTP header manipulation

7.    Using ACLs and fetching samples
7.1.      ACL basics
7.1.1.      Matching booleans
7.1.2.      Matching integers
7.1.3.      Matching strings
7.1.4.      Matching regular expressions (regexes)
7.1.5.      Matching arbitrary data blocks
7.1.6.      Matching IPv4 and IPv6 addresses
7.2.      Using ACLs to form conditions
7.3.      Fetching samples
7.3.1.        Converters
7.3.2.        Fetching samples from internal states
7.3.3.        Fetching samples at Layer 4
7.3.4.        Fetching samples at Layer 5
7.3.5.        Fetching samples from buffer contents (Layer 6)
7.3.6.        Fetching HTTP samples (Layer 7)
7.4.      Pre-defined ACLs

8.    Logging
8.1.      Log levels
8.2.      Log formats
8.2.1.        Default log format
8.2.2.        TCP log format
8.2.3.        HTTP log format
8.2.4.        Custom log format
8.2.5.        Error log format
8.3.      Advanced logging options
8.3.1.        Disabling logging of external tests
8.3.2.        Logging before waiting for the session to terminate
8.3.3.        Raising log level upon errors
8.3.4.        Disabling logging of successful connections
8.4.      Timing events
8.5.      Session state at disconnection
8.6.      Non-printable characters
8.7.      Capturing HTTP cookies
8.8.      Capturing HTTP headers
8.9.      Examples of logs

9.    Supported filters
9.1.      Trace
9.2.      HTTP compression
9.3.      Stream Processing Offload Engine (SPOE)

10.   Cache
10.1. Limitation
10.2. Setup
10.2.1. Cache section
10.2.2. Proxy section

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

'Linux ( Cent OS )' 카테고리의 다른 글

haproxy.cfg 기본 설정  (7) 2019.06.24
Docker 기본 커맨드 #01 - 컨테이너 생성 및 삭제  (0) 2019.06.11
블로그 이미지

늙은M군

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

,

docker 의 Container 는 host ( 로컬콘솔) 의 cgroup 에 따라가는터라

host커널의 systemctl 을 사용하기가 기본적으로는 쉽지가 않아서 커스텀이 필요함.

systemctl 사용가능하도록 패키징된 git 버전을 쓰는게 편하고..


Container 안에서 nfs client 세팅하고 외부의 NFS mount 하는것도 쉽지가 않음

보통 docker run 으로 이미지 생성 시 -v 옵션으로 host에 기 마운트된 NFS Mountpoint 를 그냥 적재시키는 방법을 사용했습니다.



참고로 오래된 예전 자료 정리한거라서.. 더 좋은 방법 있으면 알려주세요 ㅎㅎ 



NFS 마운트하기


1) DOCKER HOST 에서 /mnt 라는 마운트포인트로 외부 NFS 마운트.

( 리모트 NFS 마운트를 위해서는 RPCBIND 실행을 위해 

클라이언트도 nfs-util 패키지를 설치해 주어야 함.. 설치만..  안그러면 알수없는 타입 뜰겁니다. ) 


[root@docker ~]# mount -o nolock 192.168.0.10:/nfs_data /mnt

192.168.0.10:/nfs_data  6.7G  1.7G  5.1G  25% /mnt   // df -h 로 마운트 확인



2) Container 생성 시 -v 옵션으로 HOST 의 NFS Mountpoint 를 같이 적재 하기

# docker run -i -t --name centos_nfs  -v /mnt 4dd69d0e6123


run : container 만들기

-i : interective 

-t : tty 

--name : 컨테이너 이름지정




3) 컨테이너 확인

[root@aec58ea41a6c /]# df -h

Filesystem      Size  Used Avail Use% Mounted on

overlay          13G  2.2G   11G  18% /

tmpfs          1000M     0 1000M   0% /dev

tmpfs          1000M     0 1000M   0% /sys/fs/cgroup

/dev/sda3        13G  2.2G   11G  18% /mnt

shm              64M     0   64M   0% /dev/shm

tmpfs          1000M     0 1000M   0% /proc/acpi

tmpfs          1000M     0 1000M   0% /proc/scsi

tmpfs          1000M     0 1000M   0% /sys/firmware


이 방법의 문제는? -v 옵션으로 적재한 마운트포인트의 추적이 어렵다는 것인데

( #docker volume ls 명령어로 보이지가 않음 ) 


관리를 위해 Volume name 을 지정해서 운용하면 됩니다.

#docker volume NFS

[root@docker /]# docker volume ls

DRIVER              VOLUME NAME

local               NFS


#docker run -i -t --name "test3" -v NFS:/mnt 4dd69d0e6123

Localhost의 /mnt 를 마운트하는 컨테이너를 생성 하라는 커맨드입니다. 



( 계속 ) 




블로그 이미지

늙은M군

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

,



가령 웹서버 준비해놓고 나중에 템플릿 이미지처럼 써 먹기 위해 이미지로 저장하고 싶을 경우 commit 옵션을 사용하면 됩니다.



Q) -p 옵션으로 포트포워딩 및 생성한 새 컨테이너에 

- yum install net-tools 과 yum install httpd 설치한 후 

이 상태를 image 로 저장하고 싶다.

#docker commit [ Container Name ] [ Image TAG ]

-a "TEST"  : 서명 붙이기

-m "name" : 이름 붙이기

[root@docker ~]# docker commit -a "TEST" centos_apm apache:0.1

sha256:4dd69d0e612362ccf64d455d658d6a309bc17fcb55db6f707e125e3e6bc87662

[root@docker ~]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

apache              0.1                 4dd69d0e6123        9 seconds ago       335 MB

docker.io/centos    latest              9f38484d220f        2 months ago        202 MB

[root@docker ~]#


블로그 이미지

늙은M군

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

,
OS : CentOS 7.6 Lastest minimal 


[ Docker 설치 ] 
#yum install epel-release
#yum install docker

설치 후 서비스 시작 및 자동서비스 등록
#systemctl start docker
#systemctl enable docker


[ 이미지 리스트 ] 
#docker search [ OS ]  ( ubuntu , centos .. .. ) 


[ 이미지 다운로드 ] 
#docker pull [ SEARCH Image 명 ] 


[ 다운로드한 이미지 리스트 확인하기 ] 
#docker images
REPOSITORY         TAG           IMAGE ID           CREATED           SIZE
docker.io/tutum/centos latest 99a633ad346f 3 years ago 297 MB


[ 컨테이너 생성하기 ] 
#docker run -i -t --name [ 이름 ] [ Image ID ] [ Shell ] 

-i : 인터렉티브
-t : tty ( 터미널 콘솔 사용 ) 
--
image id :  images ID 나 이름을 직접 입력 가능
shell : 해당 image 에 있는 Shell 로 시작 가능
--name [ Alias ] 원하는 머신명 생성 가능

-p  [Origin Port | Docker Port ] : 콘솔 호스트(로컬)의 포트를 만드는 컨테이너의 포트로 리다이렉팅 한다.
( 웹서버 같은 경우 서비스 하려면 -p 80:80 같은걸로 주면 되겠다.  iptables 의 Docker Chian 에 알아서 추가해주는 명령이다 ) 

#[root@docker ~]# docker run -i -t --name CentOS-TEST01 99a633ad346f /bin/bash
[root@90bd5ec70287 /]#

간단하게 만들어지고 접속 되었음.
컨테이너를 콘솔 접속중에 원격처럼 exit 를 쳐서 빠져나오면, 컨테이너가 꺼진다. 주의.
 
[root@90bd5ec70287 /]# exit
exit
[root@docker ~]#
[root@docker ~]# docker attach CentOS-TEST01
You cannot attach to a stopped container, start it first

콘솔(로컬머신) 에서 접속한 컨테이너를 빠져 나올땐 ctrl + p 다음에  ctrl + q 를 눌러서 빠져 나오자.


[ 실행중인 컨테이너 확인하기 ] 
#docker ps

[ 특정 컨테이너 시작하기 ] 
#docker start image id 또는 설정한 name 입력

[root@docker ~]# docker start CentOS-TEST01
CentOS-TEST01
[root@docker ~]#

[ 컨테이너 재시작 하기 ]
[root@docker ~]# docker restart CentOS-TEST01
CentOS-TEST01
[root@docker ~]#

[ 켜진 컨테이너에 접근하기 ]
[root@docker ~]# docker attach CentOS-TEST01
[root@90bd5ec70287 /]#


[컨테이너 끄기]
[root@docker ~]# docker stop CentOS-TEST01
CentOS-TEST01

[컨테이너 삭제]
이미지 다운 후 생성했던 컨테이너 ( name : CentOS-TEST01 ) 이 삭제됌
[root@docker ~]# docker rm CentOS-TEST01
CentOS-TEST01

[컨테이너 이미지 삭제]
컨테이너 이미지는 LAYER 단계적인 증분 업데이트이므로, 자식 컨테이너들을 모두 삭제해야 삭제할 수 있다.
( docker ps -a 에서 남아있는 자식이 없어야 함 )

[root@docker ~]# docker rmi 99a633ad346f  ( IMAGE ID ) 
Untagged: docker.io/tutum/centos:latest
Untagged: docker.io/tutum/centos@sha256:b4de18abfef698f6ae3a4921d6f58edef8fc770c6ee5da7636fa4ea51ab545c5
Deleted: sha256:99a633ad346ff9debae2e18ef28e36da72c4535d936500e497cd34377173d4b6
Deleted: sha256:e72d160abbd5585d403996036763c88e9624c70d9d80d6fb0e1ccb2c49b8a26d
Deleted: sha256:8f201733668a3ce8ce77a0dc8b2d7249cdc70b1022a7fc78650527a6f3ec09b6
Deleted: sha256:8fdcefb6d553194a6881387055c1d4110bc385d3dbf4d51b0aa07f1251e877ef
Deleted: sha256:8f98c28a55c2e54cf8b8815d843cbfaf1495dd0bf601774f27da1cbe80183225
Deleted: sha256:6163e9854471a9b6c817b9514d6b8d1cf7be7684fa0c52d76d42188e28785859
Deleted: sha256:85946201865d0456e3d2db4df8699ecc017f2a8df599a1c0b241d30e8f942ed6
Deleted: sha256:3b6d6efff38bc7552b4e42d78a142460dd122efe3f86a921298e82d60f770c85
Deleted: sha256:28508c96f9bffc44568bdcf1d0cd20a0357a106a18440302ba67ee4c68a3ccad
Deleted: sha256:33b3813290610f3880214f35c32d2175adfcc75500cae48dfdbcbcf31928a1ac
Deleted: sha256:ce3c560f1cfc18c6febc0a8ed4f8330d32df64e52fa0b34b82d42ad35406ac39
Deleted: sha256:cf032be00d9aedaf94363af683f83fda44140490759c1c048584dc9b3dd1f34e
Deleted: sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
[root@docker ~]#

깔끔하게 초기상태로 돌아왔다.


'Linux ( Cent OS )' 카테고리의 다른 글

haproxy.cfg 기본 설정  (7) 2019.06.24
0. HAProxy 1.8 Configure Manual ( 번역 중 .. )  (0) 2019.06.19
블로그 이미지

늙은M군

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

,

알아두면 편리할 간단한 스크립팅 입니다.


특정 유저 리스트만 서버에 생성한다던지 삭제할 때

미리 텍스트파일에 해당 유저의 계정명만 적어두고, 스크립트로 일괄 처리하기 입니다.

당연히 방법은 여러가지가 있겠지만 for 문 사용해서 작성해보겠습니다.


[ 특정 유저 생성하기]

1) userlist.txt 파일에 생성할 유저를 나열합니다. 

vi userlist.txt

test1

test2

test3

.

.



2) useradd.sh 라는 파일을 작성 합니다

vi useradd.sh

#!/bin/sh                        // 스크립트 종류 정의

for i in `cat userlist.txt`            // cat userlist.txt 의  출력 결과를 i 변수에 선언함

do                // i 변수에 들어갈(in)  `cat userlist.txt` 가 끝날 때까지 반복

useradd -d /home/$i $i                // 해당 명령어를 실행

done                    // cat userlist.txt 의 결과가 끝나면 종료.



3) 결과 확인

cat /etc/passwd

apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

guest:x:1002:1002::/home/guest:/bin/bash

test1:x:1003:1003::/home/test1:/bin/bash

test2:x:1004:1004::/home/test2:/bin/bash

test3:x:1005:1005::/home/test3:/bin/bash


아주 간단 합니다.

삭제도 마찬가지 겠죠?

do done 안에 들어갈 실행 명령어를 userdel $i 로 해주면 되겠습니다. 






블로그 이미지

늙은M군

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

,

제 스타일식 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군

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

,