2019/12/19

SIOCGMIIPHY on ‘eth0′ failed: Operation not supported

==============================================================
에러코드
==============================================================
SIOCGMIIPHY on ‘eth0′ failed: Operation not supported

==============================================================
가상머신
==============================================================
http://communities.vmware.com/blogs/VMwareKoreaGSS_L3TechSupport/2013/02/04/kb1001805%EA%B0%80%EC%83%81%EB%A8%B8%EC%8B%A0%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%96%B4%EB%8E%81%ED%84%B0-%EC%84%A0%ED%83%9D%ED%95%98%EA%B8%B0

VMware ESX Server supports the following virtual network devices:
- vlance ? AMD Lance PCNet32 ethernet adapter
- e1000 ? Intel e1000 ethernet adapter
- vmxnet ? VMware high speed virtual ethernet adapter
see: http://www.sanbarrow.com/vmx/vmx-network.html

# mii-tool
SIOCGMIIPHY on 'eth0' failed: Operation not supported
no MII interfaces found

hb1:~# modinfo -d e1000
Intel(R) PRO/1000 Network Driver

hb1:~# modinfo -d vmxnet3
VMware Virtual Ethernet driver

hb1:~# modinfo -d pcnet32
Driver for PCnet32 and PCnetPCI based ethercards


Which modules are existing?

hb1:~# modprobe -l | egrep 'pcnet32|vmxnet|e1000'
/lib/modules/2.6.26-2-686/misc/vmxnet3.ko
/lib/modules/2.6.26-2-686/misc/vmxnet.ko
/lib/modules/2.6.26-2-686/kernel/drivers/net/e1000e/e1000e.ko
/lib/modules/2.6.26-2-686/kernel/drivers/net/e1000/e1000.ko
/lib/modules/2.6.26-2-686/kernel/drivers/net/pcnet32.ko
Which modules are loaded?

hb1:~# lsmod | egrep 'pcnet32|vmxnet|e1000'
vmxnet                 18100  0
Only module vmxnet is loaded!


Now load module e1000:

hb1:~# modprobe e1000
hb1:~# lsmod | egrep 'pcnet32|vmxnet3|e1000'
e1000                 102656  0
vmxnet                 18100  0


Shutdown guest machine, open file virtualmachinename.vmx per notepad edit:
under line ethernet0.present = "TRUE" ---> 이랫 라인에 추가 한다.

ethernet0.virtualDev = "e1000" ---> 이녀석으르 변경...
and do it for all NICs ethernet[0]…ethernet[n]



Power on the Linux client, run mii-tool and ethtool again:

hb1:~# mii-tool
eth0: negotiated 1000baseT-FD flow-control, link ok
hb1:~# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes:   10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
                        100baseT/Half 100baseT/Full
                        1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes


========================================
리눅스 시스템
========================================
$ mii-tool -v
SIOCGMIIPHY on 'eth0' failed: Operation not supported
SIOCGMIIPHY on 'eth1' failed: Operation not supported
no MII interfaces found
$ ethtool eth1 Settings for eth1:
Link detected: yes
$ ethtool eth0
Settings for eth0:
Link detected: yes

2019/12/09

보안장비 초기 구성 및 설정

고급 서비스 사용자 정의
모듈 기능을 확장 할 수 있음.
프레임 워크에 제공하는 추상화, 자동화 및 컨텍스트에서 여전히 이점을 얻을 수 있는 두 개의 메커니즘이 있다.

stubs: 데몬이 사용하는 구성 파일을 생성하는 데 사용되는 탬플릿.
stubs을 수정하거나 작성하면, proxy(http 프록시) 구성에 안전한 포트 추가와 같은 모든 모듈의 동작을 사용자 정의 할 수 있다.

모든 모듈의 구성 파일을 제 설정을 통해 모듈 마다 동작 방식을 사용자가 정의 할 수 있으며,
설정 방법으로는 stub 수정 한 다음 템플릿 생성시(HTTP 프록시) 구성을  프록시가 포트를 추가 할 수 있다.

hooks: 방화벽 규칙을 새로 만들고 방화벽에서 특정 유형의 트래픽을 표시하는 규칙을 추가.
예들 들어 모듈의 수명 주기는 스크립트의 특정 체크 포인트 중에 발생된다.

Stubs 방식.
활성화된 모듈은,
자신이 관리하는 서비스에 대한 시스템 구성파일을 덮어 쓴다.
모듈은 기본적으로 서비스에 구성 파일에 대한 구조를 포함하는 템플릿을 통해 제어 방식을 설정한다.
결과 파일의 일부는 프레임 워크에서 제공 한 변수를 통해 매개 변수화 된다.

