CentOS 6 에는 가상화로 KVM만 지원합니다. Xen은 빼버렸습니다. 가상화로 KVM을 하게되면 사용할 수 있게됩니다. 그런데, KVM을 활성화하게 되면 virbr0 라는 가상의 이더넷이 생성이되는데 이것이 NAT로 동작하게 됩니다. 그러니까 KVM의 게스트들은 virbr0 의 NAT를 이용해서 인터넷을 하게 되는 것입니다. 그런데 제가 집에서 사용하는 인터넷 사용환경은 공유기를 이용해서 각 피시에서 private ip 주소를 할당해서 사용합니다. 그래서 KVM의 게스트들도 직접 공유기로 부터 private ip 주소를 할당 받기를 원했습니다. 그렇게 하기위해서는 virbr0 를 NAT를 정지시키고 br0 을 만들어서 eth0와 br0를 Bridged 시키면 됩니다. 이 […]
Ubuntu 16.04 KVM 게스트에 콘솔 접속하기
KVM 가상화를 사용하고 있고 게스트로 Ubuntu16.04 를 사용하고 있다면 콘솔 접속을 위해서는 Grub2 설정을 다음과 같이 해주면 된다.
|
1 2 3 4 |
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --stop=1" |
위와같이 해주고 다음과 같이 grub 을 갱신해준다.
|
1 |
update-grub |
[AWS] Private Subnet 으로 서비스 구성하기.
AWS 는 전 세계적으로 가장 인기있는 Cloud Platform 이다. Web Console을 이용해서 원하는 자원을 구성하고 컴퓨터, 네트워크, 저장소등을 실시간으로 생성할 수 있으며 네트워킹 구성도 실시간으로 구성이 가능하다. 그래서 많은 IT 업체들이 AWS 클라우드를 사용하고 있다. 특히나 전 세계를 대상으로 인터넷 서비스를 하려는 업체들은 AWS 를 통해서 막대한 IT 인프라 구축비용 절감하고 있다. 오늘은 AWS 클라우드를 이용해서 가장 많은 구성이며 기본적인 구성인 Web Service 를 Private Subnet 을 이용해 구성해보도록 하겠다. 이 포스트는 AWS 클라우드에 대해서 어느정도 기초지식을 갖추고 있다고 가정하고 […]
가상 Guest 이미지 마운팅
가상 Guest OS의 이미지를 마운트하는 법을 설명합니다. 이미지 마운트에는 두가지 방법이 있습니다. 첫번째방법 1.Guest OS 이미지에 파티션으로부터 디바이스 맵(Device Map)을 생성합니다.
|
1 2 3 |
]# kpartx -av /mnt/xen/images/test01_centos5_4_x64.img add map loop0p1 : 0 208782 linear /dev/loop0 63 add map loop0p2 : 0 10265535 linear /dev/loop0 208845 |
2.볼륨(Volume) 그룹을 스캔합니다.
|
1 2 3 |
]# vgscan Reading all physical volumes. This may take a while... Found volume group "VolGroup00" using metadata type lvm2 |
이렇게 볼륨이 잡히면 이 방법은 유효합니다. 그렇지 않으면 두번째 방법을 사용해야 합니다. 3.볼륨(volume) 그룹의 속성을 바꿉니다.
|
1 2 |
]# vgchange -ay VolGroup00 2 logical volume(s) in volume group "VolGroup00" now active |
볼륨의 상태를 확인합니다.
|
1 2 3 4 |
]# lvs LV VG Attr LSize Origin Snap% Move Log Copy% Convert LogVol00 VolGroup00 -wi-a- 3.84G LogVol01 VolGroup00 -wi-a- 1.03G |
4.이제 볼륨을 마운팅하면 됩니다.
|
1 |
]# mount /dev/VolGroup00/LogVol00 /opt/ |
이렇게 마운트가 되면 마운트 포인터(Mount Point)를 통해서 접근할 수 있습니다. 언마운트(Umount)는 다음과 같이 합니다. 5.언마운트(Unmount) 합니다.
|
1 |
]# umount /opt |
6.볼륨속성을 바꿉니다.
|
1 2 |
]# vgchange -an VolGroup00 0 logical volume(s) in volume group "VolGroup00" now active |
7.디바이스 맵을 지웁니다.
|
1 2 |
]# kpartx -d /mnt/xen/images/test01_centos5_4_x64.img loop deleted : /dev/loop0 |
두번째 방법 두번째 방법은 위의 […]
CentOS 7 Systemd 이해하기
CentOS 7로 배포판 버전이 바뀌면서 가장 크게 바뀐것이 Systemd 입니다. 기존의 볼수 없었던 서비스 하나일뿐이라고 생각할 수 있지만 Systemd 는 단지 서비스 하나의 문제가 아닙니다. Linux 의 기본 뼈대 프로세스 Linux는 운영체제 입니다. 전원을 넣고 부팅이 되는 과정에서 시스템을 초기화하고 기타 서비스들을 위한 환경을 조성하고 그들을 시작시켜주는 일을 하는 초기화 프로세스가 필요합니다. CentOS 6 까지는 Sys V 라고해서 init 프로세스가 이것을 담당했습니다. 커널이 메모리에 로딩되면 가장 먼저 실행되는 프로세스로 init 프로세스를 실행시킵니다. 이 프로세스는 init 스크립트, init 설정등을 기반으로 RunLevel […]
KVM Ubuntu 가상머신에 콘솔 접속하기
Ubuntu 를 KVM 가상머신으로 설치를 했다면 콘솔 접속을 해보면 안됩니다. 지난번에 CentOS6/7 배포판에서의 가상머신 콘솔접속에 대해서 다루어 었는데, Ubuntu 는 이들과 조금 다르기에 포스팅 해봅니다. 이 글은 ubuntu 14.04 를 대상으로 합니다. 처음 Ubuntu 를 KVM 가상머신으로 설치를 했다면 SSH 나 Virt-manager 나 vnc 를 이용해서 접속을 해야만 합니다. 그래야 콘솔접속을 위한 설정을 해볼 수 있습니다. GRUB 설정 공통 Grub 설정은 /etc/default/grub 에 있습니다. 다음과 같이 설정을 해줍니다.
|
1 |
GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0,38400n8 console=tty0" |
그리고 다음과 같이 업데이트를 해줍니다.
|
1 2 3 |
]# ## 둘중 하나만 해주면 됩니다. ]# update-grub ]# grub-mkconfig -o /boot/grub/grub.cfg |
Serial 콘솔 만들기 다음과 같이 […]
가상 머신에 콘솔 접속하기
CentOS 6/7 혹은 RHEL 6/7 은 KVM 가상화를 지원 합니다. 가상화를 위한 네트워크를 설정하고 가상화 패키지를 설치하면 이제 가상 머신, 게스트 OS 를 설치할 수 있게 됩니다. 그런데, 맨 처음에 게스트 OS 를 설치하고 나면 더구나 DHCP 로 IP를 할당 받는다면 설치가 끝나고 나서 할당된 IP를 모르기 때문에 바로 접속을 할 수가 없습니다. 그래서 virt-manager 를 이용해서 게시트OS 화면에 접속하고 로그인을 하고 IP를 확인한 후에 SSH를 이용해서 외부에서 접속이 가능해 집니다. 하지만 이것말고 호스트 OS 터미널에서 게스트 OS로 virsh 명령어를 […]
Nginx 설정.
이 문서는 Nginx 설정에 대한 문서 입니다. 계속적으로 업데이트가 됩니다. 요청 메소드 제한 요청 메소드는 GET, HEAD, POST, PUT, DELETE 등이 있다. 문제는 대부분 웹 서비스는 GET, HEAD, POST 만 필요로한다는 것이다. Nginx 에서 이를 다음과 같이 제한 할 수 있다.
|
1 2 3 4 |
# Only allow GET and HEAD and POST request methods if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } |
GZIP 설정
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Turns on the gzip compression gzip on; # The minimum size file to compress the files gzip_min_length 1100; # Set the buffer size of gzip, 4 32k is good enough for almost everybody gzip_buffers 4 32k; # This directive let you specify which file types should be compressed gzip_types text/plain application/x-javascript text/xml text/css; # Enable response header of "Vary: Accept-Encoding" gzip_vary on; # Set the compression level gzip_comp_level 9; # Require that client announce HTTP 1.1 to use compression gzip_http_version 1.1; |
DNS amplification DDos attacks (DNS 증폭 DDos 공격)
최근에 관리하는 서버에 트래픽이 몰리는 현상이 발생했다. 웹 서비스 트래픽도 아니기에 뭔가 싶어 봤더니 53 포트를 통한 input 트래픽이였다. 그래서 ngrep 으로 53 포트를 모니터링 하니 대략 다음과 같이 나왔다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
U 27.102.207.300:53 -> 186.2.161.134:14455 ^............ddos.cat.............*'.1.ns.nic...dnsmaster.knipp.de.w..........,..:...Q...)........ # U 186.2.161.134:12806 -> 27.102.207.300:53 .............ddos.cat.......)#(...... # U 27.102.207.300:53 -> 186.2.161.134:12806 .............ddos.cat.............*'.1.ns.nic...dnsmaster.knipp.de.w..........,..:...Q...)........ # U 186.2.161.134:32940 -> 27.102.207.300:53 .............ddos.cat.......)#(...... # U 27.102.207.300:53 -> 186.2.161.134:32940 .............ddos.cat.............*'.1.ns.nic...dnsmaster.knipp.de.w..........,..:...Q...)........ # U 186.2.161.134:60056 -> 27.102.207.300:53 .............ddos.cat.......)#(...... # U 27.102.207.300:53 -> 186.2.161.134:60056 .............ddos.cat.............*'.1.ns.nic...dnsmaster.knipp.de.w..........,..:...Q...)........ # U 186.2.161.134:44315 -> 27.102.207.300:53 t............ddos.cat.......)#(...... # U 27.102.207.300:53 -> 186.2.161.134:44315 t............ddos.cat.............*'.1.ns.nic...dnsmaster.knipp.de.w..........,..:...Q...)........ |
뭔가 자꾸 DNS 서버에 쿼리(Query)를 보내고 있었고 이로 인해서 트래픽이 발생하는게 분명했다. DNS amplification DDos attacks (DNS 증폭 DDos 공격) ‘DNS amplification DDos Attacks’ 는 DNS 증폭 DDos 공격으로 불리운다. 왜 ‘증폭’ 일까? DDos 는 대량의 트래픽이 필요하다. 초당 수십 Gbps 를 유발시켜야 하는데 이렇게 할려면 많은 장비가 필요하다. […]
gitlab 패스워드 리셋하기
gitlab 패스워드 리셋하기 Gitlab 을 사용하다가 갑자기 패스워드를 잊어버리는 경우가 생길 수 있습니다. 이럴때 보통 Web 에서 ‘Fogot your password’ 링크를 클릭하고 리셋될 패스워드를 가입할때 적어놓은 E-mail 로 발송을 해줍니다. 그런데, E-mail 주소가 없는 거라면 패스워드를 리셋할 수가 없어서 로그인을 못하게 됩니다. 이럴때는 Gitlab 서버에 터미널로 로그인을 해서 gitlab-rails console을 실행하고 패스워드를 바꿀 수 있습니다. 먼저 gitlab-rails console로 접속을 합니다.
|
1 2 3 4 |
]# gitlab-rails console Loading production environment (Rails 4.2.4) irb(main):001:0> irb(main):002:0* |
여기서 만일 E-mail 주소를 정확하게 알고 있다면 다음과 같이 user 객체를 지정할 수 있습니다.
|
1 2 |
irb(main):005:0* user = User.find_by(email: 'admin@local.host') => nil |
그런데 위와같이 ‘nil’ 로 나오면 […]