zpanel 비슷한 sentora

http://docs.sentora.org/?node=22

http://forums.sentora.org/showthread.php?tid=168

 

IMPERATIVE:

  • You must have read Pre-Installation Check HERE
  • You MUST have setup DNS for the sub-domain that will be assigned to Sentora panel PRIOR to install.

Once logged in SSH console as root, use this command line:

bash <(curl -L -Ss http://sentora.org/install)

 

If you have issues with curl you can try to copy and paste this command (for CentOS):

yum install wget -y && cd /tmp && wget sentora.org/install && bash install

 

Else you can do it manually:

1) Login to your server as root user:

sudo -i

2) Ensure you are in your home directory:
cd

3) download the installer

wget sentora.org/install

4) Make the installer executable
chmod +x install

5) Run the installer
sudo ./install

6) Follow the on screen instructions during the installation.
(See also Installer questions)

7) Return to user level ( or reboot server )
exit

Post install:

All passwords are saved in file /root/passwords.txt

YOU MUST INSTALL EMERGENCY PATCHES. Read Security updates and patches doc page

웹 호스팅 컨트롤 패널 추천

http://www.hostingadvice.com/blog/cpanel-vs-plesk-vs-webpanel/

 

Many folks who need web hosting these days want the simplest method of managing their servers. To many, it is expected that graphical-user-interfaces (GUIs) are provided along with hosting. Much like those in OSX or Windows.

Hosting control panels are web-based interfaces allowing administrators and/or users to manage various server services from the comfort of a web browser.

Below we take a quick look at some of the most popular options that are available and actively maintained. Ten of these projects are open source and five are proprietary software.

Common Control Panel Features

In general, most control panels implement a common set of features. While most will implement some subset of these, there are a few that include them all.

Web hosting control panel software may provide access to:

  • Domain name system management (web domains, mail domains, etc.)
  • Email system management (email addresses, email quotas, spam prevention, etc.)
  • FTP management (user accounts, password management, file system quotas)
  • Web-based file system access
  • SSH user/key management
  • Database management (MySQL, PostgreQSL and sometimes other database systems)
  • Backup management
  • Logfile access and reporting
  • A plugin system for configuring additional services and installing applications (i.e., a blogging application like WordPress)

Enterprise Control Panel Features

Some projects also have enterprise features like:

  • Manage multiple servers from one control panel interface
  • For hosting providers: allow multiple customers to run the control panel software in parallel on a server
  • Service monitoring and alerting
  • A ticketing system for customers
  • IPv6 support

Control Panel Features Matrix

We all know it is easier to see things visually, so we put together a nice table for you to see all of the control panels and their features quickly.

Below the table, we provide some commentary on each piece of software and have some links to their sites if you would like to investigate more.

Control Panel Reviews Backend Language Open Source Linux Windows DNS Email FTP Databases ipv6 Multi-Server
cPanel Perl, PHP x x x x x x x
Plesk PHP x x x x x x x x
DirectAdmin PHP x x x x x x
Core-Admin PHP x x x x x
InterWorx PHP x x x x x  x  x
iMSCP PHP, Perl x x x x x x x
Froxlor PHP x x x x x x
Vesta PHP x x x x x x
ZPanel PHP x x x x x x x x
Sentora PHP x x x x x x x
Webmin Perl x x x x x x x x
ISPConfig PHP x x x x x x x x
Ajenti Python x x x x x x
BlueOnyx Jaxa, Perl x x x x x x x
CentOS Web Panel PHP x x x x x x x

Control Panel Reviews

cPanel

Cpanel is the web control panel that is used the most. Cpanel is the web control panel tool for website owners, and Web Host Manager (WHM) is the server administrative tool for hosting providers.

Cpanel and WHM can be considered the most full-featured systems of all. Cpanel is only supported on Linux, but Windows support can be achieved using its Enkompass product or a virtualization setup. The user interface, although easy to use, is definitely not the best among web control panels.

cPanel for Hosting

cPanel WebHost

Plesk

Plesk is the most popular web control panel after Cpanel. Besides Linux support, it also has very good Windows support. Plesk comes in several different editions, each tailored for specific hosting use cases. The user interface is regarded as a bit cleaner than Cpanel. In terms of features, Plesk and Cpanel don’t differ much. Both are in use by big hosting companies (often in a branded form) and other many customers.

Plesk

DirectAdmin

DirectAdmin is a relatively lightweight control panel that supports Linux. It has all of the basic features of a control panel, including support for multi-customer setups. All of the sold licenses are “unlimited domain” licenses.

DirectAdmin

Core-Admin

Core-Admin was designed as a centralized and highly connected solution that provides support for managing multi-servers using a single web administration console. This includes an advanced permission system and monitoring system. There is a “Free Web Edition” that is limited to handle 10 domains.

Core-Admin

InterWorx

InterWorx comes in two package versions: NodeWorx (to manage a server) and SiteWorx (to manage a site). Interworx has a nice plugin system, which allows for quick installs of applications like the Softaculous web package manager. InterWorx also has a command line interface.