!mas_file!
보안장비의 경우 모듈에 대한 설정 파일을 구성할때,
시스템에 존재 하는 파일을 제어하는게 아니라,
mas 확장자 파일을 설정후 다시 시스템에 작용합니다.
/usr/share/lhtdns/stubs/모듈이름/*.mas
/etc/모듈설정 파일 이름/*conf

mas 파일을 읽어 들여
conf 파일에다가 저장하는 방식.

템플릿을 처리 할 때마다.
파일을 덮어 쓰므로 구성 파일을 직접 수정하는 것은 아무런 소용이 없다.
보안장비의 자체 구성 템플릿은 /usr/share/nemoos/stubs 에서 확인 할 수 있다.
그 이름은 원레 구성 파일에 확장자 .mas룰 사용한다.
이러한 템플릿을 수정하는 것은 소프트웨어 패키기가 업데이트되거나 다시 설치되는 경우 덮어 쓰기 때문에 좋은 방법이 아니며, 유지 보수 하기 힘들어진다.

따라서 변경 사항을 영구적으로 유지하기 위해 원래 템블릿 파일을 모듈 이름으로 /etc/nemoos/stubs/ 디렉토리에 복사 할 수 있다.

예제:
mkdir /etc/lhtdns/stubs/dns
cp /usr/share/lhtdns/stubs/dns/named.conf.options.mas /etc/lhtdns/stubs/dns

파일 변경사항 정보 생성
diff /etc/lhtdns/stubs/dns/named.conf.options.mas /usr/share/lhtdns/stubs/dns/named.conf.options.mas

원본 템플릿에 대해 수행 한 수정 사항을 계속 제어 할 수 있다.
diff 명령어를 사용하여 이러한 차이점을 확인할 수 있다.


내부 네트워크에서 신뢰 할 수 없는 DMZ 네트워크가 DNS 전체 영역 전송을 수행하지 못하게 한다고 가정한다.

디렉토리 구조를 만들고, 설정 파일을 복사한다.
mkdir /etc/lhtdns/stubs/dns
cp /usr/share/lhtdns/stubs/dns/named.conf.options.mas /etc/lhtdns/stubs/dns
cp /usr/share/lhtdns/stubs/dns/named.conf.local.mas /etc/lhtdns/stubs/dns

named.conf.local.mas 네트워크 범위를 정하고 DMZ 그룹을 추가한다.
acl "DMZ" {
    192.168.200.0/24;
    192.168.201.0/24;
};

named.conf.options.mas 개체에 설정한 영역에 전송을 금지한다.
allow-transfer { !DMZ; internal-local-nets; };

모듈을 재시작 한다.
service lhtdns dns restart

Hooks 방식
모듈 실행 상태의 특정 시점에서 특정 추가 작업을 수행해야 할 수도 있다.
예를 들어 보안장비의 방화벽과 관련된 변경 사항을 저장하면 방화벽 모듈이 가장 먼저하는 일은 기존의 규칙을 모두 제가 한 다음,
보안 장비에 구성된 규칙을 추가하는 것이다.
보안장비 인터페이스에서 다루지 않는 사용저 정의 iptables 규칙을 수동으로 추가하면 방화벽 모듈 변경 사항을 저장할 때 정의한 규칙이 사라진다.
이러한 동작을 제어하기 위해 보안장비을 사용하여 변경 사항 저장 프로세스가 수행되는 동안 스크립트를 실행 할 수 있다.
프로세스 중 hooks 라고 하며, hooks 기반의 스크립트를 실행 할 수 있는 6가지 위치가 있다.
그중 2개는 일반적이며 나머지 4개는 모듈 단위이다.

모듈 실행 상태에 따라 추가 작업을 수행 할 필요가 있다.
보안장비의 방화벽과 관련된 변경 사항을 저장할때
예를 들어, 방화벽 모듈이 수행하는 첫 번째 일은 기존의 모든 규칙을 제거하고
lhtdns 사용자가 구성한  방화벽 규칙을 추가하는 것이다.

lhtdns 수동 인터페이스에 포함되지 않는 규칙을, 사용자 iptables 규칙을 통해 추가하면
방화벽을 재 시작하면은 이에 대한 규칙 정보가 없어진다.

이 정보를 유지 시키기 위해서는 변경사항을 저장하는 프로세스가 수행되는 동안 스크립트를 실행에 정보를 추가 할 수 있는 방식이다.

변경 사항 저정하기 전:
/etc/lhtdns/pre-save 에 실행권한이 있는 스크립트 파일이 존재하면은 방화벽 프로세스가 동작 하기 전에 실행 됩니다.

변경 사항 저장 후:
프로세스가 완료되면 /etc/lhtdns/post-save 디렉토리에 실행 권한이 있는 스크립트를 실행됩니다.

모듈 구성 저정하기 전:
/etc/lhtdns/hooks/<modules>.presetconf 설정.
보안장비에서 기본적인 설정 정보를 가지고와 실행 한다.
<module>로 제어 하려는 모듈 이름을 사용해 쓰면, 모듈 구성을 덮어 쓰기 전에 hooks가 실행된다.
- 사용자 정의 방화벽 규칙 추가
- 보안장비 기본적인 방화벽 규칙 추가

모듈 구성 저장 후:
/etc/lhtdns/hooks/<modules>.postsetconf 설정.
보안장비에서 기본적인 설정이 끝난후
<modules>.postsetconf 파일 구성정보 확인후 저정 한 후 실행 됩니다.

1. 사용자 방화벽 규칙이 존재 하면은 추가
2. 보안장비 기본적인 방화벽 규칙 추가
3. 1번 2번 규칙이 추가하고 난후 사용자 방화벽 규칙 추가.

서비스 다시 시작하기 전:
/etc/lhtdns/hooks/<module>.preservice 실행됩니다.
이 스크립트는 예를들어, 아파치 모듈을 로드하는데 유용할 수 있습니다.

서비스 다시 시작한 후:
/etc/lhtdns/hooks/<modules>.postsrvice 실행됩니다.
방화벽의 경우,
모든 여분의 규칙이 여기에 추가 할 수 있습니다.


예제>
투명 프록시 설정.
HTTP 연결이 자동 경로 재 지정에서 특정 네트워크 세그먼트를 제외하고 싶을때.
/etc/lhtdns/hooks/firewall.postservice를 만들어 제어한다.

HTTP 연결의 자동 리다이렉션에서 특정 네트워크 세그먼트를 제외하고 싶을때.
/etc/lhtdns/hooks/firewall.postservice를 만들어 제어한다.

cd /etc/lhtdns/hooks/
vi firewall.postservice
#!/bin/bash
iptables -t nat -l premodules -s 192.168.200.0/24 -p tcp -m tcp --dport 80 -j ACCEPT

파일 실행 권한을 주고 서비스 재 구동.
chmod +x firewall.postservice
service lhtdns firewall restart

3. 새로운 모듈 개발 환경
보안 장비는 확정성을 염두해 설계하고, 새로운 모듈을 만들기 위해서는 비교적 간단하게 작성 할 수가 있다.
perl 언어 지식이있는 사람은 보안장비의 개발 프레임워크를 활용하여, 웹 인터페이스를 작성하고 나머지 모듈 및 통합된 보안장비 라이브러의 common 과 통합 할 수 있다.

보안장비의 디자인은 객체 지향적이며 모델 - 뷰어 - 제어(MVC) 디자인 패턴를 이용한다.
MCU 때문에 개발자는 데이터 모델에서 요구하는 기능을 정의 하면, 나머지 부분은 보안장비에 의해 자동으로 생성된다.

MVC 객체 설계 사이트 설정: http://en.wikipedia.org/wiki/Model_View_Controller

설정 파일 정리 확인
http://redmine.linuxlee-ftp.lan/boards/3/topics/590  ---> 현재 이 사이트가 어디에 있는줄 모르겠음.
예전 개발시 만들어 놓은 사이트인데... 로컬 서버에 어딘가 존재 할 듯. 나중에 찾기로 한다.

4. MVC : Model-View-Controller
프로그램 로직을 3개의 상호 연결된 요소라 나누어 사용자 인터페이스를 개발하는 데 일반적으로 사용되는 소프트웨어 디자인 패턴이다.
소프트웨어 설계에서 세 가지 구성 요소인 모델(Model) 뷰(View), 컨트롤러(Controller)를 이용한 설계방식.
이것은 정보가 사용자에게 제시되고 수용되는 방식과 정보의 내부 표현을 분리하기 위해 수행된다.
MVC 아키텍처 패턴에 따라 이러한 주요 구성 요소가 분리되어 코드 재사용 및 병렬 개발이 가능하다.

일반적으로 데스크탑 그래픽 사용자 인터페이스 GUI에 사용되는 이 패턴은 웹 응용 프로그램 설계에 널리 사용된다.

1. 구성요서
모델:
패턴의 중심 구성 요소이다.
사용자 인터페이스의 독립 애플리케이션의 동적 데이터 구조이다.
데이터, 로직 및 애플리케이션 규칙을 관린한다.

뷰어:
차트, 다이어그램 또는 테이블과 같은 정보 표현 관리를 위한 막대 도표, 회계사를 위한 표 형식보기와 같은 동일한 ㅈ어보의 표현 보기가 가능함.

제어장치:
입력을 적용하고 모델이나 뷰에 대한  명령으로 변환한다.
응용 프로그램을 이러한 구성 요소로 나누는 것 외에도 모델 뷰 컨트롤러 디자인은 이들 간의 상호 작용을 정의한다.
- 모델은 응용 프로그램의 데이터를 관리한다. 컨트롤러에서 사용자 입력을 받는다.
- 뷰어는 특정 형식으로 모델을 표현하는 것을 의미한다
- 제어기는 사용자 입력에 응답하고 데이터 모델 오브젝트에서 상호 작용을 수행한다.
- 컨트롤러는 입력을 수신하고 선택적으로 입력을 확인한 다음 입력을 모델로 전달한다.

다른 소프트웨어 패턴과 마찬가지고 MVC는 각 솔루션에 적용 할 수 있도로고 "core"을 문제로 표현한다.


모델은 소프트웨어 내에서 데이터를 의미하고, 뷰는 사용자에게 보이는 화면 내용을 의미한다.
이러한 모델과 뷰의 상호 작용을 관리하는 것이 콘트롤러이다.

예를 들어, 사용자의 입력이 컨트롤러로 들어오면 컨트롤러는 모델에서 데이터를 불러오고, 해당 데이터를 뷰를 통해 화면으로 출력한다.
모델, 뷰, 컨트롤러가 기능별로 독립적으로 분리되어 있어서 여러 명의 개발자가 동시에 각각의 기능을 개발할 수 있고,
일부 기능이 추가될 경우도 기존의 구성 요소를 재사용할 수 있어 코드 재사용성이 향상된다.

노르웨어 컴퓨터 과학자인 트리베 린스카우그가 1970년에 최초로 MVC 개념을 제안했다.
당시에는 PC용 소프트웨어를 개발하기 위한 모델로 제시되었지만, 현재는 웹 애플리케이션을 개발하는데에도 상당히 많이 사용된다.

MVC 모델을 웹 애플리케이션에 쉽게 적용할 수 있는 라이브러리로는 앵귤러자바스크립트(AngularJS),
엠버자바스크립트(EmberJS), 자바스크립트에브이시(JavaScriptMVC), 백본자바(BackoneJS) 등이 있다.

MVC의 변형 형태로 모델.뷰: 프리젝터(MVP: Model-View-Presenter),
모델 뷰, 뷰모델(MVVM: Model-View-ViewModel)등이 있다.
MVC 유형에서 뷰와 모델은 정확히 분리되지만, 컨트롤러가 뷰의 구성에 상당 부분 관여하는 경우가 있어 각각의 독립성이 떨어지는 문제가 발생할 수 있다.
이를 해결하기 위해 컨트럴러의 뷰 구성 기능은 모듀 뷰 자체에 맡기고 프리젠터(presenter)가 모델과 뷰 사이의 인터페이스 역할만을 하도록 하는 것이 MVP이고,
데이터 바인딩 기반으로 뷰가 뷰모델과 인터페이스 하도록 제한을 두는 것이 MVVM이다.

5. 구성 키
보안장비을 사용하면 웹 인터페이스를 통해 대부분의 기능 구성을 할 수 있다.
/etc/nemoos의 파일을 사용하여 일부 서비스의 고급 설정을 할 수 있다.

이 .conf 파일을 수정하기 위한 기본 지침은 각 파일의 시작 부분에 설명된다.

Captive Portal:
/etc/nemoos/captiveportal.conf

#
#
# 다음 줄을 주석을 제거하면 활서화 도니다.
# 보조 LDAP 구성:
#captive_secondary_ldap = yes
COMMON

/etc/nemoos/nemoos.conf


# 사용자 [필수]. 보안장비을 실행할 사용자
# 필요한 모든 작업을 수행하기 위해 sudo 권한이 있어야 한다.
user = ebox
#
# 그룹 [필수]. 보안징바을 실행할 그룹
egroup = ebox
#
# 디버깅 모드  [필수]. yes|no
# Note: 적용하려면 변경 한 후 아래 명령을 실행. :
# /etc/init.d/nemoos apache restart
debug = yes
#
# 인터페이스 덤프 예외.
# 개발자에게 유용하며 베타 기간 동안에 만 사용할 수 있다.
#dump_exceptions = yes

6. nemoos.core
/etc/nemoos/core.conf
# core.conf - configuration file for Nemoos core.
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다. :
#
# key = value # this is ignored

# Redis 서버 포트
# 이 값을 변경하면 redis 서버를 수동으로 다시 시작해야 한다.
# 두 단계 :
#    $ /etc/init.d/nemoos webadmin restart # 새로운 구성 적용
#    $ restart nemobox.redis                 # redis 서버 재 시작.
redis_port = 6380

# 데시 보드 위젯에서 시스템 업데이트 무시
#widget_ignore_updates = yes

# 블랜드 변경을 위한 맞춤 접두사.
#custom_prefix = nemoos

7 dns
cat /etc/nemoos/dns.conf
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다. :
#
# key = value # this is ignored
# 내부 네트워크는 nemoBox DNS 캐싱 서버에 재귀 쿼리를 수행 할 수 있다.
# 로컬 네트워크는 이미 허용되어 있으며 이 설정은 고정 경로를 통해 네트워크에 도달 할 수 있도록하기 위한 것이다.
# Example: intnets = 192.168.99.0/24,192.168.98.0/24
intnets =

# 이 키는 자동 리버스 존 생성을 제어한다.
# 비활성화 하렴ㄴ no로 설정한다.
generate_reverse_zones = yes

# 이 키는 쿼리 IP를 기준으로 결과를 정렬할지 여부를 정의한다.
sortlist = yes

8 backup
/etc/nemoos/backup.conf

# 백업 메뉴 사용. (yes or no)
ebackup_menu_enabled = yes
#
# Volume size in Mb (default: 25)
# 로컬 파일 시스템으로 백업하는 경우: 600을 선택하거나
# 파일이 적을수록 커짐.
volume_size = 25
#
# 임시 디렉토리  (default: /tmp)
temp_dir = /tmp
#
# 보관 디렉토리  (default: /var/cache/nemoos/duplicity)
# 첫 실행 후 이 값을 변경하면 저장소를 다시 작성해야 한다.
# 오래된 것은 자동으로 삭제되지 않음.
archive_dir = /var/cache/nemoos/duplicity
#
# 구성 재시도
# 이 값 세트는 업로드가 완료되고 백업을 완료하기 위해 일부 재 시도가 필요할 때 설정됩니다.
# timeout_n = initial_value * scale_factor ^ (n-1)
# 예를 들어 initial_value = 60s, scale_factor = 2, n_tries = 4
# 백업은 포기하기 전에 60, 120, 240 초 후에 4 번 시도됩니다
# 이 값은 초 단위로 설정된다.
initial_value=60
scale_factor=2
n_tries=4
#
# 이중성 타임 아웃
# 기본값은 5 분이지만 주석을 해제하고 다른 값을 초 단위로 설정할 수 있습니다
#duplicity_timeout = 300
#
# 예약 된 백업 우선 순위
# 0에서 19 사이의 양의 정수 여야합니다.
# 0은 보통 우선 순위이고 높은 숫자는 _less_ 우선 순위입니다
ebackup_scheduled_priority=10

9 firewall
cat /etc/nemoos/firewall.conf
# firewall.conf - configuration file for nemoos-firewall
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored

# 분당 기록 된 패킷 수 제한
iptables_log_limit = 50

# 파괴
iptables_log_burst = 10

# 로그 기록
iptables_log_drops = yes

# 로드 할 추가 iptables 모듈
# 각 모듈은 쉼표로 구분해야하며 모듈 매개 변수를 포함 할 수 있습니다
#iptables_modules = nf_conntrack_ftp, nf_nat_ftp, nf_conntrack_h323, nf_nat_h323, nf_conntrack_pptp, nf_nat_pptp, nf_conntrack_sip, nf_nat_sip

iptables_modules = ipt_MASQUERADE, ipt_CLUSTERIP, nf_nat_tftp, nf_nat_snmp_basic, nf_nat_sip, nf_nat_pptp, nf_nat_irc, nf_nat_h323, nf_nat_ftp, nf_nat_amanda, nf_conntrack_amanda, nf_conntrack_tftp, nf_conntrack_sip, nf_conntrack_proto_sctp, nf_conntrack_pptp, nf_conntrack_proto_gre, nf_conntrack_netlink, nf_conntrack_netbios_ns, nf_conntrack_irc, nf_conntrack_h323, nf_conntrack_ftp, xt_helper, xt_state, xt_connmark, xt_conntrack, iptable_nat, nf_nat, nf_conntrack_ipv4, nfnetlink_queue


# 라우터가 NAT를 사용하는 경우 소스 NAT를 사용하도록 설정.
nat_enabled = yes

# 외부에서 내부로 섹션을 표시하려면 다음을 주석 해제.
show_ext_to_int_rules = yes

# Nemoos 서비스에서 추가 한 규칙을 표시하려면 다음을 주석 해제
show_service_rules = yes

10 ips
# ips.conf - configuration file for nemoos-ips
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored
#
# IPS 인라인 방화벽 규칙 위치 설정
# 'behind'(default)로 설정되면 허용 된 입력 또는 전달 된 트래픽 만 분석한다.
#
# 'front'로 설정되면 모든 입력 및 전달 된 트래픽이 분석한다.
# 이 두 번째 옵션은 더 안전하지만 네트워크 트래픽이 많은 네트워크에서 CPU를 많이 사용합니다.
#
# 설정을 수정하면 다음 명령을 실행하여 적용해한다.
#
# $ sudo service nemoos ips restart
# $ sudo service nemoos firewall restart
# (잠금을 피하기 위해 IPS 모듈을 비활성화 및 활성화하는 것이 더 안전합니다)
#
# ips_fw_position = front|behind

11 network
# network.conf - nemoos-network 구성 파일.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored

# 인터페이스에서 무시할 인터페이스
# (default : sit, tun, tap, lo, irda, ppp, virbr, vboxnet, vnet)
ifaces_to_ignore = sit,tun,tap,lo,irda,ppp,virbr,vboxnet,vnet

# 인터페이스에 대한 사용자 정의 mtu를 정의하려면 mtu_ <interface> = <MTU>를 사용할 수 있습니다.
#mtu_eth0 = 1400

이더넷 MTU는 1500 바이트이므로 이더넷 프레임에 포함 할 수있는 가장 큰 IP 패킷 (또는 다른 페이로드)은 1500 바이트이다.
이더넷 헤더에 26 바이트를 추가하면 최대 프레임 (MTU와 동일하지 않음)이 1526 바이트가 됨.
넷기어 장비는 이더넷 헤더를 기본으로 잡는다. 그래서 1526으로 되어있음.

"MTU"라는 용어는 계층 3에서 패킷의 최대 크기만을 정의하기위한 것마은 아니다.
계층 2 MTU를 참조한다.
IP 패킷 (계층 3)의 길이는 IP 헤더에서 16 비트 총 길이 필드의 최대 값으로 제한된다.
IPv4의 경우 최대 페이로드 크기는 65515이다.(= 2^16 - 1 - 20 bytes header).

결국 dhclinet로 적용되는 외부 아이피는, 그 값을 dhcpd에서 주기 때문에. 수동으로 설정해줘야 한다.
처음 정보를 변경할 때는 수동으로 명령을 입력해줘야 한다.
dhcp 상위망 연동 때문에.

ip link show eth0
ip link set eth0 mtu 9000
ip link show eth0

만약 보안장비에서 dhcpd 설정시
템블릿 파일을 수정해 값을 변경할 수가 있다.

subnet 192.168.0.0 netmask 255.255.255.0 {
  option broadcast-address 192.168.0.255;
  option routers 192.168.0.1;
  option interface-mtu 9000; ---> 이 값으로 변경.
}

subnet.mas 파일 수정
option interface-mtu 9000; 추가.

12 openvpn
# openvpn.conf - configuration file for nemoos-openvpn
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored

# insecure_rip_conf [필수]. yes로 설정하면 안전하지 않은 ripd 구성을 사용한 nemoBox openVPN과의 하위 호환성을 활성화 한다.
# 확시하게 이해하지 못했으면 사용 않하는게 좋음.

insecure_rip_conf = no

# mssfix를 사용하여 UDP 연결이있는 일부 네트워크에서 MTU 검색 문제 해결 모든 VPN 클라이언트에 적용됩니다.
# 하고있는 일이 확실한 경우에만 활성화하십시오
# mss_fix = 1300

13 nemoos remote
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored
#
# 퍼블릭 DNS 서버
nemobox_services_nameserver = ns.cloud.nemoos.com

# 퍼블릭 API
rs_api = api.cloud.nemoos.com

# 클라우드 서버 확인
# 값 : yes | no
rs_verify_servers = yes
#
# 'yes'값으로 설정하면 Nemoos QA 업데이트의 우선 순위가 다른 패키지 소스의 우선 순위가 가장 낮으며 사용되지 않습니다.
# 이 값을 변경하면 다음 명령을 실행해야합니다.
#  sudo /usr/share/nemoos-software/rewrite-conf
# (Default: yes)
qa_updates_exclusive_source = yes

# Nemoos QA 업데이트를 사용하는 경우 'yes'값으로 설정하면 신뢰할 수있는 소스에서 시스템을 항상 업데이트하도록 자동으로 업데이트됩니다.
# 이 값을 변경하면 다음 명령을 실행해야합니다.
#  sudo service nemoos remoteservices restart
# (Default: yes)
qa_updates_always_automatic = yes

# 'yes'값으로 설정하면 모니터링 통계가 VPN을 사용하여 전송됩니다.
# 이 방법은 더 안전하지만 서비스가 중단되는 경향이 있습니다.
# 이 값을 변경하면 /etc/init.d/nemoos monitor restart를 실행하여 변경 사항을 적용하십시오.
# (Default: no)
monitoring_inside_vpn = no

14 samba
# samba.conf - configuration file for nemoos-samba
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored

# -- s4sync settings --
s4sync_debug = yes

# -- 파일 서버 --
# 사용할 파일 서버를 선택하십시오. samba4에 포함 된 새로운 'ntvfs'또는 samba3의 기존 's3fs'
# 'ntvfs'를 선택하면 휴지통, 감사 또는 바이러스 백신과 같은 프린터 및 vfs 플러그인이 작동하지 않습니다.

# values: ntvfs | s3fs
samba_fs = s3fs

# --휴지통 설정--

# 휴지통 디렉토리 이름 /tmp/foo와 같은 전체 경로를 입력하면 모든 공유에 동일한 휴지통이 사용됩니다.
repository = RecycleBin

# 휴지통 디렉토리의 권한
directory_mode = 0700

# 디렉토리 구조 유지
keeptree = Yes

# 파일이 두 번 이상 삭제 된 경우 사본 보관
versions = Yes

# 휴지통에서 디렉토리를 작성할 때 상위에서 NT ACL 상속
inherit_nt_acl = Yes

# 파일을 저장소로 옮길 때 파일의 액세스 날짜를 업데이트해야하는지 여부를 지정합니다.
#touch = Yes

#이 매개 변수로 지정된 바이트 수보다 작은 파일은 저장소에 저장되지 않습니다.
#minsize = 0

#이 매개 변수로 지정된 바이트 수보다 큰 파일은 휴지통에 저장되지 않습니다. (0 = 비활성화)
maxsize = 0

# 삭제시 저장하지 말고 정기적으로 삭제해야하는 파일 목록.
#exclude = *.tmp|*.temp

#이 디렉토리의 파일을 삭제하면 휴지통에 들어 가지 않고 정기적으로 삭제됩니다.
excludedir = /tmp|/var/tmp

# 버전 관리를 사용하지 않아야하는 경로 목록 (* 및?와 같은 와일드 카드가 지원됨)을 지정합니다.
# 버전이 활성화 된 경우에만 유용합니다.
#noversions = *.foo|*.bar

# -- 휴지통 설정 끝 --

# -- 안티바이러스 설정 --

# 소켓, 장치 및 fifo (모두 바이러스를 검사하지는 않음)가 사용자에게 표시되어야하는지 여부
show_special_files = True

# 사용자가 디렉토리를 제거하려고하면 보이지 않는 파일 (.scanned : files, .failed : files 및 .virus : files)을 삭제해야하는지 여부입니다.
# false이면 "디렉토리가 비어 있지 않습니다"라는 오류가 발생합니다.
rm_hidden_files_on_rmdir = True

# 스캔되지 않은 파일이 열리면 vfs 모듈은 스캔 데몬이 .scanned : 파일을 생성하기 위해 recheck_time_open 밀리 초 동안
# recheck_tries_open 시간을 기다립니다.
# 시간 (시도 * 시간) 내에 데몬이 스캔 한 작은 파일의 경우 동작은 온 액세스 검색과 같습니다.
recheck_time_open = 50

# recheck_time_open을 참조하십시오.
recheck_tries_open = 100

# 스캔되지 않은 파일에 대한 액세스를 허용합니다.
# 그러나 데몬에 .scanned : 파일과 같은 특수 파일이 통지됩니다. .virus : 파일 및 .failed : 파일이 나열되지 않습니다.
allow_nonscanned_files = True

# 파일 검사에 사용 된 스레드 수
scanning_threads = 4

# -- 바이러스 설정 끝 --

# UI에 텍스트 상자를 표시하여 도메인에 가입 할 때 서버를 추가 할 사이트를 선택하십시오
show_site_box = no

# ACL을 수동으로 설정하고 Nemoos가 덮어 쓰는 것을 피하려면 주석 처리를 제거하십시오
#unmanaged_acls = yes

# 전체 감사 로깅 비활성화
# Allowed values = [yes|no]
# Default value = no
# 전체 감사를 사용하지 않으려면 다음 옵션의 주석 처리를 제거하십시오.
#disable_fullaudit = yes

# Samba 4 버그에 대한 임시 해결 방법입니다.
#
#   https://bugzilla.samba.org/show_bug.cgi?id=9866
#   https://bugzilla.samba.org/show_bug.cgi?id=9867
#
# 게스트 공유가 활성화되어 있고 Windows Vista 컴퓨터를 도메인에 가입 시키려면 주석 처리를 제거하십시오.
# 유효한 도메인 자격 증명을 제공하지 않으면 최소한 익명으로 액세스 할 수는 있지만 가입 할 수는 없습니다.
#join_vista_with_guest_shares = yes

# 변경 사항을 저장하는 동안 사용자의 홈 디렉토리 설정을 건너 뛰려면 주석 처리를 제거하십시오
#unmanaged_home_directory = yes

15 proxy
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored
#
# cache_mem [required]. Amount of memory to be used by squid (in MB)
cache_mem = 128

# maximum_object_size [필수]. 캐시 할 최대 개체 크기 (MB)
maximum_object_size = 300

# max_fd이 값을 설정하면 porxy를 시작할 때 필요한 경우 최대 파일 설명자 수가 늘어납니다. 설정하지 않으면 변경되지 않습니다.
#max_fd= 167140

group = proxy

## 성능 조정 ##
# 정확하게 이해하지 못하면 손대지 않는게 좋습니다.

# DansGuardian 매개 변수
maxchildren = 120
minchildren = 8
minsparechildren = 4
preforkchildren = 6
maxsparechildren = 32
maxagechildren = 500

# 분류 된 목록에서 url 목록을로드합니다.
# url_regex ACL 유형을 사용하므로 메모리 및 CPU 소비로 인해 기본적으로 비활성화되어 있습니다.
#load_url_lists = yes

# TAG: 인증 모드

# key: auth_mode
#이 키는 porxy 인증 모드를 제어합니다.
# internal로 설정하면 proxy는 Nemoos 내부 LDAP에 대해 인증하고,
# external_ad로 설정하면 proxy는 외부 Active Directory에 대해 사용자를 인증합니다.
# values:
#   - internal
#   - external_ad (상용판에만 해당)
auth_mode = internal

# key: auth_ad_skip_system_groups
# 외부 Active Directory 인증을 사용하는 경우
# 'isSystemCriticalObject'속성이 설정된 그룹이있는 ACL을 허용하지 않습니다 (거의 모든 내장)
auth_ad_skip_system_groups = no

# key: auth_ad_acl_ttl
#   ACL 캐시 결과에 대한 TTL (초) (음수 및 양수).
auth_ad_acl_ttl = 3600
auth_ad_negative_acl_ttl = 30

16 traffic shaping
# trafficshaping.conf - configuration file for nemoos-trafficshaping
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored
#
# 보장 된 유효한 값 범위의 R2Q 값. 값은 다음과 같이 계산됩니다.
#
#    Maximum: 60000 * r2q * 8 / 1000
#    Minimum: MTU * r2q * 8 / 1000
#
# 자세한 내용 확인.: http://www.docum.org/docum.org/faq/cache/31.html

17 User Cornet
# usercorner.conf - nemoos-usercorner 구성 파일
#

# 사용자 코너 redis 서버 포트
redis_port_usercorner = 6381

18 Users
# users.conf - configuration file for nemoos-users
#
# 이 파일에는 가장 기본적인 설정이 포함된다.
# 대부분의 다른 항목의 웹 인터페이스를 사용하여 구성된다.
#
# 모든 공백은 무시된담.
#
# 구성 키는 다음과 같이 설정된다 :
#
# key = value
#
# 끝에 주석이 포함 될 수 있다.
# key = value # this is ignored
#
# 지원되는 암호 형식 : sha1, md5, lm, nt, digest (base64) 및 realm (hex)

# 사용자 홈을 만들지 여부
mk_home = yes

# 홈 디렉토리의 기본 모드 (umask 모드)
dir_umask = 0077

# 할당량 지원 활성화
enable_quota = yes

# LDAP 슬레이브와의 동기화 빈도
slave_time = 5

CentOS 7 PDC 등록

1 단계: 보안장비 PDC에 도달하도록 네트워크 구성

1. CentOS 7 Desktop을 Active PDC에 가입시키기 위해 필요한 서비스 설치.

네트워크 설정
유선 연결 끈다.
보안장비 PDC 또는 Windows AD DNS 서버를 가리키는 DNS IP를 추가 한 다음 적용한 후 유선 네트워크를 활성화 한다.

2. resolv.conf 설정.
네트워크에 PDC를 해결하는 단일 DNS 서버만 있는 경우,
DNS 서버 목록에 이 IP가 첫 번째인지 확인해야 햐며, 그 다음에 search your_domain.tld 가 있어야 한다.

vi /etc/resolv.conf
nameserver 192.168.1.13
nameserver 192.168.1.1

search mydomain.com

3. 응답 테스트
ping pdc_FQDN

4. 호스트 이름 변경
시스템 호스트 이름을 완전한 도메인 이름으로 구성한다.
(시스템에 임의의 이름을 사용하고 첫번째 점 뒤에 도메인 이름을 추가한다).

사용 예)
# hostnamectl set-hostname hostname.domain.tld
# cat /etc/hostname
# hostname

실제 적용)
루트 권한으로 다음 명령어 실행.
# hostnamectl set-hostname centos7.mydomain.lan
cat /etc/hostname
centos7.mydomain.lan

5. 보안장비 pdc 시간 동기화
사용 예)
$ sudo ntpdate -ud domin.tld

실 사용)
$ sudo ntpdate -ud mydomain.com

2 단계: kerberos 및 Authconfig-gtk 설치, samba 및 kerberos 클라이언트 구성
6. 저장소 필요한 패키지 설치

$ sudo yum install samba samba-winbind

samba-winbind는 모든 구성원을 통합하는데 필요한 도구이다.

7. 네트워크 시스템이 신뢰할 수 있도록 KDC(Key Distribution Center)를 기반으로 강력한 암호화 네트워크 인증을 제공한다.
Cento 7 워크스테이션에 설치한다.

# sudo yum install krb5-workstation

8. Authconfig-gtk 설치
$ sudo yum install authconfig-gtk

9. kerberos 클라이언트 구성.
예제>
[libdefaults]
default_realm = YOUR_DOMAIN.TLD

[realms]
YOUR_DOMAIN.TLD = {
kdc = your_pdc_server_fqdn
}

vi /etc/krb5.conf
[domain_realm]
.your_domain.tld = YOUR_DOMAIN.TLD
your_domain.tld = YOUR_DOMAIN.TLD

실제 적용>
[logging]
default = FILE:/vr/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24H
renew_lifetime = 7d
rdns = false
default_relm = MYDOMAIN.COM
default_ccahche_name = KEYRING:persistent:%{uid}

[realms]
MYDOMAIN.COM = {
kdc = pdc.mydomain.com
# admin_server = kerberos.example.com
}

[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM

3 단계: CentOS 7을 보안장비 PDC 가입.

10. 인증 설정.

$ sudo authconfig-gtk

a. 신원 및 인증 탭
User Account Database = Winbind 선택
Winbind Domain = 도메인 이름
Security Model = ADS 선택
Winbind ADS Realm = 도메인 이름
Domain Controllers = 보안장비 PDC FQDN 입력
Template Shell = /bin/bash 선택
Allow offline login = 확인

신원인증구성.jpg

b. 고급 옵션 탭으로 이동
- 로컬 인증 옵션 = 확인 지문 판독기 지원 활성화.
- 기타 인증 옵션 = 확인 첫 번째 로그인시 홈 디렉토리 생성.
인증고급옵션.jpg

11 도메인 가입
신원 인증 탭으로 이동

join Domain 선택.
도메인가입.jpg

게으 리, [26.11.19 01:58]
12. 도메인 관리자 자격 증명
Joining Winbind Domain
Domain: MYDOMAIN
Domain administrator: linuxlee
password : ****

구성변경 적용(Apply)

창이 닫히고 컴퓨터가 도메인에 통합되었음을 알리는 메시지가 터미널에 나타난다.

13. 보안장비 PDC 추가 확인.
사용자 및 컴퓨터 -> 관리 메뉴 이동.
컴퓨터 호스트 이름이 목록에 나타나는지 확인한다.

4 단계: PDC 사용자로 CentOS 7 로그인
14. 로그인
콘솔 명령어 예시>
$ su-your_domain.tld \ pdc_user

실제 사용 명령어>
$ su - mydomain.com\\linuxlee

15. 모든 PDC 사용자의 기본 $HOME은 /home/your_domain/pdc_user이다.

$ sudo ls /home/MYDOMAIN/
linuxlee user1 user2 user4

16. GUI 로그인
로그인창으로 이동
mydomain\\linuxlee
password:

5 단계: PDC 통합 서비스 활성화.

# systemctl enable smb
# systemctl enable nmb
# systemctl enable winbind

보안장비 PDC 멤버가 되려면 시간이 걸린다.
Windows Server Active Directory 인증 및 도메인 통합을 사용하려면 동일한 단계를 거쳐 완료한다.

BDC(백업 도메인 컨트롤러)로 설치 및 구성

BDC(백업 도메인 컨트롤러)로 설치 및 구성

BDC - 백업 도메인 컨트롤러
사용자 계정 데이터베이스를 복제하여, 윈도우 서버 또는 보안장비를 설정하지 않고 동일한 PDC를 백업해 구성한다.

1. 보안장비 관리자 인터페이스 접근.

필요한 모듈 설치.
Firewall
NTP Service
Network Configuration
Users, Computers and File Sharing

2. 네트워크 설정
고정 IP 설정.
domain Name Server 설정시 PDC 서버로 운영되고 있는 보안장비의 IP를 설정한다.

Host domain name: fairlineai.com ---> PDC 서버로 운영되고 있는 보안장비와 동일하게 설정해 준다.

3. BDC 설정.
3.1 데이터 베이스 동기화
3.1.1 컴퓨터 이름 변경
시스템 -> 일반 -> 호스트 이름 및 도메인으로 이동하여 호스트 이름 및 도메인 이름을 변경
hostname:bdcserver
domain: fairlineai.com

3.2 충돌 방지.
vi /etc/resolv.conf
nameserver pdcIP ---> PDC 서버의 IP 주소를 적는다.

#search fairlineai.com 주석처리

3.2.1 테스트
ping pdc.fairlineai.com

4. BDC 관리자 인터페이스 접속
4.1 GUI 테스트
Network -> Tools 이동
ping: pdc.mydomain.com

5. 사용자 데이터 베이스 동기화.
5.1 설정.
Domain -> Settings 이동.

Server Role = 추가 도메인 컨트롤러
Domain Controller FQDN = 기본 도메인 컨트롤러 FADN
Domain DNS Server IP = PDC 확인을 담당하는 주 도메인 컨트로러 IP 주소 또는 DNS
Administrator Account = 기본 도메인 컨트롤러 관리자.
Administrator Password = 기본 도메인 컨트롤러 관리자 비밀번호.
NetBIOS Domain Name = NetBIOS의 도메인 이름을 선택한다 - 기본 도메인 이름이 될 수 있다. .
Server Description = BDC 서버의 정의하는 설명이다.

Serve Role: Additional domain controller
Realm: fairlineai.com
Domain DNS Server: 172.16.1.165
Adminstrator account: linuxlee
Adminstrator password:
NetBIOS domain name: fairlineai
NetBIOS computer name: bdcserver
Server description: fairline server bdc
CHANGE

변경사항 저장.

6. 데이터 베이스 동기화.
데이터베이스 크기에 따라 복제 프로세스는 시간이 걸릴 수 있다.
완료 후 사용자 및 컴퓨터 -> 관리 이동하여 PDC의 전체 사용자 및 컴퓨터 데이터베이스 동일하다는 것을 확인할 수 있다.

7. 윈도우 확인.
Active Directory 실행.
Domain Controllers -> BDCSERVER 확인.

8. 시간 동기화.
sudo ntpdate -ud fairlineai.com

보안장비 안드로이드 VPN 연동

mydomain.vpn 과 같은 새 VPN 서버 생성.

defualt 구성
- UDP 포트 1194.
- 기본 IP 주소를 사용
- 서버 인증서 vpn-mydomain.vpn을 선택, 올바르게 리콜하면 자동으로 생성 되었음.
- 클라이언트 인증, 서버를 선택. 보안장비 이름 선택.
- TUN 인터페이스를 활성화
- NAT를 활성화
- 클라이언트-클라이언트 연결을 사용하십시오 (선택적이며 필수는 아님).
- 비활성화 Nemoos-to-Nemoos 터널을 허용합니다.
- 비활성화 보안장비 터널 클라이언트가 푸시 한 경로를 거부합니다.
- 모든 인터페이스에서 청취하십시오.
- 리디렉션 게이트웨이가 활성화
- 이름 서버. 보안장비 서버의 IP 주소
- 두 번째 네임 서버. 필수는 아니지만 8.8.8.8로 설정
- 검색 도메인은 공백.
- WINS 서버가 공백.

보급형 네트워크의 변경 사항이 없다.

Android 기기를 VPN에 연결
OpenVPN-AS 및 Android 소프트웨어를 사용했지만 보안장비에 연결하지 못함.

OpenVPN Android 앱 사용 중.
여기의 트릭은 OpenVPN-AS를 사용할 때와 같이 서버에서 자동으로 다운로드하는 대신 SD 카드에서 프로파일을 가져와야 함.

보안장비에서 생성 후 SD 카드 또는 메일로 전달.

- 클라이언트 유형에서 Linux를 선택
- 클라이언트 인증서에서 보안장비 네임 서버의 이름을 선택
- 서버 주소. 보안장비 서버의 외부 주소, 고정 IP 또는 메인이다.
- 추가 및 두 번째 추가 서버 주소는 공백
- 그런 다음 구성 파일을 다운로드

이제 mydomain.vpn-client-myservername.tar.gz 와 같은 파일이 있어야함.
그 파일을 열고 파일 압축 해제.

- EFC76386GC758CJ.pem (파일 이름이 다름)
- cacert.pem
- mydomain.vpn-client.conf
- myserver.pem

Android에서 모두 작동하게하려면 .conf 파일의 이름 을 .ovpn 로 바꿔야 함.
- 이름 변경 : mydomain.vpn-client.conf ?> mydomain.vpn-client.ovpn

모든 파일을 Android 장치 (OpenVPN이 설치된 상태)에 복사한다.
파일 복사 후, OpenVPN을 연다.

메뉴> 가져 오기> SD 카드에서 프로필 가져 오기> (파일을 저장 한 위치)

PDC에서 OpenVPN 서버를 구성

PDC에서 OpenVPN 서버를 구성

OpenVPN은 가상 사설 네트워크를 통해 실행되는 Secure Socket Layer 프로토콜 기반으로하는 오픈소스이다.
사용중인 플랫폼 또는 운영체제와 상관없이 인터넷을 통해 중앙 조직 네트워크에 안전하게 연결할 수 있다.
리눅스, 유닉스, 맥, 윈도우, 안드로이에서 실행된다.
또한 TAP/TUN 장치를 사용하여 암호화 키 및 인증서 기반으로 엔드 포인트에서 암호화된 가상 터널을 생성하는 동시에 클라이언트 및 서버로 실행할 수 있다.

요구 사항
1. PDC (Primary Domain Controller)
보안장비 PDC(Primary Domain Controller) Windows 시스템 통합.

1. OpenVPN 서버 설치
2. Open VPN 서버 구성
2.1 생성
INFRASTRUCTRE -> VPN -> Server -> ADD New 클릭

체크: enable
name: pdc.vpn.udp

2.2 설정
Cofiguration 아이콘 클릭

Server Port = UD{ 프로토콜, 포트 1194 OpenVPN 기본 프로토콜 및 포트(UDP는 비 연결 상태로 인해 TCP 보다 빠르게 동작한다)

VPN Address = 10.10.10.0/24 -여기에서 원하는 개인 공간 네트워크 주소를 선택할 수 있지만 시스템이 동일한 네트워크 주소 공간을 사용하지 않도록 해야한다.

Server Certificate = 새 VPN 서버를 처음 자동으로 추가하면 VPN 서버 이름으로 인증서가 발급된다.

Client authorization by common name = 비활성화하면 Nemoos에서 생성 한 인증서가있는 모든 클라이언트가 연결할 수 있습니다.
                                      사용 가능한 경우 공통 이름이 선택한 값으로 시작하는 인증서에만 연결할 수 있습니다.

Check TUN interface = 네트워크 계층 장치를 시뮬레이션하고 OSI 모델의 계층 3에서 작동한다(체크되지 않은 경우 TAP 유형 인터페이스르 사용하는 경우 계층 2 브릿지와 유사)

Check Network Address Translation = VPN 서버가 기본 게이트웨이가 아닌 경우 활성화

Check Allow client-to-client connections = 원격 엔드 포인트에서 로컨 네트워크에 있는 다른 시스템을 볼 수 있다.

Interface to listen on = 모든 네트워크 인터페이스 선택

Check Redirect Gateway = Nemoos를 클라이언트의 기본 게이트웨이로 설정

First and Second Name Servers = 보안장비 DNS 서버 IP 추가

Search domain = 도메인 이름 추가.

2.2.1 실제 적용.
Server port : UDP prot=1194
VPN address: 10.10.10.0/24 ---> 이아이피 주소가 원격지 호스트 컴퓨터(클라이언트)의 DHCP로 설정이 된다.
Server certificate: pdc.vpn.udp ---> 방금전 생성한 pdc.vpn.udp 이름이다.
Client authorization by common: nemo
TUN interface: 활성화 체크
Network Address Translation : 활성화 체크
Allow client-to-client connections: 활성화 체크

Interface to listen on: All network interfaces
Redirect gateway: 활성화 체크
First nameserver: 172.16.1.165 ---> 접근서버의 외부망으로 설정했던 IP이다.

2.2.1.1 Advertised networks
ADD NEW -> Adding a new object : pdc.vpn
Network -> Objects -> ADD Nes -> pdc.vpn 멤버 아이콘 클릭
name: internal
IP address: CIDR : 172.16.30.0/24 ---> 이 아이피 설정은 접속 할 위치(서버)의 로컬 아이피 주소이다.

3. 방화벽 설정
보안장비 외부 내부로 OpenVPN 클라이언트 SSL 터널 기능을 통해 보연 연결을 할 수 있음.

3.1 서비스 추가
3.1.1 Network -> Service -> ADD New 클릭
pdc.vpn.udp
udp:any:1194

3.1.2 Network -> Service -> ADD New 클릭
vpn-pdc.tcp
udp:any:1194

3.1.3 방화벽 내부망 설정
ADD NEW ---> pdc.vpn.udp
Protocol: UDP
Source Port: Any
Destination Port: Single Port: 1194

ADD NEW ---> vpn-pdc.tcp
Protocol: TCP
Source Port: Any
Destination Port: Single Port: 1194

3.1.4 방화벽 외부망 설정
Protocol: UDP
Source Port: Any
Destination Port: Single Port: 1194

Protocol: TCP
Source Port: Any
Destination Port: Single Port: 1194

4. 윈도우 OpenVPN 클라이언트 구성.
4.1 소프트웨어 다운로드
보안장비 접근 -> INFRASTRUCTURE -> VPN -> SERVER -> Download client bundle 클릭

Client Type = Windows (리눅스 또는 맥 OS X를 선택할 수 있음)
Client’s Certificate = Fairline
번들에 OpenVPN 설치 프로그램 추가 확인(OpenVPN 소프트웨어 설치 프로그램 포함)
Connection Strategy = 무작위
Server Address = 보안장비 공유기 인터넷 주소(또는 유효한 DNS 호스트 이름) 즉, 접근할 서버이다.
Additional Server Address = 다른 publicIP 주소가 있는 경우에만
Second Additional Server Address = 다른 publicIP 주소가 있는 경우에만

보안장비에서 제공한 파일은 동작하지 않는다.

릴리즈 버전 https://build.openvpn.net/downloads/releases/
tap-windows-9.24.2-I601-Win7.exe 
openvpn-install-2.4.8-I602-Win7.exe

다운로드 받은 파일을 순서대로 설치
1. tap-windows-9.24.2-I601-Win7.exe 
2. openvpn-install-2.4.8-I602-Win7.exe

4.2 인증서 파일 설정.
Client's type: windows
Client's certificate: Nemoos
Connection strategy: Random
Server address: 172.16.1.165

다운로드 받은 파일을 다음 경로에 전부 이동 시킨다.
인증서 키 및 클라이언트 파일 구성 위치
D:\Program Files\OpenVPN\config

그후 vpn GUI 아이콘을 클릭한후, 착업창 이동 -> 연결을 누른다.

연결 실패시 로그를 확인한다.

pdc.vpn.udp-client.ovpn 파일을 열어 95번째 라인을 주석 처리한다.

Pydio 파일 공유 플랫폼 설치

 클라우드 Pydio 파일 공유 플랫폼 설치

아파치 웹서버 위에 pydio-former AjsXploer(http://pyd.io)의 기본 설치 및 구성에 대해 설명한다.
보안장비 기반의 클라우드 서비스이다.
내부 및 외부 사용자를 우한 플랫폼을 제공하는게 목적이다.

문서 작업 및 편집, 데이터 업로드(비디오, 오디오) 협업 기능이 가능하다.

요구사항.
보안장비 서비에서 웹 서비스(Apache Vritual Hosting)설치 및 구성
보안장비 웹서버에서 UserDir 및 Password Protec 웹 디렉토리 활성화

1. 도메인 생성.
cloud.fairlineai.com 생성.

2. 다운로드
http://pyd.io/ -> Download

7.0 이상 버전는 소스포즈에서 다운로드 할 수 없음.
wget https://download.pydio.com/latest/cells/release/%7Blatest%7D/linux-amd64/pydio-cells-%7Blatest%7D-linux-amd64.zip

7.0 이하 버전는 소스포즈에서 다운로드 가능.
- 6.4.2 버전으로 3.2 버전 동작하지 않음. 
wget https://sourceforge.net/projects/ajaxplorer/files/pydio/stable-channel/6.4.2/pydio-core-6.4.2.tar.gz

5.3 버전을 테스트 할 경우
wget http://downloads.sourceforge.net/project/ajaxplorer/pydio/stable-channel/5.2.3/pydio-core-5.2.3.tar.gz
tar xfvz pydio-core-5.2.3.tar.gz

현재 이 프로젝트는 6.4.2로 진행을 한다.

3. 필요한 묘듈 다운로드.
apt-get install  mysql-server-5.5 php5 php5-cli php5-gd php5-mysql php5-mcrypt libapr1 libaprutil1 ssl-cert php5-json
service nemoos webserver restart

3.1 테스트
https://cloud.fairlineai.com

3.1.1 권한 문제.
cp padio-versio/* /srv/www/cloud.fairlineai.com

cd -r /srv/www/cloud.fairlineai.com
chown -R www-data data/.

4. 데이터베이스 설치.
pydio 구성 데이터(사용자, 플러그, 문서 관리 등)를 위한 데이터 베이스를 설치하고 구성해야한다.
이 경우 보안장비에 가장 적합한 데이터베이스는 이미 설치되어 있다.
pydio 사용자 데이터 베이스를 추가 해줘야한다.

4.1 데이터 베이스 설치
mysql -u root -pt5GAJy6R
mysql> CREATE DATABASE IF NOT EXISTS pydio;
mysql> CREATE USER 'pydio'@'localhost' IDENTIFIED BY 'totoro';
mysql> GRANT ALL PRIVILEGES ON pydio.* TO 'pydio'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

4.2 mysql 접근 문제 발생시 해결 방법.
루트 계정으로 데이터베이스 접근 오류가 발생하면 재 설정해준다.
# dpkg-reconfigure mysql-server-5.5

패스워드 입력창이 나오면 mysql root 패스워드를 재 설정 해준다.

5. 웹 접근
https://cloud.fairlineai.com

5.1 웹 정보 창에 경고 메세지 해결

다음 명령을 실행해 문제 해결.
경고 메세지 없으면 설정 않해도 됨.
ln -s /etc/php5/conf.d/mycrypt.ini  /etc/php5/apache2/conf.d/20-mycrypt.ini

로케일 설정.
영문 설치 버전
sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

한글 설치 버전
sudo apt-get install language-pack-ko

sudo locale-gen "ko_KR.UTF-8"
sudo dpkg-reconfigure locales

성능 향상을 위해 php 출력 버퍼를 비활성한다.
vi  /etc/php5/apache2/php.ini
output_buffering = off

6. 기본 정보를 입력 하고 설치를 마무리 한다.

7 보안장비 HTTPS 적용.
보안장비 관리자 패널로 이동 .
웹 서버 모듈 이동

SSL 지원: Force SSL 선택 한다.

안전한 네트워크 환경에서 공유 클라우드 스토리지 플랫폼 구축이 완료 되었다.

home 사용자 public_html php 언어지원 환경 구축

일반 사용자 public_html php 언어지원 환경 구축

2.2 php 환경 설정.

cat /etc/apache2/mods-enabled/php5.conf

원본파일
<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

vi /etc/apache2/mods-enabled/php5.conf
변경 파일
<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    #<IfModule mod_userdir.c>
    #    <Directory /home/*/public_html>
    #        php_admin_value engine Off
    #    </Directory>
    #</IfModule>
