리눅스는 Debian 리눅스를 기준으로 합니다.


/etc/mysql/my.cnf 파일수정


bind-address = 0.0.0.0


위 bind-address = 0.0.0.0 을 추가해줍시다.



사용자 작성, 권한 부여


# mysql -u root -p MariaDB [(none)]> create database etssun_db; // 데이터베이스 생성 MariaDB [(none)]> create user 'etssun'@'%' identified by 'root'; // etssun 이라는 계정을 비밀번호를 root로 생성 MariaDB [(none)]> grant all privileges on etssun_db.* to etssun@'%'; //etssun_db 라는 데이터베이스의 권한을 etssun 에게 줌 MariaDB [(none)]> flush privileges; // 설정 바로적용 # mysqladmin -u root -p reload # service mysql restart // 서비스 재시작


방화벽(Firewall) 설정


   # iptables -I INPUT 1 -p tcp --dport 3306 -j ACCEPT
   # iptables -I OUTPUT -p tcp --dport 3306 -j ACCEPT
   # iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT



클라이언트에서 정상적으로 접속되는지 확인


JDBC 커넥터는

https://downloads.mariadb.org/connector-java/

위 링크에서 다운로드 가능합니다.


다운로드 받은 커넥터는 라이브러리에 추가해준뒤 데이터베이스 커넥션 소스에서 드라이버를 임포트 해줍니다.

import org.mariadb.jdbc.Driver;


connectToDB 라는 예제 메소드를 작성해보았습니다.

    private static Connection connectToDB() {
        try {
            Class.forName("org.mariadb.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
                String jdbcUrl="jdbc:mariadb://localhost:3306/testdb?autoReconnect=true";
                String userId="root";
                String userPass="root";
                Connection con = DriverManager.getConnection(jdbcUrl,userId,userPass);
            if (!propsInited) {
                long timeout = getWaitTimeout(con);
                if (timeout == -1) {
                } else {
                    connectionTimeOut = timeout;
                }
                propsInited = true;
            }
            return con;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }


String 문자열을 선언해서 유저 아이디와 유저 패스워드를 더욱 간단히 설정할 수 있게 소스를 구성하였습니다.

jdbc연결 Url에서 jdbc:mysql 가 아닌 jdbc:mariadb로


역시 mysql의 업그레이드 버전이라 그런건지 소스 구성도 mysql JDBC연동 소스와 매우 흡사하다고 볼 수 있습니다.

SNAT(Source Network Address Translation, 출발지 주소 변환)


# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to 203.230.7.1

  -192.168.0.0/24가 출발지 주소이고 eth0으로 나가는 패킷에 대하여 203.230.7.1 로 SNAT 시켜준다.



DNAT(Destinaton Network Address Translation, 목적지 주소 변환)


# iptables -t nat -A PREROUTING -d 203.230.7.1 -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1

  -eth0의 203.20.7.1주소로 들어오는 목적지 포트번호가 80인 tcp패킷에 대하여 192.168.0.1로 DNAT 시켜준다

LINUX PAM

사용자를 인증하고 그 사용자의 서비스에 대한 액세스를 제어하는 모듈화된 방법. PAM은 관리자가 응용포로그램들의 사용자인증방법을 선택할 수 있도록 해준다. 즉, Linux System에 대한 권한, 설정등을 하는데 있어서 유연성, 보안성을 제공하기 위한 소프트 웨어라고 생가하면 된다.


관련 디렉토리

/etc/pam.d – 서비스+시스템의 인증 설정 파일

/lib/x86_64-linux-gnu/security - PAM인증 모듈(리눅스 버전에 따라 다를 수 있음)



PAM인증 설정 파일의 구조


[Auth Type] [Control Flag] [Module_Path] [Module_Argument]

Auth Type

auth : 이 모듈타입은 사용자 인증의 두가지 면을 제공한다. 첫째는, 응용프로그램이 사용자에게 패스워드를 물어보거나 다른 확인 방법을 사용하도록 해서 그 사용자가 자신이 주장하는 사람이 맞는지 확인하는 것이다. 두번째는, 그룹 멤버쉽을 주거나 (앞서 이야기한 /etc/groups파일에 있는 내용을 통해서) credential(신임)속성을 통해 다른 권한을 주는 것이다.

account : 이 모듈은 인증이 아닌 계정관리를 수행한다. 이것은 보통 시간/날짜나 현재의 시스템 자원 상황(최대 사용자수)이나 사용자의 위치('root'는 콘솔에서만 로그인이 가능하다)등에 따라 서비스에 대한 접근을 허가하거나 제한하는 것이다.

password : 사용자와 연관된 인증토큰 (패스워드)들을 갱신할 때 필요하다. 보통, challenge/response 방식에 기반한 인증모듈 종류별로 각각 하나의 password모듈씩이 존재한다.

session : 서비스를 사용하기 직전/직후에 필요한 작업과 관련이 있다. 이러한 것들은 사용자와 교환할 어떤 데이터들의 opening/closing과 관련한 정보들의 기록, 디렉토리의 마운트 등이 해당된다.

Control Flag : 통제를 담당하는 부분으로 PAM에 무엇을 해야할 지를 알려준다. 4가지의 형식이 있다.

required

성공 : 다음 모듈을 실행(영향 X)

실패 : 다음 모듈을 실행(다른 모듈이 성공을 해도 무조건 실패를 반환/최종 실패)

sufficient

성공 : 다음 모듈을 실행하지 않고 중단(최종 성공)

실패 : 다음 모듈을 실행(다른 모듈에게 영향을 주지 않음)

requisite

성공 : 다음 모듈을 실행(영향 X)

실패 : 다음 모듈을 실행하지 않고 중단(최종 실패)

optional

성공, 실패에 중요치 않고 모듈을 실행

주요 모듈


pam_permit.so

-무조건 성공 반환

-auth type 모두 가능

EX)auth sufficient pam_permit.so //인증에 있어서 해당 계정과 비밀번호에 대해서 일치하는지 유무를 보지않고 무조건 성공


pam_deny.so

-무조건 실패

-auth type 모두 가능

-실패 시 각기 인증 종류에 따라서 다른 결과를 리턴하나 무조건 실패


pam_access.so

-Login Access Control Table

-로그인 시 접근제어 리스트를 이용하여 허용과 차단설정

-/etc/security/access.conf 사용

-auth type모두 가능

-리턴 값은 /etc/security/access.conf에 따라 달라짐

/etc/security/access.conf 필드 설정

[permission] : [users] : [origins]

permission : 권한(+허용,-거부)

users : 계정, 그룹, ALL

origins : IP, HOST, 네트워크 대역, ALL

EX)ssh에서 192.168.0.10에서 들어오는 IP차단