Interworx

i-MSCP

i-MSCP is open source and aims to be a good multi-server control panel for both personal and professional (i.e., hosting providers) usage. There is not something particularly outstanding in this web panel, but there is an active community around it.

i-mscp

Froxlor

Froxlor is an open source web control panel with a very clean interface. There is IPv6 support, a ticketing system and an integrated reseller-customer messaging system. It is ideal for ISPs and similar organizations.

Froxlor

Vesta

Vesta is open source and aims to be a simple and lightweight web control panel. It does not support the more enterprise-like features (like multi-server setups), but it does try to place an emphasis on performance by using Nginx for the web panel frontend and Apache for the application backend.

Vesta

ZPanel

Zpanel (hasn’t been updated since March 3, 2014 and may no longer be maintained) is open source and aims to be an “enterprise class web hosting control panel with support for unlimited resellers.” The interface is compact and highly functional. Zpanel has support for many operating systems, including Linux, Windows, MacOS and FreeBSD.

zPanel

Sentora

Sentora is a fork of ZPanel. This fork happened after Zpanel’s sale to a United States-based company. Sentora brands itself as the “community version” of ZPanel. The team behind Sentora also offers subscription-based, premium support.

Sentora

Webmin

Webmin an open source web control panel for system administration on Linux/Unix. It has dozens of modules for configuring server services. Their Cloudmin tool is a Webmin-based interface for managing virtual systems, including Xen, KVM and OpenVZ.

Webmin

ISPConfig

ISPConfig is a popular open source web control panel system with good enterprise support. The project claims to have more than 40,000 downloads per month. There is good multi-server, IPv6 and virtualization (OpenVZ) support, which is ideal for ISPs or other corporate environments.

ISPconfig

Ajenti

Ajenti is a Python-based web control panel system, which makes it stand out from all PHP-based ones. The website claims there are more than 55,000 active users of Ajenti. The interface is very well-designed. Ajento runs on various Linux distributions and FreeBSD.

Ajenti

BlueOnyx

BlueOnyx is an open source web control panel that only runs on the CentOS and Scientific Linux distributions. Its interface may show its age a bit, but there is good support for multi-user setups among many other features.

BlueOnyx

CentOS Web Panel

CentOS Web Panel is an open source web panel for the CentOS Linux distribution. It has a solid feature set that can match most of the other web panel projects except for multi-server support.

CentOS Web Panel

Final note

Hopefully this quick overview of these 15 actively-maintained web panels should give you a good start for selecting a web panel that suites your server management needs.

ssh 루트 로그인 설정

#/etc/ssh/sshd_config
PermitRootLogin yes :: 원격 root 로그인 허용

PermitRootLogin no :: 원격 root 로그인 금지

PermitRootLogin without-password :: 원격에서의 키 로그인은 허용하며 원격 패스워드 로그인은 금지

PermitRootLogin forced-commands-only :: 원격에서 키 로그인은 허용하지만 로그인 되신 command 를 사용해서 명령만 전달 가능

우분투 root계정으로 자동 로그인

먼저 다음 경로로 이동합니다.

/etc/lightdm/

 

그리고 lightdm.conf 파일을 수정합니다.

 

[SeatDefaults]
autologin-guest=false
autologin-user=root
autologin-user-timeout=0
autologin-session=lightdm-autologin

두번째 줄 autologin-user= 부분을 root로 변경합니다.

우분투 root계정 로그인 가능하게 하기

다음 폴더로 이동합니다. /usr/share/lightdm/lightdm.conf.d

그리고 50-ubuntu.conf 라는 이름의 파일 이름을 편집합니다.

그리고 마지막 줄에 다음 내용을 추가하면 됩니다.

greeter-show-manual-login=true

팁을 주자면, 터미널로 su 명령어를 이용해 root권한을 얻은 뒤 natutilus 를 이용해서 찾아가면 훨씬 수월하게 편집할 수 있습니다.

 

 

확실하게 재부팅을 한번 하면 다음과 같이 다른 계정으로 로그인 할 수 있도록 설정할 수 있는데 거기에 root를 입력해서 로그인 하면 됩니다.

 

enter image description here

IIS의 웹서버 그룹은 iusr

새 php 문서를 작성하여 다음과 같은 구문을 넣고  실행하면 그룹을 알 수 있습니다.

<?php echo exec('whoami'); ?>

 

웹서버의 유저 그룹을 확인하니 다음과 같이 나옵니다.

nt authorityiusr

즉, IIS 웹서버는 그룹이 iusr 인것을 알 수 있습니다. 더불어 IIS를 사용하는 사용자의 그룹은 IIS_IUSRS 입니다.

 

우분투로 호스팅 하기

사용자 삽입 이미지

운영체제의 수명이 긴 LTS 버전을 설치하도록 합시다. (버전숫자가 높다고 더 좋다는 뜻은 아님)