</IfModule>

2.3 웹서버 재시자.
invoke-rc.d apache2 force-reload
invoke-rc.d apache2 restart

3 php 동작테스트
3.1 php 버전 정보 확인.
vi /home/user/public_html/phpinfo.php
<?php phpinfo() ?>

3.2 접근
http://host:port/~user/phpinfo.php

사용자 디렉토리 웹 패스워드 설청

사용자 디렉토리 웹 패스워드 설청
1. 보안장비 사용자 홈 디렉토리 웹서버 활성화.

1.1 보안장비 서비스 모듈 활성화
- webserver

1.1.1 사용자 홈 디렉토리 활성화 및 virutal hosts 생성.
사용자 생성: vvt01

wegserver -> public_html 체크

Virtual hosts
SSL support: Allow SSL
Name:virtual.fairlie.lan


1.1.2 테스트
http://fairline.lan/~vvt01
접근 실패

2. pubhtml_lib 디렉토리 사용 설정

2.1 user-dir 스크립터 작성
관리자 ID 사용자 변경
su snow

cd /home/snow

vi user-dir
#!/bin/bash
#for i in `ls /home | grep -v samba| grep -v lost+found`;   do
for i in `ls /home | grep -v samba| grep -v lost+found | grep -v Administrator | grep -v Guest | grep -v 루트계정 linuxlee`; do
mkdir /home/$i/public_html
## Make world readable and executable, so that www-data can access it  ##       
chmod -R 755 /home/$i
chgrp -R www-data /home/$i/public_html/