/etc/pam.d/sshd

auth required pam_access.so

/etc/security/access.conf

-:ALL:192.168.0.10

+:ALL:ALL


pam_time.so

-시간을 이용하여 인증 모듈을 사용

-auth type은 account만 가능

-/etc/security/time.conf를 이용하여 제어

-계정에 대한 비밀번호와 무관하게 들어오는 계정을 시간을 이용하여 차단, 허용

/etc/security/time.conf 필드 설정

[services] ; [ttys] ; [users] ; [times]

services : 적용할 서비스

ttys : 적용할 터미널 방식

users : 계정, 그룹, *

times : 시간과 분, 날짜 기록(시간은 24시로 HHMM)

EX)ssh에서 test라는 계정에 대해서 수요일 오전 9시부터 오후5시까지 접근허용, 나머진 불가

/etc/pam.d/sshd

account required pam_time.so

/etc/security/time.conf

sshd;*;test;we0900-1700


pam_listfile.so

-파일에 있는 목록을 이용하여 접근제어

-auth type모두 가능

-Module-Argument사용

-옵션, Item, TIME, Sense, file, onerr, apply, quiet등이 있음

Item

=파일에 있는 목록을 어떠한 종류의 항목으로 할 것인지

tty | user | rhost | ruser | rgroup | shell

file

=어떤 경로에 파일이 위치하는지 지정

Sense

=파일의 목록을 item에 따라서 해당 목록에 있는 값과 일치하는 경우 allow이면 내용을 보여주고 deny이면 거부

onerr

