언제나 새버전의 OS를 접하는 것은 난감함의 연속인것 같습니다.

이것 저적 작업 하다 보면 보면 참고할 만한 자료가 없어 애먹는 경험이 많아서 최신버전 보다 한단계 낮은 버전을 선택 하곤 하는데도 했는데도 몇번의 시행착오를 격었습니다.

특히 MySQL 5.7 버전은 이전 버전과 몇가지 바뀌어서 약간 많은 애를 먹었습니다.


얼마전 지인으로 부터 윈도우+MSSQL에서 돌아가고 있는 스트럿츠 기반의 어플리케이션을 Linux  + MySQL  기반으로 옮겨 달라는 의뢰를 받았습니다.

서버를 납품하는 업체의 엔지니어에게 OS를 설치 해달라고 요청 한 후 몇일이 지나서 IP가 할당되었다고 계정과 암호를 받아 접속 해 보니 CentOS 7 64bit 버전을 풀 인스톨 해 놓은듯... 

에초에 모든게 세팅된 상황에서 소스와 DB 만 옮겨 주겠다고 신신당부하고 시작했는데... 결국엔 재설치를 위해 CentOS 7 64bit Minimal  iso를 USB에 부팅 이미지로 만들어 서버실에 방문하고야 말았습니다. ㅠㅠ v


CentOS 7 minimal  설치는 간단한 구글링 으로도 많이 나오니 참고 하시기 바랍니다.

(https://joungkyun.gitbooks.io/annyung3-installation-guide/content/chapter1.html)


네트워크 설정은 가능한 install 하면서 GUI화면에서 설정하는게 편합니다.

부팅되면 네트워크가 활성화 되어 있는지 먼저 확인 했습니다.

[root@localhost ~]# ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=41 time=56.3 ms

64 bytes from 8.8.8.8: icmp_seq=2 ttl=41 time=56.4 ms

64 bytes from 8.8.8.8: icmp_seq=3 ttl=41 time=55.0 ms

64 bytes from 8.8.8.8: icmp_seq=4 ttl=41 time=55.4 ms

^C

--- 8.8.8.8 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 55.082/55.832/56.425/0.633 ms

[root@localhost ~]#


네트웍이 정상적이지 않은경우 /etc/sysconfig/network-scripts/ifcfg-eth0 을 확인해 보시기 바랍니다. (ifcfg-eth0 명은 사용자의 네트워크 인터페이스 구성에 따라 다를 수 있습니다.)

많은 변수들이 있지만 중요한 것은 아래 네가지 정도 확인하시면 됩니다.

BOOTPROTO="static"

ONBOOT="yes"

IPADDR="192.168.0.240"

NETMASK="255.255.255.0"

GATEWAY="192.168.0.1"

DNS1="8.8.8.8"

제가 작업한 서버는 망을 분리해서 사설 IP를 사용하고 있습니다.


이제 몇가지 기본적인 utility 를 설치합니다.

[root@localhost ~]# yum -y install bind-utils wget elinks vim net-tools
[root@localhost ~]# yum -y install yum-utils sysstat system-config-firewall-tui
[root@localhost ~]# yum -y install man man-pages kernel-doc

이제 ifconfig로 네트워크 상태를 확인할 수 있습니다.


다음은 방화벽 설정

CentOS 7 부터는 iptables를 좀더 간단하게 사용할 수 있도록 새로운 firewalld 를 제공한다고 합니다.

자세한 내용은 구글링 해보면 많은 문서가 나오니 참고 하시고

/etc/firewalld/zones/public.xml 파일에 설정를 살펴보면 기본적으로   dhcpv6-client와 ssh만 허용되어 있습니다.

우선은 모든 외부 접속을 차단하고 내부망, 특정 사무실과 제가 작업할 장소에서만 SSD 접속이 가능하도록 설정하겠습니다.

/etc/firewalld/zones/public.xml 내용입니다.

<?xml version="1.0" encoding="utf-8"?>

<zone>

  <short>Public</short>

  <description>For use in public areas. You do not trust the other computers on ...</description>

  <service name="dhcpv6-client"/>

  <rule family="ipv4">

    <source address="192.168.0.0/24"/>

    <service name="ssh"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source address="xxx.xxx.xxx.xxx"/>

    <service name="ssh"/>

    <accept/>

  </rule>

  <rule family="ipv4">

    <source address="yyy.yyy.yyy.yyy"/>

    <service name="ssh"/>

    <accept/>

  </rule>

</zone>

192.168.0.0/24 이렇게 대역(192.168.0.*)으로 룰을 추가 할 수 도 있고 xxx.xxx.xxx.xxx 단일 IP만 기술 하면 허용할 IP를 특정 할 수도 있습니다.

service name 으로 허용 할 수도 있고 port로도 허용할 수있습니다. 향후 필요에 따라 서비스 또는 포트를 추가 할 것입니다.

자세한 것은 [CentOS 7 minimal 설치 #4] 방화벽(firewalld) 설정 하기편을 참고하거나

 구글링 GO~ (https://www.lesstif.com/ws/네트웍-구성과-방화벽/firewalld)


설정을 변경 했으면 방화벽을 재시작 하여 설정을 반영합니다.

[root@localhost ~]# systemctl restart firewalld


이제 외부 접속 할 수 있는 ssh데몬을 설치 합니다.

[root@localhost ~]# yum -y install openssh-server openssh-clients

(SSH 데몬은 위에서  설치한 net-tools 패키지에 포함되어 있습니다.)



사용자 추가

[root@localhost ~]# groupadd -g 1000 dev <-- 사용자그룹 추가

[root@localhost ~]# cat /etc/group

root:x:0:

bin:x:1:

daemon:x:2:

... 생략 ...

dev:x:1000: <-- 새로 추가한 사용자 그룹

[root@localhost ~]# useradd -g 1000 -u 1000 webservice <-- 사용자 추가

[root@localhost ~]# passwd webservice <-- 생성한 사용자 비밀번호 설정

webservice 사용자의 비밀 번호 변경 중

새  암호:

새  암호 재입력:

passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.

[root@localhost ~]#


서비스 환경이 여러대의 머신이라면 가능하면 그룹아이디(gid)와 유저아이디(uid)를 동일하게 맞춰주는 것이 좋습니다.

시스템간에 파일을 이동하거나, 네트웍 스토리지등을 사용할 때 gid와 uid가 동일하면 추가로 오너쉽이나 퍼미션을 지정하지 않아도 됩니다.


root 권한 ssh 로그인 금지 설정

사용자들이 ssh를 이용해 root 권한으로 접근을 허용하는 경우 외부에서 리눅스의 취약점을 이용해 root 권한을 탈취하려고 시도하는 경우가 매우 많습니다.

조금 불편하더라도 root 권한은 콘솔에서만 접근하거나, ssh로 접근하는경우 다른 계정으로 로그인해서 Switch User (su -) 명령으로 권한을 획득해서 사용하는 것이 좋겠습니다.

[root@localhost ~]# vi /etc/ssh/sshd_config

... 생략 ...

#PermitRootLogin yes <-- 기존에 주석으로 되어 있던 것을 해제하고 yes => no 로 바꾼다.

PermitRootLogin no

... 생략 ...


자 이제 외부에서 접속 할 수 있는 준비는 완료 하였습니다.

+ Recent posts