## Next code should be on a single line
echo " < html> < body style=' background-color:#2DC612' > < div align=' center' > < p> < H1 style=' color:#fff' > Welcome user $i on < a
style=' color:#fff'  href=' https://mydomain.com' > `hostname -f` < /a> < /H1> < /p> < /div> < /body> < /html> "  >  /home/$i/public_html
/index.html

## List /home/$USER permissions and public_html perm optional ##
echo " ......................." 
ls -all /home/$i
echo " ......................" 
ls -all /home/$i/public_html
done

2.2 실행 권한 부여
chmod +x user-dir

2.3 적용
sudo ./user-dir
sudo password for snow:

2.3.1 디렉토리 권한
/home 디렉토리 711 권한
/home/user 디렉토리 711 권한
public_html 디렉토리 755 권한


3. 테스트
http://fairlineai.com/~vvt01
https://fairlineai.com

접근되어진다.

4. 보안장비 접근 웹 디렉토리 암호 설정.
윈도우 로그인을 사용하기 위해 public_html.bat 파일 생성

웹 디렉토리를 암호로 보호하는 것은 웹 서버에서 웹 컨텐츠를 관리하는 보안 방법이다.

$ vi public_html.bat
explorer http://fairline.lan/~%username%
윈도우에서 스크립트를 작성하고 실행하는 이유는 https://technet.microsoft.com/en-us/library/bb613481(v=vs.85).aspx 여기에서 아이디어가 있음.

Domain -> Group Policy Objects -> Default Domain Policy -> GPO 에디터 아이콘 클릭.

Logon Scripts
로그인 스크립트 추가

Browse 클릭 후 -> public_html.bat 선택 > 체크

4.1 인증모드 활성화.
a2enmod auth_basic
service fairline webserver restart
/etc/init.d/fairline webserver restart

4.2 vhost 파일 코드 변경. none에서 ALL 변경
cp /usr/share/fairline/stubs/webserver/vhost.mas /usr/share/fairline/stubs/webserver/vhost.mas.blk
vi /usr/share/fairline/stubs/webserver/vhost.mas

<& /webserver/vhostHttp.mas,
      vHostName =>  $vHostName,
      hostname => $hostname,
      publicSSLPort => publicSSLPort,
      sslport => $sslport,
      sslSupport => $sslSupport,
&> --- > 이라인 뒤에 아래 문장 추가.

<Directory /sr/www<% $vHostName %>>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
</Directory>

4.3 서비스 재 시작.
service fairline webserver restart