=에러가 발생시 어떻게 처리 할지를 경정

=succed | fail

=옵션을 사용할 경우 파일의 경로를 찾아 갔을 때 지정한 파일이 경로에 존재하지 않을 경우 모듈의 값을 성공으로 할 것인지 실패로 할 것인지 설정

=Sense가 allow이면 onerr는 fail

EX)ssh를 사용할 수 있는 계정을 test로만 설정

/etc/pam.d/sshd

auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/list.list

/etc/security/list.list

test


pam_secceed_if.so

-if문을 사용하듯이 사용

-옵션 값이 사용됨

-auth type 모두 가능

-옵션: user, group, shell, uid, gid, home, service

field [관계연산자] 값

EX) user = test // 계정이 test라면

uid = 500 // uid값이 500이라면

gid >= 500 // gid값이 500이상이라면

user ingroup test // 해당 계정이 test그룹안에 포함되어 있다면

user notingroup test // 해당 계정이 test 그룹안에 포함되어 있지 않다면

use_uid // 현재 사용하는 계정을 이용

quiet // 실패시 기록 남김

auth required pam_succeed_if.so user = test


pam_rootok.so

-root 계정일 시 무조건 성공 반환

-root 계정이 아닐 시 무조건 실패

-auth type은 auth만 가능

EX)su에서 root에서 다른 계정으로 넘어갈 시 비밀번호에 대해서 묻지않게 설정

/etc/pam.d/su

auth sufficient pam_rootok.so


pam_wheel.so

-계정이 wheel그룹안에 포함되어 있다면 성공 그렇지 않으면 실패

-auth type은 auth, account가능

-계정 그룹을 이용하여 접근 제어하고자 할 경우 많이 사용


pam_env.so

-환경 변수에 대한 설정을 하여 성공, 실패

-환경 변수에 대한 적용/ 미적용 (기본값은 미적용)

-기본적으로 무조건 성공

-auth type은 auth, session가능


pam_fprintd.so

-패스워드 프롬프트를 대신하는 인증 서비스

-현재는 사용하지 않음.

-무조건 실패


pam_unix.so

-현재 사용하는 패스워드 인증 모듈

-기존 유닉스 계열의 운영체제의 패스워드 인증 모듈

-/etc/passwd, /etc/shadow 파일을 참조하여 패스워드 인증.



PAM을 응용한 예시

proftpd

보안을 위해 ftpusers를 사용하지 않고 root만 로그인 가능하도록 설정.


[root]#rm -rf /etc/ftpusers


[root]#vim /etc/proftpd/proftpd.conf

DefaultRoot ~ //주석 제거

RootLogin ON //추가


AuthOrder mod_auth_pam.c* mod_auth_unix.c //주석 제거


[root]#vim /etc/pam.d/proftpd

#auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed //주석

auth required pam_nologin.so //추가


[root]#vim /etc/pam.d/login

#auth required pam_nologin.so //주석 제거


[root]#touch /etc/nologin




안녕하세요. 이번에는 DHCP 서버를 구축해보도록 하겠습니다.

DHCP의 네트워크 이론에 대해서는 네트워크 이론 탭의 DHCP 를 확인 부탁드리겠습니다.


그럼 시작하겠습니다.


먼저, Windows Server 2016에서 역할 및 기능 추가에 들어가주세요.



DHCP 서버를 체크하시고 다음을 눌러주세요. 그다음 전부 기본값으로 다음(N) 을 눌르시고,




설치를 진행해줍시다.



서버관리자의 도구에서 DHCP를 클릭해줍시다.



DHCP -> 서버(Computer) -> IPv4 우클릭 -> 새범위를 눌러줍시다.


* 범위란 DHCP를 통해 IP를 부여해 줄 범위(구역)을 뜻합니다.



자신만의 DHCP 범위 이름을 지정해줍시다.

저는 etsun_dhcp 로 지정하겠습니다.



여기서 범위 설정으로, 시작 IP 주소로는 가장 처음 DHCP 서버에 연결된 클라이언트에게 줄 IP부터 끝인 10.0.0.200 까지를 순차적으로 배분합니다.