Ubuntu 운영체제에 관해서는 http://en.wikipedia.org/wiki/Ubuntu_(operating_system) 를 참조하세요.

 

설치는 Ubuntu 14.04 LTS를 기준으로 합니다.

(Ubuntu 16.04 LTS 버전이 출시 될 2016년 4월이 되면 다시 바꾸겠습니다.)

 

일반 사업체에서 사용할 수 있도록 안정적인 세팅법을 알려드리겠습니다.

 


#14.12.21 추가.

웹 서버의 선택.

IT는 가만히 있지 않고 매우 빠르게 발전합니다.

이 글에서 설명하고 있는 설치법은 2014년 12월 현재까지도 안정적입니다.

 

다만 요즘 인기있는 구성에 대해서 설명해 드리고자 합니다.

과거에는 HTTP 웹 서버에 PHP, JSP 같은 프로그래밍 언어의 해석 모듈을 로딩해서 사용했습니다.

이 글에서 설명할 Apache 2 with mod_php 같은 방식이고,  Apache tomcat, Eclipse Jetty 도 모두 웹서버가 프로그래밍 언어 해석 모듈을 탑재하고 있는 경우입니다.

조금 더 전문적인 용어로 말하자면 웹컨테이너(http 만 담당), 어플리케이션 컨테이너(php, jsp등 해석 담당) 가 한 곳에 있는 것입니다.

 

아주 단순한 논리인데, 이 둘을 나누어 두면 어떨까 하는 것입니다. 그리고 둘을 특화 시키는 것입니다.

웹컨테이너(Web container) 프로그램과 어플리케이션 컨테이너(Application container) 프로그램으로 나누고

웹컨테이너 프로그램은 단순하게 내용 전송만 하고, 어플리케이션 컨테이너 프로그램 프로그램 해석만 하는 것입니다.

사람들이 둘을 나눠봤는데 성능이 향상하는 것을 확인했습니다.

 

웹컨테이너 프로그램 중 유명한 것은 Nginx 이고,

어플리케이션 컨테이너 프로그램 중 유명한 것은 PHP-FPM 입니다.

 

동작원리는 Nginx 가 사용자의 URL을 확인해서 파일의 끝이 .php나 .jsp 로 끝나면

php-fpm 이나 tomcat 에게 해당 파일 경로를 넘겨 주고 결과를 기다립니다.

php-fpm 은 넘겨받은 경로의 php를 실행하고 실행결과를 nginx 에게 넘겨줍니다.

 

다음은 그림판으로 뚝딱 그린 대략적인 흐름입니다.

 

nginx

이를 활용하면 한 nginx 서버에서 여러 버전의 php를 구동할 수도 있고, jsp 등등의 언어를 동시에 처리할 수 도 있게 설정할 수 있습니다.

nginx는 기본적인 http 컨텐츠 전송 기능과, 요청을 다른 프로그램에게 전달해 주는 proxy 기능을 수행합니다.

 

 

요즘 구성가능한 서버 방식은 다음과 같습니다.

– Nginx + PHP-FPM (이 방식을 사용하여 설정을 잘 하면 가장 월등한 동접처리가 가능합니다. 다만 일부 범용 프로그램에서 호환이 안됩니다. )

nginx는 가벼운 대신 모듈이 많지 않습니다. nginx는 .htaccess 파일을 해석할 수 없습니다.

 

– Apache + PHP-FPM (apache 는 아주 많은 확장 모듈이 있습니다. 기본 내장된 mod_proxy 모듈을 사용해서 nginx와 동일한 역할을 할 수 있도록 할 수 있습니다.)

다만 기본으로 처리하는 것이 많아서 nginx 보다 약간은 느립니다. (0.01초 정도 차이) 당신의 웹프로그램이 이러한 처리모듈을 필요로 할 수 있습니다.

 

– Apache + mod_php (이 글에서는 이 방식을 설명할 것입니다.)

Apache와 PHP 프로그램을 따로 구동하지 않고 Apache에 PHP 해석 모듈을 로드하게 합니다.

 

어차피 동접 3000, 4000 정도 될 때는 위 중 어느 방식으로 구성하더라고 서버가 뻗게 되 있습니다.

100명 이하의 동접이 일어날 때는 셋다 똑같으니 아무거나 쉬운 방식으로 설치하세요.

다만 nginx 환경은 여러 범용 프로그램 사용에 제약이 있을 수 있습니다. (사용하려면 삽질을 많이 해야한다는 뜻)

 

+ 비유를 하자면 Windows XP와 Windows 7 과 Windows 8 이 있는데, 웹서핑이나 문서작업 하는 입장에서는 셋다 똑같다고 느낍니다.

오히려 XP가 가장 빠를지도 모릅니다. 다만 요즘 나온 Diablo 3나 Starcraft 2 같은 게임을 구동할 때는 당연히 Windows 8 이 가장 좋은 성능을 보여줄 겁니다.

 