5. 패스워드 설정.
루트 권한으로
mkdir /srv/www/htpass
chmod -R 750 /srv/www/htpass
chgrp -R www-data /srv/www/htpass
touch /srv/www/htpass/.htpasswd
htpasswd -c /srv/www/htpass/.htpasswd vvt00
New password:
Retype password:

유저 사용자 패스워드 추가.
Adding passw0rd for user vvt01

5.1 서비스 사이트 패스워드 세부 사항 적용.
vi /srv/www/virtual.fairline.lan/.htaccess
AuthType basic
AuthName password
AuthBasicProvider file
AuthUserFile /srv/www/htpass/.htpasswd
Require user vvt01

권한 및 소유그룹 변경.(오타자 난 그냥 넘어간다. virtual인데 서버에서는 virtual )
chmod 750 /srv/www/virtual.fairline.lan/.htaccess
chgrp www-data /srv/www/virtual.fairline.lan/.htaccess

vi /etc/apache2/apache2.conf(아피치 버전 따라 다름) 현 보안장비에서는 가상호스트에 바로 적용함.
AllowOverride none --> All 변경
AllowOverride All

/etc/init.d/apache2 restart

6. 접근 테스트
DNS 접근 설정.
https://virtual.fairline.lan

아이디 패스워드 질의.
정보 입력

PDC FTP 구축

PDC FTP 구축

파일 공유는 samba를 사용해 사용자 스토리지 서비스를 하기에 적당하다.
삼바의 smb(Server Message Block)프로토콜은 TCP/IP 프로토콜 스택 및 NetBIOS를 통해 로컬 네트워크에서 실행되도록 설계됨.
따라서 인터넷과 같은 공용 네트워크를 통해 삼바 사용자에게 접근 할 수 없음.

FTP 프로토콜은 TCP/IP에서만 실행되는 서버-클라이언트 아키텍처로 설계되었다.

FTP 서버는 사용자가 사용자 이름과 비밀번호를 사용하여 로그인하고 익명을 연결하며,
어느 정도 데이터 흐름을 암호화 할 수 있는 방법을 제공한다.
SSL/TLS 및 SFTP(SSH를 통한) 사용한 보안.

보안장비에서는 vsftpd를 기본으로 채택해 사용하고 있다.

요구 사항.
1. PDC (Primary Domain Controller)
보안장비을 PDC(Primary Domain Controller)로 설치하고 Windows 시스템 통합.

2. 윈도우 시스템에서 보안장비 PDC(기본 도메인 컨트롤러) 관리

1. DNS CNAME 도메인 추가
1.1 INFRASTRUCURE -> DNS -> Hostnames -> 아이콘 클릭


1.2 ftp 별칭 생성.
ftp1

2. DNS 응답 테스트
윈도우 10 시스템 이동 -> CMD
nslookup ftp1.fairlineai.com

2.1 DNS 관리 실행.
정방향 조희 -> ftp1 확인.

3. FTP 서버 설정
OFFICE -> FTP 이동
사용자 디렉토리 체크
사용자 홈 디렉토리만 접근 체크

SSL support: Allow SSL

4 방화벽 설정
SSL 암호화를 사용하도록 보안장비 FTP 서버를 구성했다.
일부 포트는 응용 프로그램 계층에 의해 동적으로 활당되 사용된다.
보안장비 방화벽은 기본적으로 1024 이상의 포트에서 FTP 필요한 파일 디렉토리 및 수동 연결 목록을 허용하지 않는다.
1024(655 - 65534) 전체 포트 범위를 열어주야 한다.

4.1 포트범위 서비스 생성
CORE -> Network -> Service 이동
ADD NEW
Service name: ftp-passive

4.1.1 포트범위 서비스 환경 설정.
ftp-passive - configuration 아이콘 클릭

Protocol = TCP/UDP
Source Port = Any
Destination Port = select Port range form 1024 to 65534

Port range : from 1024 to 65534

4.1.2 방화벽 적용.
Gateway -> Packet Filter -> Filtering rules from internal networks to Nemoos 선택
ADD NEW

Decision = ACCEPT
Source = Any
Service = 선택 ftp-passive
Description = a short description of this rule

5. FTP 공유 폴더 매핑
내 PC 선택 -> 오른쪽 마우스 클릭 -> 네트워크 위치 추가 -> 다음 선택 -> 사용자 지정 네트워크 위치 선택.
ftp://ftp1.fairlineai.com

5.1 사용자 정보 입력
익명 로그온 체크 해지
사용자 이름: pdcadmin

네트워크 우치 이름 입력: ftp1.fairlineai.com
다음 클릭

내 컴퓨터로 이동하면 ftp 정보를 확인 할 수 있다.

6. 우분투 매핑
노틸러스 파일 관리자를 열고 서버에 연결을 누르고 주소 정보를 입력 한 후 자격 증을 제공하면,
마운트된 ftp를 볼수 있다.

Add bookmark 를 통해 책갈피를 지정한다.
마우스 오른쪽 버튼을 누루면 하위 메뉴가 나온다.

PDC CentOS/Redhat/Fedora

보안장비 PDC CentOS/Redhat/Fedora 통합

1. CentOS 6.5에서 터미널을 열고 로컬 루트 계정으로 로그인 한다.

2. 브라우저를 열고 PowerBroker Identity Services package 를 다운로드 받는다.
사이트: https://www.beyondtrust.com/endpoint-privilege-management/active-directory-bridge?Pass=True

wget 명령어를 통해 다운로드 받을 수 있다.
# wget http://download.beyondtrust.com/PBISO/8.0.0.2016/linux.rpm.x64/pbis-open-8.0.0.2016.linux.x86_64.rpm.sh

3. 실행 권한 부여
chmod +x pbis-open-8.0.0.2016.linux.x86_64.rpm.sh

5. 보안장비와 연동할  Likewise Open 소프트웨어를 설치한다.

2 단계; 네트워크 구성

6 자동 DHCP 설정, DNS 서버를 보안장비 주소 172.16.1.x, 172.16.1.1(gw)를 설정한다.

7. dns 응답 테스트
ping mydomain.com

8 호스트 이름 설정
vi /etc/sysconfig/network
centos

3 단계; 보안장비 PDC에 CentOS 가입
CentOS 6.5 시스템은 보안장비 PDC 가입해 Active Directory의 일부가 되었다.

루트 사용자로 로그인 후 다음 명령을 실행한다.
# domainjoin-cli join domain_name domain_administrative_user

GUI 실행 하려면 다음 명령어를 사용한다.
# /opt/likewise/bin/domainjoin-gui

팝업창이 뜨며 도메인 설정 입력한다.
Active Directory Membership

Name and Domain
Cputer name: centos
Domain: mydomain.com

User names are usually prefixed with the name of the domain.
you can allow bare user names by specifying a default prefix.

체크: enable default user name prefix: MYDOMAN

Organizational Unit
Please select th OU to which this computer should be joined.
Nested OUs should be separated by a forwar-slash.

선택: Default (domputers or previously-joined OU)

Advanced
체크: Modify hosts file(/etc/hosts)

등록하면, 보안장비 관리자 자격 증명 입력 팝업창이 생성된다.
Domain Join authentication

Authentication Required
Joining a machine to Active Directory requires credentials for a Windows use with administrative privileges in the target domain

Credentials
User: linuxlee
Password:

OK

서버 응답 알림 메세지를 받게된다.

게으 리, [26.11.19 01:58]
9. 보안장비 등록 확인
사용자 및 컴퓨터 관리로 이동하여 CentOS  호스트 이름이 컴퓨터의 도메인 포리스트에 추가 되었는지 확인한다.

10 윈도우 시스템에서 확인.
윈도우즈_CentOS_등록정보확인.jpg

4 단계: 도메인 컨트로러에 로그인
14. 도메인에 속한 사용자로 로그인하려면 다음 명령을 입력
$ su -  domain_name\domain_user

$ su mydomain\\linuxlee

15 GUI로 접근 하려면 로그인창으로 이동

domain_name\domain_user

toher 선택
Username: mydomain\\linuxlee

로그인 후 시스템을 재부팅 하면 도메인이 자동으로 추가된다.
그런 다음 도메인 이럼없이 원격 사용자 이름을 사용하여 로그인 할 수 있다.

Other
Username: user2

콘솔 모드에서 확인.
$ su - mydomain.com\\user2
password:

$ whoami
user2

$ exit

$ su - user2
password:

$ whoami
user2

$ exit

11. 보안장비 PDC Active Directory에 CeotOS 기본 프로플이 저장되 원격 사용자로 로그인 할 수 있다.
/home/local/DOMAIN_NAME/domain_user

12. SSH를 통해 원격 로그인 하려면 로구인 구조를 사용한다.
domain_name\domain_user

"sh" 쉘 프롬프트를 bash 쉘로 변경 /bin/bash.

$ /bin/bash

5 단계 Active Directory 관리 권한 활성화

13. 루트 권한 부여
DOMAIN_NAME\domain_administrative_user    ALL=(ALL)  ALL
domain_administrative_user    ALL=(ALL)  ALL

# vi /etc/sudoers 또는 sudo visudo

MYDOMAIN\\linuxlee  ALL=(ALL) ALL
linuxlee  ALL=(ALL) ALL

보안장비 PDC 우분투 시스템 통합

5. 보안장비 PDC 우분투 시스템 통합
보안장비 3.2 PDC(Primary Domain Controller)은 윈도우 2003 서버처럼 동작하며,
XP, 7, 8, 8.1, Server Editions 2003/2008/2012와 같은 모든 종류의 윈도우 기반도 지원한다.

리눅스 배포판도 마찬가지로 지원을 한다.

1. 요구사항.
우분투 18.04
Winbind 기반의 Likewise Open 패키지는 13.10까지만 지원을한다.

1.1 우분투 소프트트웨어 업그레이드

2. 케노니컬 환결설정.
윈도우키 검색: software Update

2.1 소프트웨어(other Software) 탭에서 두 정식 파트너를 모두 확인한다.
체크 Canonical partners
체크 canonical Partners(source Code)
체크
체크

기본 적으로 밑에 두개만 체크 되어있다.
위에 캐노니카를 체크해준다.

케노니컬 지원 패키지 확인.
$ grep Package /var/lib/apt/lists/archive.canonical.com_ubuntu_dists_bionic_partner_binary-amd64_Packages
Package: adobe-flashplugin
Package: adobe-flash-properties-gtk
Package: adobe-flash-properties-kde
Package: google-cloud-sdk

sudo apt-get updte
13.10 까지만 지원 한다.
sudo apt-get install likewise-open-gui

3. 네트워크 설정.
IP 변경.
주소: 172.16.30.3
서브넷 마스크: 255.255.255.0
게이트웨이: 172.16.30.1

DNS 변경
172.16.1.165
172.16.30.1

3.1 테스트
ping 172.16.1.165
ping 172.16.30.1
ping infla6p.fairlineai.com

fping fairlineai.com
fping infla6p.fairlineai.com
fping gfl6sport.fairlineai.com

여러개의 아이피를 개별적으로 지정
# fping 173.194.127.95 173.194.127.79 173.194.127.88 173.194.127.87
173.194.127.95 is alive
173.194.127.79 is alive
173.194.127.88 is alive
173.194.127.87 is alive

아이피 스캔범위를 지정
# fping -s -g 173.194.127.79 173.194.127.95
173.194.127.79 is alive
173.194.127.80 is alive
173.194.127.81 is alive
173.194.127.82 is alive
173.194.127.83 is alive
173.194.127.84 is alive
173.194.127.85 is alive
173.194.127.86 is alive
173.194.127.87 is alive
173.194.127.88 is alive
173.194.127.89 is alive
173.194.127.90 is alive
173.194.127.91 is alive
173.194.127.92 is alive
173.194.127.93 is alive
173.194.127.94 is alive
173.194.127.95 is alive

네트워크 지정
# fping -g -r 3 173.194.127.0/29
173.194.127.0 is alive
173.194.127.1 is alive
173.194.127.2 is alive
173.194.127.3 is alive
173.194.127.4 is alive
173.194.127.5 is alive
173.194.127.6 is alive
173.194.127.7 is alive

요청에 응답한 아이피리스트 파일로 저장
# fping -g -r 3 173.194.127.0/29 > CHK_PING.TXT

파일로 지정된 아이피 응답 확인
# cat CHK_PING.TXT
naver.com
daum.net
google.com
yahoo.com
smileserv.com

# fping -a -f CHK_PING.TXT
smileserv.com
google.com
yahoo.com

3.2. 호스트 확인.
$ hostname
gfl6sport

$ cat /etc/hostname
gfl6sport

4. 보안장비 PDC 우분투 데스크톱 가입.
4.1 Active Directory 구성

4.1.1 CLI 방식 설정
CLI
ex> sudo domainjoin-cli join domain_name domain_administrative_user

실 사용.
sudo domaijoin-cli join fairlineai.com pdcadmin
패스워드 입력:

4.1.2 GUI 방식  설정
$ sudo domainjoin-gui

4.1.2.1 Active Directory Membership
Name and Domain

Computer name: 사용 컴퍼터 이름 ubuntu
Domain: fairline.com
체크: Enable default user name prefix: FAIRLINE

Orjanizational Unit
Please select the OU to which this computer should be joined.
Nested OUs should be separated by a forward-slash.

체크: Default(computers or previously-joined OU)

Advanced
체크: Modify hosts file(/etc/hosts)
Joine Domain 클릭

4.1.2.2 팝업창 Authentication Required
Joining a machine to Active Directory requireds credentials for a Windows user with
adminstrative privileges in the target domain.

Credentials
User: pdcadmin
password:
OK

성공 팝업창 확인

5. PDC 확인
5.1 보안 PDC
Users and Computers -> Manage 이동 -> Computers
UBUNTU

5.2 윈도우 10 PDC
Active Directory 사용자 및 컴퓨터 실행
fairlineai.com -> Computers 이동
UBUNTU 확인

6. 도메인 컨트롤 로그인
su - fairline.com\pdcadmin
password:

7. 윈도우 메니저 수정.
GUI 로그인 창을 통해 로그온 활성화.

vi /etc/lightdm/lightdm.conf.d/10-ubuuntu.conf
allow-guest=false
greeter-show-manual-login=true

전체 파일 내용.
[SeatDefaults]
user-session=ubuntu

# disable guest login
allow-guest=false

# enable ser login manually
greeter-show-manual-login=true


7.1 로그온
사용자 계정 로그아웃
GUI 화면 창 입력
login: fairlineai\pdcadmin

7.2 기본 프로필 확인
/home/likewise-open/DOMAIN_NAME/domain_user

8 CLI 로그인
$ su - fairline\\pdcadmin
password:

8.1 SSH 원격 로그인
domain_name\domain_user

login as: fairlineai\pdcadmin

linuxlee@ubuntu:~$

9 사용자 경로.
Active Diectory 사용자와, 우분투 시스템의 사용자는 홈경로가 나르다.
UID 및 Group 에 대한 정보가 다르기 때문이다.

10 루트 권한 부여.
 sudo vi /etc/sudoers

DOMAIN_NAME\domain_administrative_user    ALL=(ALL)  ALL
the_same_domain_administrative_user   ALL=(ALL)  ALL

실재 적용 내용
root 아래
FAIRLINE\\pdcadmin ALL=(ALL:ALL) ALL