10.0.0.1 은 DHCP 서버의 IP주소이므로, 충돌이 나면 통신불능에 빠지니까 시작 IP주소를 사용 가능한 IP주소의 가장 처음 시작IP인

10.0.0.2 를 시작으로, 적당하게 10.0.0.200 까지로 저는 설정하겠습니다.


서브넷 마스크 프리픽스는 24로, 255.255.255.0 을 설정하겠습니다.


다 설정하셨다면 다음을 눌러줍시다.



위에서 설정한 IP주소 시작부터 끝까지의 범위중 배분을 하지않을 IP주소 범위를 정하는 곳 입니다.


여기서 만약에 시작 IP주소를 10.0.0.100, 끝 IP주소를 10.0.0.200 으로 지정하게된다면,

IP 배분이 10.0.0.100부터 10.0.0.200 은 안됩니다. 그만큼 이 기능은 유용하게 사용이 가능합니다.

저는 사용하지 않겠습니다만, 사용하실분을은 자율적으로 사용해주셔도 좋습니다.



IP주소 임대기간을 설정하는 곳 입니다.

DHCP에서의 임대란 무엇인지에 대해서는 네트워크 이론탭의 DHCP를 확인해주세요.


저는 기본값인 8일을 사용하겠습니다.



지금바로 DHCP 옵션을 구성해줍시다.


여기서는 기본 게이트웨이를 설정하게됩니다.


게이트웨이는 추후 네트워크 이론에서 자세히 설명하겠지만, 여기서 간단히 설명하자면 IP주소가 가장 첫번째로 통신을 시도하는 구간 이라고 생각하시면 됩니다.


여기서 게이트웨이가 10.0.0.1로 되어있다면, 해당 DHCP 서버에서 IP를 받은 PC는 기본 게이트웨이가 10.0.0.1 로 잡혀서 다른 네트워크와 통신하기 위해서는 첫번째로 통신을 시도하는 구간인 10.0.0.1을 통해서 지나가야 합니다.


이해하기 어렵겠지만, 추후 다시 설명하겠습니다. 일단 저는 기본 게이트웨이를 설정하지않겠습니다.

( DHCP 서버의 네트워크 주소와, 분배할 네트워크 주소가 똑같기 때문에 현재는 필요하지 않습니다. )



DNS 서버를 설정할 수 있는 곳 입니다.

DHCP를 통해 기본 DNS 주소를 설정할 수 있습니다.


우측 중하단에서 기본 DNS 서버로 지정하기 원하시는 IP 주소를 입력뒤에 오른쪽에 활성화되는 추가 버튼을 누르시면 추가가 됩니다.


현재 Windows Server에는 DNS 서버가 구축되어서, 자동적으로 10.0.0.1이 입력되었습니다. 저는 여기서 아무런 설정도 건들지않고 다음을 누르겠습니다.




WINS 서버 IP를 DHCP를 통해 부여하실 일이 있다면, 이 기능또한 위에 기본 DNS 주소 설정처럼 설정하시면 됩니다.


저는 아무런 설정을 하지않고 다음을 누르겠습니다.



지금 활성화를 하겠습니다. 그리고 뜨는 창에서는 마침을 눌러주세요.




정상적으로 범위가 등록되었는지 확인해줍시다.



이제 Windows 7 클라이언트로 이동하겠습니다.



네트워크 인터페이스 속성의 IPv4에서 IP 주소 설정부분을 모두 자동으로 체크해주고 확인을 눌러줍시다.



그리고 cmd에서 ipconfig /renew 명령어를 이용하여, IP주소를 새로 받아오고 IPv4 주소가 정상적으로 불러와진다면 DHCP 서버 구축을 정상적으로 완료하신겁니다.



이번 포스팅은 여기까지입니다. 감사합니다.




먼저, 간단히 설명하자면 자동으로 IP 주소를 할당해주는 프로토콜 이라고 이해하면 됩니다.


사내에서 A라는 회사원이 10.10.0.1 의 IP주소를 사용해야 하는데, B라는 회사원이 실수로 10.10.0.1으로 IP주소로 설정하면, A회사원과 B회사원의 IP주소가 충돌되어, 통신불능 상태에 빠지게됩니다.