+ Nginx + PHP-FPM 구성은 원하시는 분이 있으면 글 포스팅을 하도록 하겠습니다.


 

1) 리눅스 버전체크

#uname -a
Linux li599-115 3.16.7-x86_64 #3 SMP Fri Nov 14 16:55:37 EST 2014 x86_64 x86_64 x86_64 GNU/Linux

2) Ubuntu 버전체크

#cat /etc/issue
Ubuntu 14.04.1 LTS

3) 하드용량체크

#df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/LaelServer02-root
 37G  739M   35G   3% /
 tmpfs                 244M     0  244M   0% /lib/init/rw
 varrun                244M   72K  244M   1% /var/run
 varlock               244M     0  244M   0% /var/lock
 udev                  244M  148K  244M   1% /dev
 tmpfs                 244M     0  244M   0% /dev/shm
 lrm                   244M  2.7M  242M   2% /lib/modules/2.6.28-11-server/volatile
 /dev/sda5             228M   14M  202M   7% /boot

대략 다 더하면 40G가 나온다.

다른 예

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda1        19G  2.5G   15G  15% /

udev            486M  4.0K  486M   1% /dev

tmpfs           198M  252K  198M   1% /run

none            5.0M     0  5.0M   0% /run/lock

none            495M     0  495M   0% /run/shm

/dev/sda3        80G  1.4G   75G   2% /home

이건 다 더하면 100G 가 나온다.

사용자 영역은 /home 이므로 약 75G 사용가능하다.

 

/home 이 따로 없으면 / 파티션 공간을 보면 된다.

 

즉 첫째 예시의 여유공간은 35G, 둘째 예시의 여유공간은 75G 이다.

 

4) 메모리 체크

#free -m
 total       used       free     shared    buffers     cached
Mem:           988        703        285          0        137        393
-/+ buffers/cache:        172        816
Swap:         1881          0       1881

988M의 전체메모리중 현재 703M을 사용하고 있고 285M가 비어있다.

 

5) 자잘한 업글

apt 목록 갱신

apt란 Advanced Packaging Tool 을 뜻합니다.

우리는 apt 라는 우분투에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있습니다.

#apt-get update
현재 운영체제에 설치되어있는 프로그램 최신버전패치
#apt-get upgrade

6) 시스템 시간 설정

이것을 하지 않으면 영국 시간을 불러올 것이다.

물론 초기 설치할 때 Asia/Seoul 을 설정했다면 이 작업을 할 필요는 없다. 하지만 또 한다고 해서 문제되지는 않는다.

– 데비안 패키지 재설정 TimeZone Data 를 실행한다.

#dpkg-reconfigure tzdata

GUI 환경이 나올 텐데, 순서대로 Asia – Seoul 을 선택하면 된다.

 

v1

v2

7) Hostname 설정

이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.

v3

위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.

글 쓰는 지금 단어를 빨리 생각해보았는데  newhistory 라는 것이 떠오르더라.

이제 이 서버는 newhistory 라는 이름으로 만들 것입니다.

#vi /etc/hostname

빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다. newhistory

권장하는 단어는 이 서버에 연결될 대표 도메인이다. 예를 들어 lael.be 같은 것.

 

적용한다.

#hostname -F /etc/hostname

 

서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.

v4

 

8) Apache2 설치

#apt-get install apache2
14.04LTS 에서는 apache 2.4 가 설치된다.  이것은 apache 2.2보다 성능이 많이 향상되었고 nginx와 비슷한 성능을 보여준다.
설치가 완료되면 자동적용 및 시작된다.
확인해본다.
웹브라우져에 기본 설명페이지가 뜨면 성공.
(참고로 기본으로 보여지는 파일은 /var/www/html/index.html 이다.)
기본 파일을 지운다.
#rm /var/www/html/index.html
기타 주로 사용되는 모듈을 활성화, 필요없는 모듈은 비활성화 한다.
아래 모듈에 대한 자세한 설명은… 생략한다.
사용에 문제가 발생하지 않는 최상의 방식이라고 이해하면 된다.
#a2enmod rewrite

#a2enmod headers

#a2dismod autoindex

 

9) PHP 5.x 설치

#apt-get install php5
자동으로 아파치 중단시키고  설정파일에 php를 등록시키고 재 구동시킨다.(바로 적용됨)
14.04 에서는 php 5.5 가 설치된다.
#apt-get install php5-cli
콘솔에서 php를 실행시키기 위해서 위와 같이 실행
기타 주로 사용되는 모듈을 설치한다.
– 암호화 모듈
#apt-get install php5-mcrypt
– 이미지처리 모듈
#apt-get install php5-gd
아파치 재시작(적용을 위해서)
#service apache2 restart
버전체크
#php -v
PHP 5.5.9-1ubuntu4.5 (cli) (built: Oct 29 2014 11:59:10)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies

5.5.9 버전이다. (당신이 설치한 버전은 이것보다 높을 것이다.)

 

10 – 1) Mysql 설치 (또는 MariaDB 설치)