==================
14.04 PDC 통합
==================
우분투 14.04(Trusty Tahr)를 보안장비 PDC에 통합.

13.10에 사용했던 일부 소프트웨어 패키지의 기능이 변경되었다.
like-open 패키지에 대한 지원을 중단.

1 단계: 종속성 패키지 다운로드
1. 패키지를 수동으로 다운로드한다.

likewise-open:
libglade2-0
likewise-open-gui

다운로드 명령어
$ wget http://de.archive.ubuntu.com/ubuntu/pool/main/l/likewise-open/likewise-open_6.1.0.406-0ubuntu10_amd64.deb
$ wget http://de.archive.ubuntu.com/ubuntu/pool/main/libg/libglade2/libglade2-0_2.6.4-1ubuntu3_amd64.deb
$ wget http://de.archive.ubuntu.com/ubuntu/pool/universe/l/likewise-open/likewise-open-gui_6.1.0.406-0ubuntu10_amd64.deb

2 설치 명령어
$ sudo dpkg -i likewise-open_6.1.0.406-0ubuntu10_amd64.deb
$ sudo dpkg -i libglade2-0_2.6.4-1ubuntu3_amd64.deb
$ sudo dpkg -i likewise-open-gui_6.1.0.406-0ubuntu10_amd64.deb

2 단계: 보안장비 PDC 14.04 통합.
3. GUI를 사용하려면 터미널에서 다음 명령을 실행
sudo domainjoin-gui

Active Directory Membership
Name and Domain

computer name: ubuntu-desktop
domain: mydomain.com

User names are usually prefixed with the name of the domain.
You can allow bre user names by specifying a default prefix.

체크: Enable default user name prefix: MYDOMAIN

orfanizational Unit
Please select the OU to which this computer shoud be joind.
Nested OUs should be seprated by a forward-slash.

선택: default (computers or previously-joined OU)

Advanced
체크: modify hosts file(/etc/hosts)

Join Domain 선택

팝업창 Authentication Required
Joining a machine to Active Directory requireds credentials for a Windows user with
adminstrative privileges in the target domain.

Credentials
User: linuxle
password:
OK

성공 팝업창 확인

4. 명령어로 확인.
sudo domainjoin-cli join mydomain.com linuxlee

5. 우분투 14.04 시스템 재부팅
재부팅 후 보안장비 관리자 인터페이스 이동.
사용자 및 컴퓨터 모듈에 확인 가능

보안장비 PDC 상태 확인 명령어.
lw-get-status

3 단계: 도메인 자격 증명으로 로그인
우분투 14.04는 로그온 화면에서 내부 시스템 사용자만 허용한다.
Active Directory에 사용자를 로그인 할 수 있는 기능을 제공하지 않는다.

6. 우분투 14.04 로그온 활성화.

수정해야 할 파일
/usr/share/lightdm.conf.d/50-ubuntu.conf

allow-guest=false          ## If you want to disable Guest login
greeter-show-manual-login=true  ## Enables manual login field

여기 까지 설정 한 다음 재부팅

7. 재부팅 후 로그인을 선택하고 Active Directory 사용자 자격을 증명 해준다.

domain_name\domain_user
domain_name.tld\domain_user
domain_user

GUI 화면에
linuxlee
패스워 입력

8. 터미널 CLI 로그인 하기
$ su - domain_name\domain_user
$ su - domain_user

실제 적용.
$ su - mydomain\\linuxlee
password:

Active Diectory 사용자는 홈경로, UID 및 Group 에 대한 정보가 내부 우분투 사용자와는 다르다.

명령어 id로 확인하면된다.


4 단계: Active Directory 관리 권한 활성화.
9. 루트 권한 부여
$ sudo usermod -a -G sudo AD_administrative_user

실제 사용
$ sudo usermod -a -G sudo linuxlee

vi /etc/sudoers
%sudo ALL=(ALL:ALL) ALL

5 단계: 도메인 탈퇴
10. GUI 탈티
$ sudo domainjoin-gui

Likewise AD Settings
Active Directory Membership

Status: Joined
Computer Name: ubuntu-desktop
domain: MYDOMAIN.COM

reave domain 선택

명령어로 하려만 다음 명령어 사용.
$ sudo domainjoin-cli leave domain_name

실제 사용 명령어
sudo domainjoin-cli leave mydomain.com

==================
18.04 PDC 통합
==================

18.04 Active directory domain

네트워크 설정

sudo apt update
sudo apt-get install fping

우분투 데스크톱에서 Active Directory 도메인 접근 검사.
dig -t SRV _ldap._tcp.fairlineai.com | grep -A2 "ANSWER SECTION"

메세지 내용 확인 후 테스트
ping fairlineai.com
ping infla6p.fairlineai.com
ping gfl6sport.fairlineai.com

fping fairlineai.com
fping infla6p.fairlineai.com
fping gfl6sport.fairlineai.com

sudo apt-get -y install realmd sssd sssd-tools samba-common krb5-user packagekit samba-common-bin samba-libs adcli ntp

sudo vi /etc/ntp.conf
gfl6sport.fairlineai.com

sudo service ntp restart

sudo vi /etc/realmd.conf

[users]
default-home = /home/%D/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
os-name = Ubuntu Desktop Linux
os-version = 14.04
[service]
automatic-install = no
[fairlineai.com]
fully-qualified-names = no
automatic-id-mapping = yes
user-principal = yes
manage-system = no

도메인 등록
sudo kinit administrator@fairlineai.com

비밀번호 입력 :

우분투 머신, 도메인 추가.
sudo realm --verbose join fairlineai.com \
--user-principal=UBUNTUVMACHINE/administrator@FAIRLINEAI.COM --unattended

vi /etc/sssd/sssd.conf

찾아서 주석 처리 후 변경.
# access_provider = simple
access_provider = ad

sudo service sssd restart

새로운 사용자 홈디렉토리 자동 생성.
sudo vi /etc/pam.d/common-session
...
session required pam_unix.so
session optional pam_winbind.so
session optional pam_sss.so
session optional pam_systemd.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
# end of pam-auth-update config

사용자 테스트
id domainuser(test1)

uid=951601106(test1) gid=951600513(domain users) groups=951600513(domain users)

sudo vi /etc/lightdm/lightdm.conf
[SeatDefaults]
allow-guest=false
greeter-show-manual-login=true

사용자 파일 공유 및 권한 설정

사용자 파일 공유 및 권한 설정.

이 설정은 보안장비 3.2 PDC(설치, 기본 구성, DNS, 원격 관리 도구, GPO 및 OU)에 대한 작업의 연속이다.

OU 구성 도메인을 만들 후, 사용자 및 컴퓨터에 GPO를 사용 하도록 설정한다.

공유 방법은 도메인에 대한 기본 그룹 정책을 통해, 도메인의 모든 사용자에게 적용되며, 사용자별 공유에 접근할 수 있는 보안 수준이 다르다.

1. 파일 공유 설정.
1.1 보안장비 관리자 인테페이스 접근

1.2 공유 추가.
OFFICE -> File Sharing -> ADD NEW 클릭

Share name: Collective
Share Path: Directory Under Nemoos : collective
Comment: Collective share for all us

ADD 클릭
시스템 변경 사항 적용.(Save Change)

2. 보안장비 3.2 확인.
2.1 ssh 접근

적용된 디렉토리 확인.
ls -all /home/samba/shares
total 16
drwxrwx---+ 3 root __USERS__      4096 Dec  1 12:20 .
drwxrwx---+ 4 root __USERS__      4096 Nov 28 13:08 ..
drwxrwx---+ 2 root Administrators 4096 Dec  1 12:20 collective

ACL 나열
getfacl /home/samba/shares/collective

getfacl: Removing leading '/' from absolute path names
# file: home/samba/shares/collective
# owner: root
# group: Administrators
user::rwx
user:root:rwx
user:3000000:rwx
user:3000002:rwx
user:3000008:rwx
group::rwx
group:Administrators:rwx
group:3000002:rwx
group:Domain\040Admins:rwx
mask::rwx
other::---
default:user::rwx
default:user:root:rwx
default:user:3000000:rwx
default:user:3000002:rwx
default:user:3000008:rwx
default:group::---
default:group:Administrators:rwx
default:group:3000002:rwx
default:group:Domain\040Admins:rwx
default:mask::rwx
default:other::---

3. 공유 세부 설정.
3.1 편집.
OFFICE -> File Sharing -> Access control 아이콘 클릭 -> Add New 클릭

3.1.1 관리자
User/Grop: User -> pdcadmin
Permissions: Administrator

3.1.2 사용자
User/Grop: User -> user2
Permissions: Read only

시스템 적용(save changes)

3.2 확인.
ssh 이동 -> 명령어 실행.

getfacl /home/samba/shares/collective

# file: home/samba/shares/collective
# owner: root
# group: Administrators
user::rwx
user:root:rwx
user:3000000:rwx
user:3000002:rwx
user:3000008:rwx
user:pdcadmin:rwx  ----> 추가 내용 확인.
user:user2:r-x     ----> 추가 내용 확인.
group::rwx
group:Administrators:rwx
group:3000002:rwx
group:Domain\040Admins:rwx
mask::rwx
other::---
default:user::rwx
default:user:root:rwx
default:user:3000000:rwx
default:user:3000002:rwx
default:user:3000008:rwx
default:user:pdcadmin:rwx
default:user:user2:r-x
default:group::---
default:group:Administrators:rwx
default:group:3000002:rwx
default:group:Domain\040Admins:rwx
default:mask::rwx
default:other::---

경고: 공유 접근 목록에 없는 사용자는 공유에 접근 할 수 없다.

4. 공유 접근
4.1 윈도우 10 로그인
관리자 권한: pdcadmin

4.1.1 접근
윈도우 키 -> GUI 콘솔창 -> \\gfl6sport.fairlineai.com\Collecive

5. 마운트
5.1 수동 마운트

도스창
net use X: \\gfl6sport.fairlineai.com\Collective

5.2 자동 마운트
자동 마운트 하기전 수동으로 명령어를 한번 작성해 줘야 한다.

map_collective.bat  파일 생성

마운트 스크립트 작성.
net use X: \\gfl6sport.fairlineai.com\Collecive

파일 확장자 확인.
제어판 -> 모양 및 개인 설정 -> 폴더 옵션 -> 보기 탭
알려진 파일 형식의 확장자 숨기기 선택 해제.

5.1 보안장비 도메인 기본 정책
Office -> Domain -> Group Policy Objects -> Default Domain Policy -> GPO Editor 편집 아이콘 클릭

User Configuration -> Logon Scripts -> ADD NEW 클릭
Script type: Batch
파일선택 클릭
방금 작성한 map_collective.bat 파일 선택
ADD 클릭

보안장비 등록 위치
/home/samba/profiles/pdcadmin.V6/Desktop/map_collective.bat
/opt/samba4/var/locks/sysvol/fairlineai.com/Policies/{31B2F340-016D-11D2-945F-00C04FB984F9}/USER/Scripts/Logon/map_collective.bat

5.2 확인
윈도우 10 로그 오프
로그인

탐색기 이동 -> 내 PC -> X 드라이버 확인.

PDC OU GPO

보안장비 PDC 서버에서 OU(조직 구성 단위) 생성 및 GPO(그룹 정책) 활성화

윈도우즈 기반 노드를 구성하는 방법
조직 구성 단위(OU)를 작성하여 도메인에 가입 한 사용자 및 컴퓨터에 어느 정도의 보안 및 구성을 적용한다.

(OU) Organizational Units 조직 구성단위.
GPO (Group Policy) 그룹 정책.

GPO 활성화(그룹 정책)
이미 알고 있듯이 GPO는 사용자 계정, 컴퓨터, 작업 환경, 설정, 응용 프로그램 및 기타 보안 관련 문제를 제어하는 소프트웨어로,
모든 Windows 데스크톱 및 서버 운영 체제의 중심이 된다.

이 주제는 매우 복잡한 주제다.
수많은 문서가 주제에 대해 게시되었지만 여기에서는 보안장비 3.2 pdc 서버에 가입 한 사용자 및 컴퓨터에서,
GPO를 활성화하는 방법에 대한 기본 구현을 다룬다.

1. 보안장비 조직 단위 설정.
OFFICE -> Users and Computers -> fairlineai.com 선택 -> + 아이콘 클릭
Add Organizational Unit
Name: Allowed_Users

2. 윈도우 10 조직 구성 단위 확인.
그룹정책 관리 더블 클릭
포리스트: fairlineai.com -> 도메인
fairlineai.com -> Allowed_Users -> 오른쪽 마우스 클릭 -> 이 도메인에서 GPO를 만들어 여기에 연결(C)... 선택

이름: Allowed_GPO
원본 스타터 GPS(s): 없음.
확인

2.1 구성 설정
Allowed_GPO 오른쪽 마우스 클릭 -> 편집 선택

이 설정은 OU로 이동 한 사용자 및 컴퓨터에만 적용된다.

기본 설정은 다음과 같다.
A.
그룹정책 관리 더블 클릭
포리스트: fairlineai.com -> 도메인
fairlineai.com -> Allowed_Users -> Allowed_GPO 선택 -> 오른쪽 마우스 -> 편집 -> 팝업창 생성.
컴퓨터 구성 -> 정책 -> Windows 설정 -> 보안 설정 -> 로컬 정책 -> 보안 옵션 -> 대화 형 로그온 ->

대화형 로그온: 로그온을 시도화는 사용자에 대한 메시지 제목
체크 : 이 정책 설정 정의(D)
Wellcome to FAIRLINEAI.COM domain 1
적용 -> 확인

경고: 지금까지 전체 도메인 및 사용자 컴퓨터들에게 이 설정을 적용하려면 도메인 포리스트 목록에서 기본 도메인 정책 파일을 선택하고 편집해야 한다.

보안장비 확인
OFFICE -> Group Policy Objects -> Allowed_GPO

B.
그룹정책 관리 더블 클릭
포리스트: fairlineai.com -> 도메인
fairlineai.com -> Allowed_Users -> Allowed_GPO 선택 -> 오른쪽 마우스 -> 편집 -> 팝업창 생성.
사용자 구성 -> 정책 -> 관리 템플릿 -> 제어판 -> Prohibit access to control panel and PC Settings(제어판 및 PC 설정에 대한 액세스 금지)

Enable 선택
적용 -> 확인.

여기서는 시연용으로 구성한다.
포리스트: fairlineai.com -> 도메인
fairlineai.com -> Allowed_Users -> Allowed_GPO 선택 -> 오른쪽 마우스 -> 편집 -> 팝업창 생성.
사용자 구성 -> 정책 -> 시스템 -> Ctrl + Alt + Del 옵션
암호 변경 사용 안함 : 사용
작업 관리자 제거 : 사용
로그오프 제거 : 사용

보안장비 확인.
OFFICE -> Group Policy Links
추가된 내용 확인.

다시 윈도우 10으로 이동
Windows 그룹 정책 관리 원격 도구 실행
도메인 -> fairlineai.com -> Allowed_Users -> Allowed_GPO 선택 -> 오른쪽 마우스 클릭 -> 적용 체크, 연결사용 체크
상단 탭들이 있음.

GPO 정책 목록 확인.
도메인 -> fairlineai.com -> Allowed_Users -> Allowed_GPO -> Allowed_GPO 클릭
상단 탭 -> 설정