이러한 현상을 방지하기위해 DHCP서버를 구축해서 자동으로 아이피를 부여해주고 회수하는 과정을 필요로 하게된 것 입니다.


가장먼저 DHCP서버에서 먼저 해야하는 일은 임대(Lease) 입니다.


임대란? 우리가 생각하는 그 임대 맞습니다. 빌려주는 것.


DHCP 서버에서 IP를 주는 범위를 설정할 수 있는데,

10.0.0.2 에서 10.0.0.200을 임대하라고 설정되어있으면, 위 사진처럼 PC1에 10.0.0.2 를 할당해주고, PC2에 10.0.0.3을 할당해줍니다.


가장 적은수의 IP를 먼저 임대해주는 것 입니다.


그럼, 말그대로 임대이므로 기간이 지나게되면 이 IP를 회수해야 합니다.


DHCP서버에서 설정해놓은 임대기간을 초과하면, IP는 다시 DHCP서버로 돌아가게됩니다.

혹은 DHCP클라이언트가 종료되었을때도 설정된 IP는 다시 DHCP서버로 돌아가게됩니다.


DHCP서버로 IP가 다시 돌아가게된다면 이것은 반환(Release) 입니다.


하지만 갱신(Renewal) 이라는것이 있습니다.


임대기간이 끝나게되면 IP가 서버로 돌아가게되는데, 만약 임대기간을 2시간으로 설정해놓고 DHCP클라이언트가 2시간이상 사용중이면, 이 IP는 2시간째에 IP가 저절로 서버로 돌아가서, IP가 사라지므로 인터넷이 끊기게 됩니다.


이러한것을 임대 갱신 (Lease Renewal) 이라고 합니다.


위처럼 임대기간을 2시간으로 설정해둔다면, 50%인 1시간째 남았을때 한번 갱신을 시도하게됩니다. 여기서 갱신에 성공하게된다면 그 시간을 기준으로 다시 2시간의 시간이 충전되게 됩니다.


하지만, 50%일때 갱신에 실패하게된다면, 약 85%의 시간이 지났을때 다시 갱신을 시도합니다.

이때도 마찬가지로 갱신에 성공하면 이 갱신성공 시간을 기준으로 다시 시간이 충전되게 됩니다. 



DHCP서버에서는 이러한 과정이 계속해서 이루어져야 합니다.


감사합니다.




DDNS(Dynamic Domain Name System) 이란 무엇일까요?


먼저 DNS 는 외우기 어렵고 읽기어려운 IP 주소를 간단히 문자화 해주는 기능이라고 생각하시면 됩니다.

예를들어 188.175.132.19 라는 IP 주소가 있는데 이 IP 주소를 항상 외울 수는 없으므로, www.example.com 이런 형태로 바꾸어 주는것이 DNS 입니다.


그럼 ping www.example.com 을 하면, 188.175.132.19 라는 IP 주소로 PING 이 전송되게 됩니다.


그럼 DDNS 는 무엇일까요?


IP 주소를 문자로 변경해주는게 DNS인데, 만약 이 IP주소가 유동 IP주소라면 어떻게될까요?


www.example.com 이 188.175.132.19 라는 IP주소를 가르키는데, 이 IP주소가 유동이라서 설정된 DNS 서버와는 다른 값인 175.132.159.12 로 IP가 바뀌었다면,


www.example.com 과 통신을 하였을때 정상적인 통신이 불가능할 것 입니다.



지금까지 DDNS의 설명에 따르면, 위 그림과 같습니다.


기존 WEB 서버의 IP주소가 188.175.132.19 였는데 아이피가 175.132.159.12로 바뀌면서


DNS 서버에 등록된 www.example.com 가 188.175.132.19의 IP주소로 되어있기 때문에, www.example.com 과 통신을 요청해도, 이미 IP가 바뀌어버린 WEB 서버와는 통신이 불가능합니다.



이러한 문제점때문에 DDNS라는게 탄생하게됩니다.


IP가 바뀌어도 DDNS로 설정한 도메인값은 바뀌지 않기때문에, IP가 유동IP여도 용이하게 사용이 가능합니다.



포스팅은 여기까지입니다. 감사합니다.