mysql 과 mariadb 는 완전 호환된다.

사용 방법이 아예 똑같다. 명령어도 똑같고 환경설정 파일 위치도 똑같다.

아무거나 설치하여라. 요즘엔 MariaDB를 많이 사용한다.

 

가) Mysql 설치

#apt-get install mysql-server
#apt-get install mysql-client-5.5

 

나) MariaDB 설치 (추천)

#apt-get install mariadb-server-5.5
#apt-get install mariadb-client-5.5

—————-

#apt-get install php5-mysql

php5 연동모듈 설치. 완전 호환되기 때문에 mysql 이라고 해도 mariadb 사용가능.

 

버전체크
#mysql -V
mysql  Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2
또는
mysql  Ver 15.1 Distrib 5.5.40-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

10 – 2) 기본 언어셋 설정(중요)

이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.

#vi /etc/mysql/my.cnf

 

(vi 에디터 사용방법을 모른다면 ftp 클라이언트를 사용하여 서버에 로그인 후 해당파일을 수정하고 덮어쓰기한다.)

 

[mysqld] 항목에 다음 2 줄을 추가한다.

사용자 삽입 이미지

character-set-server = utf8
collation-server = utf8_general_ci

 

*Fine Tuning 의 max_allowed_packet 을 256M 로 변경
(DB한 행의 데이터 크기 제한이라고 보시면 됩니다)

사용자 삽입 이미지

[mysqldump]에도
max_allowed_packet 을 256M으로

 

변경사항저장

#service mysql restart

11) PHP 권한 설정

웹 서비스 구동시 발생할 수 있는 Nobody 퍼미션 관련 문제를 해결하기 위해 관련 프로그램을 설치한다.
이 세팅을 하면 shell의 권한과 sftp의 권한과 web의 권한이 동일하게 취급되며 보안도 좋게된다.
자세한 설명은 https://lael.be/188 를 참조하도록 하고 여기서는 명령어만 나열한다.
순서대로 쓰면 된다.
#apt-get install apache2-mpm-itk
#chmod 711 /home
#chmod -R 700 /home/*