OU -> GPO 목록을 확인 할 수 있다.

3. 보안장비 설정
user3:Allowed_Users 그룹 추가.

4. 테스트
윈도우 10 재부팅 및 로그아웃
로그인: user3

5. OU(조직 구성 단위) 사용자 추가.
이제 이 설정을 효과적으로 적용하기 위해 새 OU 에 사용자를 추가 할 수 있다.
user2에 대해 의심이 있고 Allowed_User OU GPO 에서 제한 한 사항이 있다고 가정한다.

5.1 조직 구성 단위 사용자 추가.
Windows 10 원격 시스템 ->  Active Directory 사용자 및 컴퓨터 실행
fairlineai.com -> Users
오른쪽 창으로 마우스 좌표 이동 -> user2 -> 새로 만들기 -> 사용자

5.2 조직 구성 단위 사용자 추가.
Windows 10 원격 시스템 ->  Active Directory 사용자 및 컴퓨터 실행
fairlineai.com -> Users
오른쪽 창으로 마우스 좌표 이동 -> user2 선택 -> 이동 -> Allowed_Users 선택 -> 확인.

5.3 확인
fairlineai.com -> Allowed_Users 선택
user2 추가된 내용 확인.

작업관리자, 제어판, 기타 관련 컴퓨터 설정에 접근 할 수 없음.

윈도우즈 10 PDC 연동 관리

윈도우 시스템 보안장비 PDC 연동 관리.

보안장비 3.2 PDC(primary domain controller)는 Windows 2003 Active Directory 거의 완벽하게 모방하고 있다.

즉, 사용자 및 그룹 설정, 파일 공유, DNS 서버에 새 도메인 또는 새 레코드 추가 및 모든 사용자 및 컴퓨터에 대한 그룹 정책 설정을 할 수 있다.
실제로는 Active Directory에 통합되어있어 많은 계정과 컴퓨터의 보안을 매우 쉽게 관리 할 수 있으며 Windows 7 또는 8.1 컴퓨터에 대한 기본 라이센스 하나만 사용하면 된다.
Windows 2008/2012 서버 라이센스

요구 사항:
- 도메인 이름 fairlineai.com 사용한다. 
- 보안장비 3.2 버전의 PDC에 통합되어,윈도우 10 컴퓨터에서 도메인 관리를 할 수 있다.
- Windows 10 원격 서버 관리 도구
- SSH 원격 클라이언트
- WinSCP 원격 클라이언트


1. fairlineai.com에 Windows 시스템 통합
윈도우 10 관리자 계정 네트워크 설정.
1.1 윈도우 7 네트워크 설정
1.1.1 삼성 R518 테스트 장비

IP 변경.
주소: 172.16.30.2
서브넷 마스크: 255.255.255.0
게이트웨이: 172.16.1.165

DNS 변경
172.16.1.165
172.16.30.1

1.1.2 개발 컴퓨터
IP 변경.
주소: 172.16.1.23
서브넷 마스크: 255.255.255.0
게이트웨이: 172.16.1.1

DNS 변경
172.16.1.165
172.16.1.1

1.2 테스트
ping fairlineai.com
ping infla6p.fairlineai.com

동작확인.

2. 윈도우 10 정보 변경
컴퓨터 이름 및 도메인 지정.
시스템 속성 -> 컴퓨터 이름 -> 변경 클릭

소속그룹
도메인 선택 -> fairlineai.com
ID: pdcadmin
PW

윈도우 10 재 부팅후 적용됨.
pdcadmin
패스워드 입력.

이게 동작 안할 경우
fairlineai\pdcadmin
패스워드 입력.

3. 확인
보안 장비 이동
Users and Computers 이동

4. 윈도우즈 10 보안장비 PDC 접근 관리 도구 설치.
4.1 윈도우 10 원격 관리 도구 다운로드
https://www.microsoft.com/ko-kr/download/details.aspx?id=45520

4.2 원격접근 활성화.
시스템 재부팅 -> 제어판 -> 프로그램 및 기능 -> Windows 기능 켜기/끄기

Remote Server Administration Tools(기본적으로 모두 체크되어 있다.)
- Feature Administration Tools
-- Group Policy Management Tools

- Role Administration Tools
-- Active Directory Authority Toos
--- Certification Authority Tools

-- AD DS Tools
--- Active Directory Administrative Center
--- AD DS Snap-ins and Command-line Tools

-- DNS Server Tools

-- File Services Tools
--- Share and storage Manager Tools ---> RAST 윈도우 10에서 더이상 사용하지 않음.

SMB로 변경 된 것으로 추정.
SMB 1.0/CIFS 파일 공유 지원 체크 해놓고 테스트 해본다.

이것만 체크 하면 된다.

시스템 재부팅

4.3 바로가기 만들기
시작 -> 제어판 -> 시스템 및 보안 -> 관리 도구
Active Directory 사용자 및 컴퓨터
DNS
그룹 정책 관리.

5. DNS 연동.
바로가기 DNS 메뉴 -> 다음 컴퓨터
gfl6sport.fairlineai.com

DNS 관리자 GUI 팝업창 생성된다.

6. 윈도우즈 10 DNS 관리자 호스트 추가
gfl6sport.fairlineai.com 선텍 -> 정방향 조회 영역 선택 ->
오른쪽 화면에 보안장비 PDC DNS 내용 확인.
오른쪽 화면 마우스 좌표 이동 -> 마우스 오른쪽 클릭 새 호스트(A 또는 AAA)... 선택

팝업창 생성
별칭 이름(입력하지 않으면 부모 도메인 사용): some_other_computer
대상 호스트의 FQDN(정규화된 도메인 이름)(F): 172,16.10.2

체크: 연결된 PTR(포인터 레코드) 만들기(C)

호스트 추가 버튼 클릭

6.1 새롭운 CNAME 추가
gfl6sport.fairlineai.com 선텍 -> 정방향 조회 영역 선택 ->
오른쪽 화면에 보안장비 PDC DNS 내용 확인.
오른쪽 화면 마우스 좌표 이동 -> 마우스 오른쪽 클릭 새 별칭(CNAME)(A)... 선택

별칭 이름(입력하지 않으면 부모 도메인 사용)(S): smb

대상 호스트의 FQDN(정규화된 도메인 이름)(F): gfl6sport.fairlineai.com

6.2 테스트
ping smb.fairlineai.com

7. 보안장비 PDC 포워드 DNS 설정.
DNS -> Forwarders -> ADD New
8.8.8.8
8.8.4.4

7.1 보안장비 새 별칭 추가
DNS -> Domains -> Hostnames 아이콘 클릭 -> Alias 아이콘 클릭 -> ADD New
samba

시스템 적용.

7.2 윈도우 10 DNS 생성 확인
윈도우 10 -> DNS 관리자 -> gfl6sport.fairlineai.com -> 정뱡향 조회 영역 -> fairlineai.com 선택
오른쪽 화면에 보안장비 DNS 별칭 추가한 내용이 동기화 된 내용을 볼 수 있다.
기존 smb 내용이 samba로 변경.

8 그룹 생성.
윈도우 10에서 DNS 서버에 레코드를 필요한 만큼 추가 할 수 있다.

8.1 Active_Directory 그룹 생성
Active_Directory_사용자및컴퓨터 이동.
fairlineai.com -> Groups 선택
오른쪽 마우스 클릭 -> 새로만들기 -> 그룹 선택

팝업창 생성.
그룹 이름(A):
Windows 2000 이전 버전의 그룹 이름(W):

그룹 범위:
글로벌
배포 ---> 보안 선택시 관리 권한이 허용됨, 일반 사용자들이 므로 배포 선택)

8.2 사용자 생성.
Active_Directory_사용자및컴퓨터 이동.
fairlineai.com -> Users 선택
오른쪽 마우스 클릭 -> 새로만들기 -> 사용자

이름(F): user3
사용자 로그온 이름: user3

다음 버튼 클릭
암호:
암호 확인:

체크: 다음 로그온 시 사용자가 반드시 암호를 변경해야 함(M)

9. 보안장비 사용자 추가 확인.
OFFICE -> User and Computers -> Manage 이동
-Groups -> Allowed_Users 추가 됨.
-Users -> user3(user3) 추가 됨.

사용자가 생성되고 난 다음에 그룹을 지정할 수 있음.
그룹 생성
배포 그룹으로 Restricted_Users 생성.
user3을 Restricted_Users 등록

9.1 윈도우 10 변경사항 확인.
Active_Directory_사용자및컴퓨터 이동.
fairlineai.com -> Users 선택

user3 더블 클릭 -> 소속 그룹 탭으로 이동.
추가된 내용을 확인 할 수 있음.

사용자 정보는 여기서 관리 할 수 있음.

도메인에 로그온 한 모든 컴퓨터들은 동일한 데스크톱 환경을 가지게 된다.

10. 로밍 프로필 경로.
/home/samba/profiles 경로에 유지한다.
putty 또는 SCP 와 같은 프로그램을 사용해 원격 관리한다.

PDC (Primary Domain Controller)

페어라인 우분투 : 12.04
보안장비 버전 3.2

도메인 이름: fairlineai.com
IP 주소: 172.16.1.65
관지자 포트 5700

ID: linuxlee
PW

서버 구성 환경
eth0 172.16.1.165 외부망 연동.
eth1 172.16.10.1 내부망 넷기어 8포트 1Gbps 연동
eth2 172.16.20.1 내부망 D-Link 2.4G WiFi 연동
eth3 172.16.30.1 내부망 연동 -> PDC 환경구성.

방화벽 설정.
외부 ICMP 활성화.

DNS 서버 연동
172.16.1.1 현제 인터넷 망과 연동된 장비 이동
DNS 정보 추가.
https://fairlineai.com 접근 확인.

2차 도메인 설정시 ldap에서 문제가 발생한다.
즉 처음 도메인 설정시 infla6p.fairlineai.com 으로 설정해 진행을 해지만 ldap에서 문제가 발생.
- 윈도우 시스템에서 연결은 되나 로그인이 안되는 문제가 발생함.