가장먼저 DNS(Domain Name Systems) 이란 ?


복잡한 IP 주소를 간단히 문자화 해주는 것 이라고 간단히 생각해두시면 됩니다.

예를들어,


https://www.naver.com 네이버 홈페이지 서버의 IP 주소는 125.209.222.141 입니다.


125.209.222.141 을 주소창에 치고 접속해도 네이버에 정상적으로 들어가지게됩니다.

평소에 네이버에 접속하기위해 http://125.209.222.141 이렇게 주소창에치고 들어가기에는 IP 주소를 외우기 힘들어져서 DNS 서버를 구축한뒤 사용하는 것 입니다.


그럼 이러한 DNS 서버를 구축해봅시다.


- 웹페이지는 구성하지 않을것이며, 단순히 IP 주소를 문자로 바꿔주는 DNS 서버를 구축합니다.


가장먼저 Windows Server 2016 에 로그인해주세요.



서버관리자에서 역할 및 기능 추가를 눌러줍시다.



다음



다음


다음



DNS 서버 누르면 뜨는 기능추가 클릭



체크확인뒤 다음



다음




다음



설치를 누르면 DNS 서버 도구 설치가 시작됩니다.



서버관리자 -> DNS 클릭



DNS -> WIN-XXXXXXXXXXX -> 정방햑 조회 영역 우클릭뒤 새 영역(Z) 클릭



다음



주 영역 A레코드를 만들기위해서 주 영역(P)를 체크후 다음 눌러줍시다.


다른 서버의 DNS 서버 데이터를 복사할 일 없기때문에 주 영역을 만들어줍시다.



저는 DNS 서버의 주소를 etssun.com 으로 지정하겠습니다.


www.test.com 이런 형식으로 앞 www (World Wide Web)은 붙이지 말아주세요. 레코드 만들때 수정할 수 있습니다.

작성하신뒤 다음을 눌러주세요.



다음 이름으로 새 파일 만들기(C)를 체크후 다음.

완전한 새 영역을 작성하므로 첫번째 것을 체크해야 합니다.


Active Directory 등 도메인에 연결, 가입 할때 DDNS 를 허용하는지 설정하는 탭 입니다.


지금은 DDNS를 설정하지 않으므로 동적 업데이트가 필요없으니 그대로 다음을 눌러줍시다.


DDNS 에 대해서는 네트워크 이론에서 설명하겠습니다.



완료되었으면 마침을 눌러줍시다.



정방햑 조회 영역에 자신이 추가한 영역이 추가되었습니다. 이제 우클릭뒤 새 호스트(A 또는 AAAA) 를 눌러줍시다.




server , 10.0.0.1

client , 10.0.0.2 

A레코드를 추가해줍ㅂ시다.


server.etssun.com 은 10.0.0.1 IP주소를 문자화 한 것이고,

client.etssun.com 은 10.0.0.2 IP주소를 문자화 한 것 입니다.



정상적으로 추가되었는지 확인해줍시다.



클라이언트 네트워크 인터페이스 IPv4 설정에서 기본 DNS 서버를 10.0.0.1 (서버) 로 지정되어있는지 확인해줍니다.



이제 실행에서 cmd 를 여시고, nslookup 명령을 입력한 뒤,


> etssun.com 을 치고 엔터를 누르셔서 정상적으로 DNS 서버를 받아오는지 확인하고,

server.etssun.com 과 client.etssun.com 을 타이핑한뒤, 정상적으로 IP 어드레스가 표시되는지 확인해줍시다.



이제 ping server.etssun.com 명령을 타이핑하시면

맨 위 Ping server,etssun.com [10.0.0.1] 32바이트 데이터 사용 : 이 뜨면서,


server.etssun.com 으로 핑을 보내면 10.0.0.1 로 변환해서 핑을 보내는지 확인을 해줍시다.


정상적으로 핑이 가는것이 확인되면, DNS 서버가 정상적으로 구축된 것 입니다.



이번 포스팅은 여기까지 입니다. 감사합니다.

마이크로소프트에서 제공하는 인터넷 정보 서비스

Internet Information Services, IIS