(/home/* 안에 아무파일도 없을 경우 마지막 구문은 에러가 날 수 있다. 에러가 나더라도 무시하면 된다.)

 

12) 계정생성 및 동작테스트

원래 표준명령어는 useradd 이지만    ubuntu는 사용하기 좋게 adduser 를 지원한다.
리눅스 관련 서적을 보면 둘다 계정생성용 명령어라고 되어있다.
쉬운 설정을 위해 adduser를 사용
#adduser lael.be --force-badname
(참고로 위와 반대동작을 하는 계정삭제 명령어는 – 계정을 삭제하고 홈디렉토리도 삭제함 –
#userdel -r lael.be
입니다.)
보통 웹루트는 홈디렉토리에 하지 않습니다.
저는 주로 www 디렉토리를 사용합니다.사용자변경 후 www 디렉토리를 생성하고 빠져나오기
#su -l lael.be
#mkdir www
#exit

13) 웹사이트 Apache 환경설정파일 작성

다음의 내용을 작성한다.

 

/etc/apache2/sites-available/lael.be.conf 에 저장한다.

<VirtualHost *:80>
#main domain
ServerName lael.be

#additional domain
ServerAlias www.lael.be
ServerAlias my-anotherdomain.com

#document Root
DocumentRoot /home/lael.be/www/

#additional setting
<Directory /home/lael.be/www/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
#14.04 rules
require all granted
</Directory>

AssignUserID lael.be lael.be

</VirtualHost>
ServerAlias 는 사용안하면 빼도 되는 줄이다.

14) 사이트 활성화 및 적용

#a2ensite lael.be
(참고로 사이트 비활성화는
#a2dissite lael.be
입니다.)
– 아파치 설정 다시 불러오기(적용을 위해)
#service apache2 reload

15) Apache 추가 보안 설정

– 기본 언어셋 설정
#vi /etc/apache2/conf-available/charset.conf
기본 언어값 UTF-8 에 대해서 주석처리되어 있을 텐데 주석(#)을 제거해 준다.
v5
– 추가 보안 설정
#vi /etc/apache2/conf-available/security.conf
매우 권장하는 보안설정이므로 Ubuntu Apache 패키지 제작자가 미리 써두었다.
이미 다 쓰여 있으니까 주석(#) 만 제거하자.
v6
v7
v8

16) SSH 기본 포트번호 변경

SSH 기본 포트번호인 22번을 다른 번호로 바꿉니다.
기억하기 쉬운 숫자로 변경하세요.
v9

보안 ) 방화벽 적용하기.

당연한 이야기지만 Ubuntu 에도 방화벽이 있습니다.
무척 당연한 이야기지만 방화벽을 사용하면 서버 보안이 매우 많이 향상됩니다.
현재 방화벽 설정 보기. (List)
#iptables -L
스크린샷 2015-01-23 오전 1.33.06
INPUT (서버로 들어오는 것 관리), FORWARD (서버에서 내부망으로 연결관리;잘 안씀), OUTPUT (서버에서 나가는 것 관리)
로 이루어져 있다.
보통 FORWARD와 OUTPUT은 건들이지 않고 INPUT 만 수정한다.
policy ACCEPT 라는 뜻은 아무 조건도 해당하지 않았을 때 ACCEPT 하라는 것이다.
먼저 현재 방화벽 설정을 파일로 저장한다. 언제든 현재의 상태로 되돌릴 수 있기 위해서 이다.
#cd ~
#mkdir firewall_rules
#cd firewall_rules
#iptables-save > 150123.rules                 현재 날짜 쓰세요.
이제 방화벽을 복구해 보자
#iptables-restore < 150123.rules
#iptables -L
방화벽 설정방법에 2가지 방식이 있는데,
1) 하나는 policy DROP 으로 하고 허용할 규칙을 추가해 주는 것이다.
2) 다른 하나는 policy ACCEPT 로 하고 허용할 규칙과 차단할 규칙을 추가해 주는 것이다.
라엘이는 2번의 방식을 설명하겠다.
1번의 방식을 하고 싶으면 https://gist.github.com/danrl/7028281 이 글을 참고하여라.
2번의 방식
규칙 : 아이피 111.222.111.222 에 대해서 destination port 가 22 이면 ACCEPT 하여라.
#iptables -A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
아이피 바꾸지 마시고 위의 예시 (111.222.111.222) 그대로 입력하세요.
#iptables -L
스크린샷 2015-01-23 오전 1.58.38

 

이제 현재 상태에 대해서 방화벽 설정파일을 생성하자.

적당한 저장폴더로 이동해서,

#iptables-save > 150123.rules

 

FTP나 vi, cat 으로 해당 150123.rules 를 열어보자.

열고나서 코드의 뜻을 대충 해석해보아라. (간단하다.)

하단 *filter 부분에

-A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

가 보이는가?

 

여러분은 이곳에 아래의 코드를 집어넣어야 한다.

순서가 중요하다. IF-ELSE 같이 동작하기 때문에 조건에 맞으면 바로 지정된 동작을 한다.

211.105.192.168 아이피만 지정하고 싶을 때 -> -s 211.105.192.168/32

211.105.192.* 아이피 그룹을 지정하고 싶을 때 -> -s 211.105.192.0/24

211.105.*.* 아이피 그룹을 지정하고 싶을 때 -> -s 211.105.0.0/16

목적지 포트가 22번(ssh) 포트일 때 -> –dport 22

목적지 포트가 80번(www) 포트일 때 -> –dport 80

 

아래는

1. 이미 연결된 것은 허용

2. ping 허용

3. loopback 허용

4. 111.222.111.222 의 22번 포트 접근 허용

5. 123.111.123.111 의 22번 포트 접근 허용

6. 80 포트 접근 허용 (-s 옵션이 없으므로 누구나 허용)

7. 차단

8. FORWARD 차단

의 코드이다.

아까 생성한 .rules 파일을 열어서 코드를 추가하여라. 이때 반드시 당신의 아이피를 추가하여라.

추가가 잘못되어도 어차피 1번의 조건에 의해서 당신의 연결이 끊기지는 않겠지만 새로운 연결은 차단될 것이다.

 

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 111.222.111.222/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 123.111.123.111/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

스크린샷 2015-01-23 오전 2.18.26

#iptables-restore < 150123.rules

#iptables -L

!!!반드시 현재 쉘 연결을 끊지 말고!!!

현재 연결은 1번 조건에 의해서 반드시 허용이기 때문에 괜찮다.

 

새로 연결창 띄워서 테스트해 보아라.

만약 원하는대로 동작하지 않는다면 다시 .rules 파일을 수정하고 iptables-restore 하여라.

방화벽 설정이 머리가 아프다면

iptables -F 로 초기화 하고 내일 다시 시도해 보아라.

 

이 설정은 신기하게도 재부팅 되면 초기화 된다.

설정을 지속시키도록 하자.

iptables-persistent 설치

스크린샷 2015-01-23 오전 3.13.35

#apt-get install iptables-persistent

Yes (엔터), Yes (엔터)

 

/etc/iptables 라는 폴더가 생성되고

rules.v4, rules.v6 가 생성된다.

 

부팅시 실행되는 파일을 갱신하자.

#iptables-save > /etc/iptables/rules.v4

 

ipv6 차단하기

#vi /etc/sysctl.conf

맨 밑에

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

추가.

 

설정파일 적용

#sysctl -p

 

검사

#cat /proc/sys/net/ipv6/conf/all/disable_ipv6

1 이면 disable 된 상태이다.

스크린샷 2015-01-23 오전 3.48.16


 

기타 ) 계정별 트래픽 양 제한하기, 전송 속도 제한하기.

 — Ubuntu 12.04 LTS 버전의 경우 설치방법

(14.04 LTS에서는 테스트해보지 못했습니다. 곧 테스트 해서 아래 코드를 검증하도록 하겠습니다.)

 

트래픽 제한이나 전송 속도 제한이 필요한 경우.

서버를 운영하다보면 DDOS나 비슷한 경우가 생길 때가 있다. 어떤 이벤트 오픈일 이라던가 다운로드 트래픽이 몰린다거나, 동영상 강좌서비스를 한다던가…

기본적으로 CPU는 최선의 노력을 하려고 한다. 100의 일을 할 수 있고 1000의 요청이 오면 과로(overwork)해서 150의 일을 처리한다.

처리하다가 효율이 급격히 떨어지고 다른 서비스가 장애가 발생하기 시작한다.

이것을 문제를 해결하는 방식이 두가지가 있는데,

첫째) 서비스 다운.

하루 트래픽이 평소 100GB 발생한다고 하자. 그럼 트래픽 제한을 200GB 정도로 걸어둔다.

서버는 트래픽이 200GB가 될때까지 고강도의 일을 한다. 하지만 200GB이 초과되면 요청을 거부하고 휴식에 들어간다.

이것은 매우 지혜로운 방법이다. 저를 포함한 여러분 대부분이 구동할 서비스는 비정상적인 상황에서 서비스를 중단해서 서버를 살리는 것이 최선의 방안이다.

둘째) 속도 제한.

라엘이의 경우 트래픽 제한은 하지 않고 속도 제한만 한다. 속도 제한만 해도 트래픽 제한의 효과가 있기 때문이다.

속도를 1MB/s 로 제한을 걸면 하루 트래픽이 최대 86400MB로 설정되는 효과가 있다.

 

CPU가 100의 일을 할 수 있고 1000의 요청이 오면, 기존에는 최선을 다해서 서비스를 처리했는데

그것에 속도제한을 걸어버린다. 즉 1000의 요청이 왔고 100을 처리할 수 있어도 50씩 처리하게 한다.

서비스가 느려지긴해도 다운되진 않는다. CPU도 여유롭게 일을 하기 때문에 무리가 생기지도 않는다.

여러분의 서버에 1GB 정도의 압축파일을 올리고 동시에 100명이 다운받게 해 보아라. 아마 Apache 뿐만 아니라 Mysql 도 장애가 걸릴 것이다.

그런데 속도제한을 걸면 1000명이 다운받아도 좀 느릴뿐 장애가 발생하진 않는다.

 

1] 아파치 확장 개발 라이브러리 다운로드
#apt-get install apache2-prefork-dev

 

2] apache cband module 다운로드

mod-cband-0.9.7.5.tgz

현재 공식사이트가 닫혀있다.

위를 클릭해서 다운받도록 하자.

 

3] 압축을 풀고 설치
#tar -xzvf mod-cband-0.9.7.5.tgz
#cd mod-cband-0.9.7.5
#./configure
#make
#make install

 

4] 아파치 모듈 켜기
#a2enmod cband

 

5] 적용을 위해서 아파치 재시작
#service apache2 restart

 

6] 설정하기.

https://www.linux.co.kr/home/lecture/?leccode=10588

위의 링크 글을 참조하여 이미 생성해서 사용중인 sites-available 안의 virtualhost 파일을 수정한다.

 

 

출처 : http://blog.lael.be/post/73

우분투 최소 설치

원래는 서버쪽이 아니었습니다. 최초의 주제는 “최소한으로 Ubuntu를 설치해 보자!” 였습니다. 그러나 저 말고도 서버를 관리하고 싶은데 터미널로 관리하기는 조금 힘들고, DeskTop을 설치하여 서버로 운영을 하자니 자원의 낭비가 걱정이 되시는 분들이 있으리라는 생각에 현재 제가 하고 있는 노가다(?) 작업을 정리한 것을 여기에 올립니다.

1. Ubuntu Server 설치

제일 먼저 할일은 Ubuntu Server 10.04 (LTS)를 설하는 것입니다.
이부분에 대해서는 Internet에 많은 설명이 있기에 생략하겠습니다.
다만 설치를 할때 한글상태에서 설치를 하고, 키보드는 미국으로 해 놓고 설치를 했습니다.
이 부분이 왜 문제가 되는가 하면, 얼마전에 서버를 설치하고 원격데스크탑으로 접속을 하려고 하니 기보트매핑이 다르다는 이유로 접속이 않되었던 기억이 있습니다. 이부분은 아직도 답을 못 찾았습니다. ㅜ.ㅜ

2. 메시지의 한글 깨짐을 보정

위의 1번 상태로 설치를 하고 나서 부팅을 하시면 TTY 1 모드로 로그인을 하게 됩니다. 이 상태에서 Linux 명령을 치면 메시지가 깨져서 화면에 보입니다. 이것이 싫으신 분들은 영문상태로 설치를 하시면 됩니다.
특히 한글이 보여야 하는 부분이 apt-get 명령을 사용할때 입니다. 뭐 그러려니하고 지나가시면 되지면 그게 눈에 거슬린다면 로그인 하자마자 다음의 명령을 터미널에 써주세요.

export LANG=en_US.UTF-8

이명령 이후에는 영문 상태로 변경이 되어서 한글이 깨져 보이지 않고 영문으로 보입니다.

3. 패키지를 최신 상태로 만들고 시스템을 최신상태로 Upgrade

sudo apt-get update
sudo apt-get upgrade

이 명령도 설명은 생략하겠습니다.

4. 그래픽 사용자 환경 설치

우분투 Desktop에는 기본적으로 두가지 메타 패키지가 설치되는 것 같았습니다. ubuntu-desktop과 ubuntu-standard 입니다. 이중에 ubuntu-standard는 서버 버전에도 자동으로 설치가 되는것 같았습니다. ubuntu-desktop에서 가장 기본이 되는 것이 GDM 같아 보였습니다. 그래서 제일 먼저 설치할 패키지는 GDM 입니다.

sudo apt-get install gdm

GDM을 설치하고 리부링을 하면 그놈 GUI 로그인 화면이 보입니다.
Server를 설치할 때 만든 아이디로 로그인을 합니다.
로그인을 하면 두가지 문제가 눈에 보입니다.
하나는 popup창입니다. 애플릿이 어쩌구 저쩌구 하는데 나중에 필요한 부분이니까 Don’t Delete를 해서 지우지 않고 유지를 합니다.
두번째는 한글이 전부 깨져서 보입니다.

5. 터미널 설치

sudo apt-get instal gnome-terminal

프로그램 설치와 파일관리를 위해서 설치합니다.

6. 한글을 정상으로 만들기

방금전에 설치한 터미널을 이용하여 Un 한국어 트루타입 폰트 세트를 설치 한다.

sudo apt-get install ttf-unfonts-core

이제야 한글이 정상적으로 보입니다.

7. Synaptic을 설치하여 프로그램 설치를 편하게 하자!

터미널에서 다음 명령으로 Synaptic을 설치합니다.

sudo apt-get install synaptic

8. 로그인 후에 보이는 POPUP 에러 처리

터미널에서 다음 명령으로 Clone of the GNOME panel indicator applet를 설치합니다.

sudo apt-get install indicator-applet-session

9. 한글 번역을 마무리하기

여기까지 설치를 하고 보면 상단에 보이는 메뉴가 아직도 영어로 되어 있습니다. 이부분을 해결하기 위하여 Language selector for Ubuntu Linux를 설치합니다.

sudo apt-get install language-selector

이것을 설치하고 시스템 – 관리 – 언어를 실행시키면 나머지 부분을 설치할것이냐고 물어 봅니다. Yes를 선택하여 설치하면 상단의 메뉴가 한글로 변경됩니다.

10. 필요한 어플리케이션 설치하기

Synaptic에서 찾아서 하니씩 하나씩 설치하면 됩니다.

예) gedit, APM 서버, 한글 폰트 등등

11. Desktop 우측 상단의 네트워크 상단 애플릿 문제

Desktop 우측 상단에 있는 애플릿을 보기 위하여 network-manager-gnome : 네트워크 관리 프레임워크(GNOME 프런트엔드)를 설치 하였지만 자동으로 실행이 되지 않았습니다.
어딘가에 세팅을 해주어야 하는것 같은데 찾지 못하였습니다.

12. 원격데스크탑 연결을 위한 VNCServer 설치

Ubuntu에서는 VNCServer로 vino를 사용하고 있습니다. 다음의 명령으로 VNCServer를 설치합니다.

sudo apt-get install vino

문제 : 설치는 제대로 된거 같은데 문제는 터미널 상태에서 세팅을 어떻게 잡아야 하는지 모르겠습니다. 설치만 된 상태로는 원격에서 접속할수가 없습니다. 원격 접속을 활성화 해우어야 하고, ID/Password로 접속할수 있게 해주어야 하고, 자동으로 접속이 되게 해주어야 하는데 그 설정을 어떻게 하는지 모르겠습니다. ㅜ.ㅜ

답변 1) gconf 설정 데이터베이스를 수정하는 방법은 몇가지 방법이 있습니다.
(1) gconf-editor을 이용하여 수정하기(GUI)
(2) gconftool-2를 이용하여 수정하기(CUI)

이상으로 제가 작업한 것을 두서없이 적었습니다.
부족한 부분이나 오류가 있는 부분을 알려 주시면 바로 수정하겠습니다.

 

 

한방에 해결하는 명령어가 있습니다.

sudo aptitude install –without-recommends ubuntu-desktop

한글 문제만 제외하고 이거 한방이면 거의 모든것이 해결됩니다.

언어 추가 설치하고, 29번 파일 지우면 됩니다.

퍼온 글입니다. 원본 글은 http://www.ubuntu-kr.org/viewtopic.php?p=77042 입니다.