트러블 슈팅 내용 정리.
- nemoos-mail schemas
sudo -s # this will prompt your for password to get superuser access
/usr/share/nemoos-mail/mail-ldap update
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('mail'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account


- nemoos-mailfilter:
sudo -s # this will prompt your for password to get superuser access
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('mailfilter'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account

- nemoos-jabber:
sudo -s # this will prompt your for password to get superuser access
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('jabber'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account

- captive-portal schemas:
sudo -s # this will prompt your for password to get superuser access
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('captiveportal'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account

- nemoos-asterisk:
sudo -s # this will prompt your for password to get superuser access
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('asterisk'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account

- nemoos-samba:
sudo -s # this will prompt your for password to get superuser access
perl -MNEMo -MNEMo::Global -e'NEMo::init(); $mod = NEMo::Global->modInstance('samba'); $mod->reprovisionLDAP(); 1'
/etc/init.d/nemoos webserver restart
exit # exit superuser account

삼바 설정 검사.
# samba-tool dbcheck
# samba-tool dbcheck --fix --yes

삼바 로그 확인.
cat /var/log/nemoos/nemoos.log | grep s4sync 

해결 방안.
fairlineai.com 으로 변경해 적용시켜다.

1. Active Directory 관리자 생성.
1.1 User and Computers 이동

사용자 추가
Add User
user 체크
User Name: pdcadmin 
first name: 이
Last name: 장호
Description:administrator for pdc
Passwdord:
retype password
Group: 그룹은 없음.

사용자 그룹 추가
기본 생성된 Domain Admins 그룹 추가.
- 사용자 선택 -> User groups 창 -> Domain Admins 선택 -> + 아이콘 선택

2. 도메인 로밍 설정
2.1 OFFICE 메뉴 -> Domain -> Settings 이동.

Domain
Settings

Server Role: Domain controler
Realm: infla6p.fairlineai.com
NetBIOS domain name: FAIRLINEAI
NetBIOS computer name: gfl6sport
Server description: Fairline Gist PDC Server
Enable roaming profiles: 체크
Drive Latter : H

CHANGE 클릭

도메인 이름을 변경하면 samba 데이터베이스가 다시 프로비저닝됩니다.
사용자 및 그룹을 Nemoos LDAP에서 가져 오지만 모든 컴퓨터를 새 도메인에 다시 가입시켜야합니다.

OK 버튼 클릭

시스템 적용
Save changes

3. 윈도우 시스템 통합.
3.1 윈도우 7 네트워크 설정
3.1.1 삼성 R518 테스트 장비

IP 변경.
주소: 172.16.30.2
서브넷 마스크: 255.255.255.0
게이트웨이: 172.16.30.1

DNS 변경
172.16.1.165
172.16.30.1

3.1.2 개발 컴퓨터
IP 변경.
주소: 172.16.1.23
서브넷 마스크: 255.255.255.0
게이트웨이: 172.16.1.1

DNS 변경
172.16.1.165
172.16.1.1

3.2 테스트
삼성 노트북
ping 172.16.1.165
ping 172.16.30.1
ping infla6p.fairlineai.com

개발 컴퓨터
ping 172.16.1.165
ping 172.16.30.1
ping infla6p.fairlineai.com

4. 윈도우 7 정보 변경
컴퓨터 이름 및 도메인 지정.
시스템 속성 -> 컴퓨터 이름 -> 변경 클릭

소속그룹
도메인 선택 -> fairlineai.com
ID: pdcadmin
PW

윈도우 7 재 부팅후 적용됨.
pdcadmin
패스워드 입력.

이게 동작 안할 경우
fairlineai\pdcadmin
패스워드 입력.

5. 확인
보안 장비 이동
Users and Computers 이동

ARP

TCP/IP 공격 - ARP 캐시 Poisoning

'A'와 'B'가 매우 좋은 친구이고 'A'가 모든 비밀을 'B'와 공유한다고 가정한다.

남자 'C'가 들어 와서 마치 'B'인 것처럼 행동한다.
'A'는 그의 모든 비밀을 'C'에게 알려주고 'C'는 그것을 오용 할 수 있게된다.

ARP 프로토콜
ARP 프로토콜은 다음 4 가지 기본 메시지로 구성된다.

1. ARP 요청 : 컴퓨터 'A'가 네트워크에서 "이 IP를 가진 사람은 누구입니까?"
2. ARP 응답 : 요청한 IP가있는 컴퓨터를 제외한 다른 모든 컴퓨터는 요청을 무시합니다.
             이 컴퓨터에 'B'라고 말하면 요청한 IP 주소가 있으며 여기에 내 MAC 주소가 있다.
3. RARP 요청 : 이것은 ARP 요청과 거의 동일하지만이 메시지에서 MAC 주소가 네트워크에서 브로드 캐스트된다는 점이 다르다.
4, RARP 답변 : 같은 개념. 컴퓨터 'B'는 요청한 MAC이 내 것이고 여기는 내 IP 주소라고 알려준다.

네트워크에 연결된 모든 장치에는 ARP 캐시가존재한다.
이 캐시에는 호스트가 이미 통신 한 네트워크 장치에 대한 모든 MAC 및 IP 주소의 매핑이 포함된다.

ARP 프로토콜은 간단하고 효율적으로 설계되었지만 프로토콜의 주요 결함은 인증이 없다는 것이다.
구현에 인증이 추가되지 않았으므로 ARP 응답에서 IP 대 MAC 주소 매핑을 인증 할 방법이 없다.
또한 호스트는 ARP 응답 메시지를 수신하는 ARP 요청을 보냈는지 여부도 확인하지 않는다.

컴퓨터 'A'가 전송하고 ARP 요청을 받고 ARP 응답을받는 경우 ARP 프로토콜은 ARP 응답의 정보 또는 IP-MAC 맵핑이 올바른지 여부를 절대 확인할 수 없다.
또한 호스트가 ARP 요청을 보내지 않고 ARP 응답을받는 경우에도 응답에서 정보를 신뢰하고 ARP 캐시를 업데이트 한다.
이것을 ARP 캐시 poisoning(중독) 이라고 한다.

이러한 약점을 이용해 ARP 프로토콜을 쉽게 이용할 수 있다.
악의적인 해커는 IP가 해커가 선택한 MAC 주소에 매핑되는 유효한 ARP 응답을 만들어 이 메시지를 완전한 네트워크로 보낼 수 있다.
네트워크의 모든 장치는이 메시지를 수락하고 ARP 테이블을 새로운 정보로 업데이트하며 해커는 네트워크의 모든 호스트와의 통신을 제어 할 수 있게된다.

1) 서비스 거부
해커는 네트워크에서 IP 주소가 잘못되었거나 존재하지 않는 MAC 주소로 매핑 된 ARP 응답을 보낼 수 있다.
예를 들어, 네트워크의 라우터 IP를 존재하지 않는 MAC과 매핑하는 가짜 ARP 응답은 라우터의 IP로 전송 된 모든 패킷이,
MAC 주소를 가진 시스템으로 전송 될 때 외부 네트워크와의 전체 네트워크 연결을 중단시킨다. 존재하지 않음...

2) 중간에있는 남자
이름에서 알 수 있듯이 해커는 시스템과 네트워크의 다른 시스템 간 통신 사이에 자신의 컴퓨터를 바로 배치 할 수 있다.
이 방법으로 해커는 두 시스템에서주고받는 모든 트래픽을 스니핑 할 수 있다.

이를 달성하기 위해 시스템이 호스트 'A'이고 네트워크 라우터가 호스트 'B'라고 가정한다.
'A'에는 IP-A와 MAC-A가 있고 'B'에는 IP-B와 MAC-B가 각각 IP 주소와 MAC 주소로 맵핑되어있다.
이제 해커는 자신의 컴퓨터의 MAC 주소로 IP (IP-A)를 매핑하는 라우터에 ARP 응답을 보내고,
컴퓨터의 MAC 주소를 사용하여 컴퓨터 매핑 라우터 IP에 대한 다른 ARP 응답을 보낸다.
이제 컴퓨터에서 라우터로 또는 라우터에서 컴퓨터로 보낸 메시지는 해커의 컴퓨터에 도달한다.
해커는 이제 자신의 컴퓨터에서 'IP 전달'기능을 켜서 해커의 컴퓨터가 모든 트래픽을 컴퓨터와 라우터로 전달할 수 있다.
이런 방식으로 해커의 컴퓨터가 중간에 위치하여 트래픽을 스니핑하거나 차단할 수 있다.

3) MAC 홍수
네트워크 스위치의 경우 MAC 플러딩은 사용되는 ARP 캐시 포징 기술이다.
과부하가 발생하면 많은 네트워크 스위치가 허브처럼 작동하여 모든 네트워크 트래픽을 네트워크에 연결된 모든 호스트에 브로드 캐스트하기 시작할 수 있다.
따라서 해커는 가짜 ARP 응답으로 스위치를 과도하게 사용하여 스위치가 허브처럼 작동하도록 할 수 있다.
이 역할에서 스위치는 모든 네트워크 트래픽을 브로드 캐스트하고이를 이용하여 '포트 보안'기능을 활성화하지 않으므로 해커가 네트워크를 패킷 스니핑 할 수 있다.

ARP 캐시 중독 완화 기법
ARP 캐시를 원격으로 중독시키는 것은 네트워크에 물리적으로 액세스하거나 네트워크에있는 머신 중 하나를 제어해야하기 때문에 약간 어렵다.
항상 쉬운 것은 아니기 때문에 ARP 공격은 자주 당하지는 않는다.

네트워크 관리자는 이러한 유형의 공격이 발생하지 않도록주의해야한다.

소규모 네트워크의 경우 정적 ARP 항목을 유지할 수 있다.
정적은 변경되지 않음을 의미하므로 이름에서 이러한 항목을 변경할 수 없으므로 해커가 매핑을 변경하려는 시도는 실패하게 한다.
네트워크에 추가 된 모든 새 장치에 대한 매핑을 수동으로 수행해야하므로 소규모 네트워크에는 적합하지만 대규모 네트워크에는 적합하지 않음.

대규모 네트워크의 경우 네트워크 스위치의 포트 보안 기능을 탐색 할 수 있다.
일부 기능을 켜면 스위치가 스위치의 각 물리적 포트에 대해 하나의 MAC 주소 만 허용한다.
이 기능을 통해 머신은 MAC 주소를 변경할 수없고 하나 이상의 MAC을 머신에 매핑 할 수 없으므로 'man in middle'과 같은 공격을 방지 할 수 있다.

일반적으로 네트워크에서 악의적 인 ARP 활동이 발생할 때 경고를 받도록 ARPwatch와 같은 일부 모니터링 도구를 배포 할 수 있다.

라우팅 테이블

리눅스 기본 명령어 route를 통한 게이트웨이 설정및 라우팅 설정.

route 명령은 기본적으로 커널 라우팅 테이블 항목의 세부 사항을 표시한다.
ARP 프로토콜을 통해 대상의 MAC 주소가 발견되고 패킷이 MAC 주소로 전송된다.

네트워크 IP 범위 내에 있지 않은 대상으로 패킷을 보내려면 패킷이 기본 게이트웨이로 전달되어 해당 패킷에 대한 추가 라우팅을 결정한다.
$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         172.16.1.1      0.0.0.0         UG    0      0        0 eth0
10.10.10.0      *               255.255.255.0   U     0      0        0 eth1
172.16.1.0      *               255.255.255.0   U     0      0        0 eth0
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

기본적으로 route 명령은 출력에 호스트 이름을 표시
$ route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.1.1      0.0.0.0         UG    0      0        0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.16.1.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

기본 게이트 웨이 추가.
$ route add default gw 192.168.1.10

커널 라이팅 캐시 정보 나열
$ route -Cn

특정 호스트 또는 네트워크에 대한 라우팅 거부
호스트 라우팅 거부
$ route add -host 192.168.1.51 reject
$ ping 192.168.1.51
connect: Network is unreachable

네트워크 라우팅 거부
$ route add -net 192.168.1.0 netmask 255.255.255.0 reject
$ ping 192.168.1.51
connect: Network is unreachable

$ ping 192.168.1.52
connect: Network is unreachable

$ ping 192.168.1.53
connect: Network is unreachable

192.168.1.0 과 192.168.3.0 통신 설정.
192.168.1.0 기본 게이트웨이 추가
$ route add default gw 192.168.1.10

게이트웨이 다음 라우팅 항목 추가.
$ route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.3.10

192.168.3.0 기본 게이트웨이 추가.
$ route add default gw 192.168.3.10

게이트웨이에 다음 라우팅 항목 추가.
$ route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.10

서로 다른 네트워크 연결 성공.

외부 테트워크 활성화
$ route add default gw 외부 게이트웨이 주소.

1. 우분투 router package 설치
1.1 nat 활성화.
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 ---> 변경. 1 = yes, 0 = no

1.2 동적 라이팅 설치.
# sudo apt-get install quagga

1.2.1 설정
cd /etc/quagga

vi zebra.conf
  hostname Router
  password zebra   (사용자 암호 설정)
  enable password zebra  (사용자 암호 설정)

vi ripd.conf
  hostname ripd
  password zebra (사용자 암호 설정)

1.2.3 deamons 파일 내용 변경
zebra 부분과 ripd 부분을 yes로 수정

1.2.4 /etc/services 파일의 내용을 확인
zebra, ripd 포트 번호 확인.

2. quagga 및 rip 실행
sudo /etc/init.d/quagga start | restart | stop
or
sudo service zebra start

rip daemon 실행.
service ripd start

3. quagga 접속 운영.
3.1 telnetl 접속
sudo telnet localhost 2601
or
telnet localhost zebra

router> enable
Router# configure terminal
Router(config)# interface eth0   
Router(config-if)# ip address 192.168.1.1/24
Router(config-if)# exit
Router(config)# interface eth1   
Router(config-if)# ip address 192.168.3.1/24
Router(config-if)# end
Router# write memory
Configuration saved to /etc/quagga/zebra.conf
Router# show running-config

....

Router# quit

3.2 설정 확인.
/etc/quagga/zebra.conf CLI 설정 내용과 유사한지 확인.
192.168.1.1/24과 192.168.3.1/24은 실제 eth0 및 eth1의 IP 주소이므로 네트워크 장치에 가서 이에 맞도록 IP 주소 변경.

4. rip daemon 접속 및 운용.
4.1 telnet 접속
sudo telnet localhost 2602
or
telnet localhost ripd

ripd> enable
ripd# configure terminal
ripd(config)# router rip
ripd(config-router)# network 192.168.1.0/24
ripd(config-router)# network 192.168.3.0/24
ripd(config-router)# end
Router# write memory
Configuration saved to /etc/quagga/ripd.conf
Router# show running-config
....
Router# quit

4.2 설정 파일 확인.
/etc/quagga/ripd.conf CLI 설정 내용과 유사한지 확인.

5. static router 설정
static route를 설정한 후 show ip route로 설정 상황을 확인한다.
(C는 directly connected, S는 static route를 의미함)

Router> enable
Router# configure terminal
Router(config)#  ip route 192.168.1.100 255.255.255.0 eth0
Router(config)# ip route 192.168.3.100 255.255.255.0 eth1
Router(config)# end
Router# show ip route
C   192.168. ....
....
S   192.168. ....
....
Router# write memory
Configuration saved to /etc/quagga/zebra.conf
Router# show running-config
....
Router# quit

6. static 라우터 명령어
Router(config)# ip route network [mask] {address | interface} [distance] [permanent]
network : 목적지 네트워크
mask : 목적지 네트워크의 subnet mask
address : 목적지 네트워크에 도달하기 위한 next-hop address
interface : 목적지 네트워크에 도달하기 위한 next-hop router의 local interface
distance : route의 AD (Administrative Distance) value
permanent : 정의된 static route가 table에서 삭제되지 않도록 함

AD (Administrative Distance) value 변경 명령어
Router(config)# router rip
Router(config-router)# distance [1-255 distance]

router A에서 static route를 설정한 예는 다음과 같다.
Router(config)# ip route 150.150.0.0   255.255.0.0   203.210.100.1
150.150.0.0과 255.255.0.0은 destination network 주소 및 subnet mask
203.210.100.1은 1 hop을 건너뛴 IP address (즉, router B의 serial interface에 대한 IP address를 의미)
명령어 맨 뒤에 distance (라우팅 value, 작을수록 high)를 입력 가능 (default는 1)

rip 관련 timer 주기 설정 명령어
Router(config)# router rip
Router(config-router)# timers basic 5 30 30 40 1

숫자 순서대로 update, invalid, holddown, flush, sleep timer임
sleep timer는 최소 1ms임

default timer value는 다음과 같다.
­ hello time (정기 알림 간격) 30초
­ invalid time (경로 만료 시간) 180초
­ holddown time은 invalid timer 종료 후 180초
­ flush time (경로 제거 시간)은 240초
­ sleep time (route poisoning 수신 시 긴급 update 시간)은 0초

18.04 NAT 설정.
================
1. 네트워크 설정.
우분투 라우드 버전으로 설치 했을 경우 네트워크 인터페이스 파일 수정
sudo vi /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
        eth1:
            addresses:
            - 192.168.1.1/24
            dhcp4: false
            nameservers:
                addresses:
                - 8.8.8.8
                - 8.8.4.4
                search: []
    version: 2

구성 설정 적용
sudo netplan generate
sudo netplan apply

2. dhcp 서버 설정
sudo apt-get install isc-dhcp-server

sudo vi /etc/default/isc-dhcp-server
INTERFACESv4="eth1"

sudo vi /etc/dhcp/dhcpd.conf
option domain-name "whatever.you.want";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
authoritative;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
     range 192.168.1.101 192.168.1.200;
     option subnet-mask 255.255.255.0;
     option routers 192.168.1.1;
     option broadcast-address 192.168.1.255;
}

sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server

sudo systemctl status isc-dhcp-server

3. 방화벽 설정
sudo ufw enable

sudo vi /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

sudo vi /etc/rc.local
#!/bin/bash

# /etc/rc.local

# 들어오는 모든 패킷을 삭제하는 기본 정책
iptables -P INPUT DROP
iptables -P FORWARD DROP

# localhost 및 LAN 인터페이스에서 들어오는 패킷을 수락한다.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT

# 라우터 연결을 시작한 경우 WAN에서 들어오는 패킷을 수락한다.
iptables -A INPUT -i eth0 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT

# LAN 패킷을 WAN으로 전달한다.
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# LAN이 연결을 시작한 경우 WAN 패킷을 LAN으로 전달한다.
iptables -A FORWARD -i eth0 -o eth1 -m conntrack \
--ctstate ESTABLISHED,RELATED -j ACCEPT

# NAT 트래픽이 WAN 인터페이스로 전송된다.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# rc.local 종료
exit 0

실행 권한.
sudo chmod 755 /etc/rc.local

18.04 Quagga
=============
sudo apt install quagga

버전 1.2.4 및 해당 패키지를 설치
quagga quagga-bgpd quagga-core quagga-isisd quagga-ospf6d quagga-ospfd quagga-pimd quagga-ripd quagga-ripngd.

서비스 구성
/etc/systemd/system/multi-user.target.wants/

사용자 추가 및 그룹 추가
quagga 및 quagga 그룹, quaggatvy 생성 됨.

설명서 설치
sudo apt install quagga-doc

패킷 전달 활성화
vi /etc/sysctl.conf
net.ipv4.ip_forward=1

샘플 파일 복사 및 소유권 변경 및 환경에 맞게 구성.
cp /usr/share/doc/quagga-core/examples/vtysh.conf.sample /etc/quagga/vtysh.conf
cp /usr/share/doc/quagga-core/examples/zebra.conf.sample /etc/quagga/zebra.conf
cp /usr/share/doc/quagga-core/examples/bgpd.conf.sample /etc/quagga/bgpd.conf
sudo chown quagga:quagga /etc/quagga/*.conf
sudo chown quagga:quaggavty /etc/quagga/vtysh.conf
sudo chmod 640 /etc/quagga/*.conf

필요한 서비스를 실행
sudo service zebra start
sudo service zebra status
sudo service bgpd start
sudo service bgpd status


시스템 시작시 서비스가 시작되는지 확인
sudo systemctl is-enabled zebra.service
sudo systemctl is-enabled bgpd.service
sudo systemctl enable zebra.service
sudo systemctl enable bgpd.service

vtysh, bgpd 및 zebra 터미널에 연결
sudo vtysh
sudo telnet localhost 2605
sudo telnet localhost 2601