마이크로소프트에서 지원하는 윈도 서버들을 위한 네트워크와 인터넷을 기반으로한 서비스들이 모여있는 곳이다.



Linux Server 에는 웹서버로 apache가 존재한다면, Windows Server 에는 IIS가 존재한다고 말할 수 있다.


그리고 Linux Server 에는 proftpd, vsftpd, pureftp 등 FTP 서버 패키지가 있다면, Windows Server 에는 IIS가 존재한다고 말할 수 있다.


이렇게 IIS 는 윈도우 서버내에 있는 네트워크, 인터넷 서비스 모임이다.



IIS에서는 웹 인증과, HTTPS 인증서 자체서명 발행, 보안 모듈, 캐싱모듈 등 여러가지 모듈을 제공하고 있다.

하지만 오픈소스가 아닌만큼 제한성은 있지만, 고비용, 고성능의 서버에서는 확실한 안정성을 보여주고 있다.


하지만 Windows Server 에서 지원하는 만큼 IT업계에서의 점유율은 낮은 편이다.


APACHE가 1위로 독주를 하고있으며 유명 웹서버중에서는 IIS가 사실상 꼴찌 라고 말할 수 있다.


하지만 그만큼 안정성과 뛰어난 성능과 간편한 조작이 있으므로 Windows Server 2016으로 버전 업그레이드 되면서 재조명을 받고있는 추세이다.


컴퓨터 전공자라면 리눅스는 한번쯤은 확실히 들어봤으리라 생각합니다.

우리가 가장 잘 알고있는 리눅스의 가장 특별한 특징은,

바로 오픈소스라는 점 즉, 오픈소스, FREE 운영체제 라는 것 입니다.


리눅스는 리누스 토발즈 라는 대학생이 Minix 를 사용하면서 자신이 추가하고싶은 기능을 하나 둘 추가하다보니,

어느새 하나의 운영체제와 맞먹는 급이 되자, 이 커널을 무료로 배포하게됩니다.


이게 리눅스의 시초가 됩니다.


초기에는 리눅스가 불완정하였습니다.

쭉 리눅스에 관심을 보이던 GNU는 리눅스와 GNU가 결합하게 되어, 우리가 평소에 아는 GNU/Linux 로 불리게됩니다.


그리고 마침내 1994년 리눅스 커널 1.0이 만들어지게되고, IT업체들에게 눈에띄게되고 리눅스 개발에 많은 지원을 하며 리눅스는 엄청난 성장을 하게됩니다.


그럼 리눅스는 컴퓨터 분야 사회에서는 어떤 용도로 활용이 될까요?



리눅스는 보통 서버용으로 많이 사용되며,

apache2, bind, DHCP 등등 많은 서버 구축 패키지를 지원합니다.

그렇기 때문에 전문적인 지식만 갖추고 있다면 리눅스를 유연성있게 사용가능합니다.


그리고 무엇보다 오픈 소스에 무료입니다. 예산이 풍부하지 않은 회사나 소규모, 인트라넷 구축용으로는 매우 적합합니다.

그리고 메모리와 CPU도 덜 잡아먹구요.



하지만 대기업이나 공기업 서버 등 예산이 풍부한곳은 리눅스를 잘 사용하지 않습니다.

유료 운영체제인 Windows Server 를 사용합니다.


이유는 리눅스의 최대의 단점인


자신이 사용중인 리눅스에 문제가 생겼을때 원격지원이 힘들며, 도움을 청하기가 쉽지 않기때문이고,

주기적인 보안업데이트나, 개발 업데이트를 자주 진행하지 않습니다. ( 물론 특정 리눅스는 제외하구요. )


하지만 Windows Server 는 주기적인 보안 업데이트와 기능 업데이트를 지원하고 있으며,

원격지원도 편리하게 가능하고 MS측에서의 전문가의 도움을 받을 수 있고

관리하기 쉬운 Active Directory 라는 서버내의 유저 관리 패키지가 있기때문에 결정적으로 대기업이나 자본금이 많은 대규모 서버에서는


리눅스 서버를 잘 사용하고 있지않습니다.



이번 포스팅은 여기서 마치겠습니다. 감사합니다.




+ Recent posts