색을 랜덤하게 출력해주는 소스입니다.
mt_rand 함수와 rand 함수의 기본적인 역할은 같습니다. mt_rand 함수에는 가비지가 안들어가서 좋다고 하네요^^ 
테스트해본결과 rand 함수를 이용하면 유닉스 운영체제 환경에서는 안먹혔습니다.
현재 Leovote 0.2버전에서서 사용중입니다.

mt_srand((double)microtime()*1000000);
$color_1 = dechex(mt_rand(0,255)); //색을 랜덤하게.. 숫자만들기 시작!
$color_2 = dechex(mt_rand(0,255));
$color_3 = dechex(mt_rand(0,255));
if(strlen($color_1) == 1) $color_1 = $ctcolor_1 . "0";
if(strlen($color_2) == 1) $color_2 = $ctcolor_2 . "0";
if(strlen($color_3) == 1) $color_3 = $ctcolor_3 . "0";
$color = $color_1 . $color_2 . $color_3;

echo("");

'Coding' 카테고리의 다른 글

불량 단어 필터링  (0) 2017.01.07
절대경로 표현하기  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
주민번호 생성원리  (0) 2017.01.06
CGI Setting  (0) 2017.01.06

PHP_SELF
document root를 기준으로 한 현재 실행중인 스크립트의 파일 이름. PHP를 커맨드라인으로 샐행한 경우 이 변수는 사용할 수 없다. 

HTTP_COOKIE_VARS
현재 스크립트에 HTTP 쿠키를 사용해 전달된 변수의 associative 배열 

HTTP_GET_VARS
현재 스크립트에 HTTP GET 메소드를 사용해 전달된 변수의 associative 배열 

HTTP_POST_VARS
현재 스크립트에 HTTP POST 메소드를 사용해 전달된 변수의 associative 배열 

HTTP_POST_FILES
현재 스크립트에 HTTP POST 메소드를 사용해 업로드된 파일에 대한 정보를 가진 associative 배열 $HTTP_POST_FILES 배열의 내용에 대한 자세한 정보는 POST method uploads 부분을 살펴보자. 

$HTTP_POST_FILES 변수는 4.0.0 이후에서만 유효하다. 

HTTP_ENV_VARS
현재 스크립트에 현재 환경 변수에서 전달된 변수의 associative 배열 

HTTP_SERVER_VARS
현재 스크립트에 HTTP 서버에서 전달된 변수의 associative 배열 이 변수들은 위에서 언급한 Apache 변수들과 유사한 내용으로 되어있다. 

-----------------------------------------------------------

GATEWAY_INTERFACE
서버가 사용하고 있는 CGI specification의 revision. 예: 'CGI/1.1'. 

SERVER_NAME
현재 스크립트가 실행되고 있는 호스트의 이름. 만약 스크립트가 가상 호스트에서 실행되고 있다면, 이 값은 가상 호스트의 값이 될 것이다. 

SERVER_SOFTWARE
요구에 대한 대답의 헤더에 사용할 서버 identification 문자열 

SERVER_PROTOCOL
페이지가 요구되어질 때 사용한 프로토콜의 이름과 리비젼. 예: 'HTTP/1.0'; 

REQUEST_METHOD
페이지가 요구될 때 사용된 method: 예: 'GET', 'HEAD', 'POST', 'PUT'. 

QUERY_STRING
해당 페이지를 접근할 때 사용된 query string. 

DOCUMENT_ROOT
현재 스크립트가 샐행중인 document root 디렉토리. 서버의 설정 파일에 정의되어 있다. 

HTTP_ACCEPT
현재의 요구(request)에 포함된 Accept: 헤더의 내용 (존재하는 경우만) 

HTTP_ACCEPT_CHARSET
현재의 요구(request)에 포함된 Accept-Charset: 헤더의 내용 (존재하는 경우만). 예: 'iso-8859-1,*,utf-8'. 

HTTP_ACCEPT_ENCODING
현재의 요구(request)에 포함된 Accept-Encoding: 헤더의 내용 (존재하는 경우만). 예: 'gzip'. 

HTTP_ACCEPT_LANGUAGE
현재의 요구(request)에 포함된 Accept-Language: 헤더의 내용 (존재하는 경우만). 예: 'en'. 

HTTP_CONNECTION
현재의 요구(request)에 포함된 Connection: 헤더의 내용 (존재하는 경우만). 예: 'Keep-Alive'. 

HTTP_HOST
현재의 요구(request)에 포함된 Host: 헤더의 내용 (존재하는 경우만). 

HTTP_REFERER
현재 페이지를 찾아온 페이지. 현재페이지로 넘어오는 링크가 있고, 이 링크를 클릭하여 현재 페이지로 넘어온 경우 이전 페이지의 주소가 설정된다. 이 값은 사용자의 브라우저에 따라 설정될 수도 있고 아닐 수도 있다. 

HTTP_USER_AGENT
현재의 요구(request)에 포함된 User_Agent: 헤더의 내용 (존재하는 경우만). 현재 페이지를 화면에 표시할 브라우저 소프트웨어의 상징이 되는 문자열이다. 예:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) 특히, 이 값을 get_browser()함수와 함께 사용하면, 해당 페이지를 시용자의 브라우저의 능력에 맞춰서 만들어 낼 수도 있다. 

REMOTE_ADDR
사용자가 현재 페이지를 보고 있는 시스템의 IP 주소 

REMOTE_PORT
사용자의 시스템이 웹서버와 통신하고 있는 port 번호 

SCRIPT_FILENAME
현재 실행되고 있는 스크립트의 절대 경로명 

SERVER_ADMIN
웹서버 설정 파일에서 SERVER_ADMIN (Apache의 예) 지시자에 설정되어 있는 값. 만약 스크립트가 가상 호스트 상에서 실행되고 있다면 이 값은 virtual host 설정내에 설정된 값이 된다. 

SERVER_PORT
웹서버가 사용하는 port 번호. 기본값으로 보통 '80'이 사용되지만, 예를들어 SSL을 사용하는 경우 여러분이 지정한 secure HTTP 포트의 값이 사용된다. 

SERVER_SIGNATURE
server-generated 페이지에 추가되는 서버 버전과 가상 호스트 명. (enabled된 경우만) 

PATH_TRANSLATED
모든 virtual을 real로의 전환을 마친 후, 현재 페이지의 파일시스템 기준의 경로. (document root 기준이 아니다.) 

SCRIPT_NAME
현재 스크립트의 경로. 이것은 해당 페이지가 자기 자신을 가리킬 때 사용하면 유용하다. 

REQUEST_URI
이 페이지를 접근하기 위해 사용한 URI. 예: '/index.html'. 

'Coding' 카테고리의 다른 글

절대경로 표현하기  (0) 2017.01.07
색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
주민번호 생성원리  (0) 2017.01.06
CGI Setting  (0) 2017.01.06
Vi(m) 사용시 ^M 없애기  (0) 2017.01.06

register_globals=off로 되어있으면 기존에 사용하던 글로벌 변수들이 동작하지 않습니다. 다바꿔줘야는데
보안상 그렇게 해놨다고 하는데 off 상태로 서버를 운영하면 지금까지 개발한 PHP 프로그램의 상당부분을 수정하여야 합니다. 

본인이 직접 서버를 운영하는경우라면 register_globals=on으로 수정하면 되지만 호스팅서비스를 받아서 사용하고 있거나 한다면 임시 방편으로 아래와 같이 소스코드를 삽입할 수 있습니다.

$params = array_merge($_POST, $_GET, $_COOKIE,$_SESSION); 
foreach($params as $key => $value) { 
global ${$key}; 
${$key} = $value; 

?>

이때 세션 처리 때문에 소스 최상단에 

session_start();

이 있을 때에는 session_start(); 아래에다 위 소스를 삽입시켜 주십시오.
그러면 대개는 해결됩니다.

'Tip' 카테고리의 다른 글

리눅스 cpu core, memory, 제품명 확인  (0) 2017.01.25
pcap 패킷 수정/replay 하기 (tcprewrite, tcpreplay)  (0) 2017.01.16
이메일 체크 함수  (0) 2017.01.06
ubuntu 메일 보내기  (0) 2017.01.06
mysql backup  (0) 2017.01.06

웹개발 할때 쓸일이 있죠

-------------------------------
주민등록번호 총13자리
-------------------------------
앞 6자리 - 년(2자리), 월(2자리), 일(2자리)
뒤 7자리 - 성별 및 연도구분(1자리), 지역번호(4자리), 순번(1자리), 오류검증번호(1자리)

뒤 7자리는 일정한 규칙이 따릅니다.
여기서 성별 및 연도구분 1자는 다음과 같은 규칙을 따릅니다.

1800년대생은 남자 9, 여자 0
1900년대생은 남자 1, 여자 2
2000년대생은 남자 3, 여자 4
2100년대생은 남자 5, 여자 6
2200년대생은 남자 7, 여자 8

'Coding' 카테고리의 다른 글

색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
CGI Setting  (0) 2017.01.06
Vi(m) 사용시 ^M 없애기  (0) 2017.01.06
쉘프로그래밍 문법  (0) 2017.01.06

function email($address) {
return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
$address));
}

Install FastCGI with PHP in Apache on CentOS 6


Step 1: Install Packages

First step is make sure we have the required packages installed. Assuming you already have the PHP module installed, we’ll just need to install a couple of extra packages:

Step 2: Create Execution Environment

Create a fastcgi-bin directory, copy php-cgi and ensure file permissions are correct.

Step 3: Configure Apache

By following the following steps, we’re not globally setting PHP to be handled php FastCGI. We’ll only be configure a single virtual host to use FastCGI to handle PHP.

Paying specific attention to the following:

Step 4: Restart Apache

Before restarting Apache we should quickly test the config for any errors:


test.cgi 작성 후 테스트 (실행권한 줘야 함) Ex, http://x.x.x.x/cgi-bin/test.cgi
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<HTML><HEAD><TITLE>CGI TEST</TITLE></HEAD>\n";
print "<BODY BGCOLOR=FFFFFF>\n";
print "<CENTER><H1>THIS IS A TEST PAGE</H1>\n";
print "</CENTER>";
print "</BODY></HTML>\n";
exit;


'Coding' 카테고리의 다른 글

색을 랜덤하게 뽑아서 출력합니다.  (0) 2017.01.07
php predefined variables  (0) 2017.01.06
주민번호 생성원리  (0) 2017.01.06
Vi(m) 사용시 ^M 없애기  (0) 2017.01.06
쉘프로그래밍 문법  (0) 2017.01.06

1. 필요한 소프트웨어

SSL 암호화를 위해 OpenSSL과 mod_ssl이 필요하다. 6.4 버전에서는 openssl이 자동 설치되는 걸로 알고 있다.


# yum install mod_ssl openssl


2. self-signed certificate 생성

private key 생성

# openssl genrsa -out ca.key 1024


CSR 생성

# openssl req -new -key ca.key -out ca.csr


Self signed key 생성

# openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt


다음 위치에 files을 복사한다.

# cp ca.crt /etc/pki/tls/certs

# cp ca.key /etc/pki/tls/private/ca.key

# cp ca.csr /etc/pki/tls/private/ca.csr


SELinux 에 의해 Certificate files이 삭제 될 수 있다. 이로 인해 삭제된 구문을 원복시키기 위해 다음 명령어를 쓴다. 삭제 된 경우 이 명령어를 통해 복원 된다. 


# restorecon -RvF /etc/pki

/etc/pki/* 하위의 모든 폴더나 파일에서 삭제된 구문을 복원한다.


# vi /etc/httpd/conf.d/ssl.conf

아파치의 ssl 설정을 변경하기 위해 편집기로 열어 아래와 같이 수정한다.


SSLCertificateFile /etc/pki/tls/certs/ca.crt

SSLCertificateKeyFile /etc/pki/tls/private/ca.key


# service httpd restart


3. SSL VirtualHost 추가

SSL은 443 포트를 사용하기 때문에 이를 위한 Virtualhost를 추가한다.


# vi /etc/httpd/conf/httpd.conf

httpd 설정 파일을 편집기로 열어 마지막 위치에 아래 내용을 입력한다. httpd.conf 파일 내에 예제로 적혀있는 내용이 있으니 복사&붙여넣기 하면 된다.


# SSL Virtual host add

NameVirtualHost *:443


# SSL Virtual host add
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin starkapin@tistory.com
    DocumentRoot /var/www/html
    ServerName ssl.starkapin.com
    ErrorLog logs/ssl_starkapin_com_error_log
    CustomLog logs/ssl_starkapin_com_error_log common
</VirtualHost>


# service httpd restart


4. 방화벽 설정

443 포트를 방화벽으로 허용시켜준다.


# vi /etc/sysconfig/iptables

편집기로 불러와 아래 내용을 추가한다.


-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT


# service iptables restart


이제 웹으로 접속해서 확인 하면 인증서 경고가 발생하며 접속됨을 확인 할 수 있다.

https://127.0.0.1/

'Server' 카테고리의 다른 글

iptables  (0) 2017.01.08
아파치 인증창 띄우기  (0) 2017.01.07
FTP 정리 Active/Passive 그리고 TFTP  (0) 2017.01.06
윈도우 net user 커맨드  (0) 2017.01.06
윈도우 커맨드 net rkill at 등  (0) 2017.01.06

F T P

 

FTP 같은 경우는 command 포트와 data 포트 두가지가 사용된다운용방법에 있어서도 Active mode passive mode로 구분된다.

 

- Active mode

Client는 서버의 21번 포트로 접속한 후 로그인을 한다.

일단 로그인을 하게 되면 Client는 어떤 포트로 접속해도 되는지를 서버에게 알려주게 된다이때 서버는 자신의 20번 포트로 하여 Client가 말해준 포트로 접속을 시도하고 데이터를 전송한다.

 

1. Client(1023~ port) -> Server(21 port) Client가 서버에게 자신의 데이터 통신할 포트를 알려줌

2. Server(20 port) -> Client(1023~ port) Client가 알려준 포트로 서버가 접속함 (syn)

3. Client(1023~ port) -> Server (syn+ack)

4. Server(20 port) -> Client(1023~ port) (ack)

 

- Passive mode

Passive mode 에서는 서버가 Client로 접속시도를 하는 취약점이 존재하지 않는다.

Client가 서버의 21번 포트로 접속을 하면 서버가 임의의 포트를 Client에게 알려주고 Client는 서버가 알려준 포트로 다시 접속시도를 하여 데이터 포트가 오픈된다.

 

1. Client(1023~ port) -> Server(21 port) 서버가 Client에게 데이터 통신할 1023 이상의 포트를 알려줌

2. Clinet(1023~ port) -> Server(1023~ port) 서버가 알려준 포트로 접속 (syn)

3. Server(1023~ port) -> Clinet(1023~ port) 수신확인 및 연결 허락 (syn + ack)

4. Client(1023~ port) -> Server(1023~ port) 데이터 전송 (ack)

 

Active mode의 경우에는 데이터 세션을 맺기 위해 서버가 Client의 랜덤한 포트로 접속을 하기 때문에 방화벽단에서 Outbound -> Inbound 21, 20 포트와 Inbound -> Outbound 정책의 1023 이상의 모든 포트를 오픈해줘야 한다여기서 PIX 방화벽의 fixup 기능이 유용하게 쓰인다.

 

예를 들어 fixup protocol ftp 21 이와 같이 설정되어 있다면 PIX 방화벽은 데이터세션을 맺기 위해 동적으로 데이터 포트를 오픈한다

fixup protocol ftp 21

fixup protocol ftp 20

이와 같이 설정하지 않아도 된다는 것이다.

 

Passive mode의 경우에도 fixup protocol 기능이 동적으로 데이터세션 포트를 생성해 주기 때문에 정상적인 통신이 가능하게 된다.

데이터 세션 포트를 맺기 위해 Outbound(1023~ port) -> Inbound(1023~ port) 로 패킷이 전송될 때 fixup 기능을 이용하면 동적으로 데이터 포트가 오픈되기 때문에 모든 포트를 오픈할 필요가 없다.

 

방화벽에서 FTP 관련해서 정책 적용을 할 때 주의해야 할 구성도는 아래와 같다.






                                                         <그림 1>



                                                         <그림 2>



                                                         <그림 3>




 

보통의 경우에 <그림 3> 과 같이 구성되어 있는 경우가 대부분이지만 <그림 1> 과 같은 경우라면 F/W 1 에서도 FTP 관련 포트를 오픈해줘야 한다.


'Security' 카테고리의 다른 글

암호학  (0) 2017.01.08
사용자 인증  (0) 2017.01.08
ubuntu 환경에 SNORT & BASE & Metasploit 설치  (0) 2017.01.06
포트 스캐닝으로부터 OS 정보 숨기기  (0) 2017.01.06
R.U.D.Y DDoS  (0) 2017.01.05

## FTP (File Transfer Protocol) ; 파일 전송 프로토콜 ##

FTP는 인터넷상의 컴퓨터들간에 파일을 교환하기 위한 표준 프로토콜로서 가장 간단한 방법이기도 하다화면에 표시할 수 있는 웹 페이지와 관련 파일들을 전송하는 HTTP, 전자우편을 전송하는 SMTP 등과 같이, FTP 역시 인터넷의 TCP/IP 응용 프로토콜 중의 하나이다. FTP는 웹 페이지 파일들을 인터넷상에서 모든 사람이 볼 수 있도록 하기 위해 저작자의 컴퓨터로부터 서버로 옮기는 과정에서 사용된다또한다른 서버들로부터 자신의 컴퓨터로 프로그램이나 파일들을 다운로드 하는 데에도 많이 사용된다.

 

사용자 입장에서는 간단한 명령을 이용하여 FTP를 쓰거나또는 그래픽 사용자 인터페이스를 제공하는 상용 프로그램을 쓸 수도 있다보통은 웹 브라우저도 웹 페이지로부터 선택한 프로그램을 다운로드 하는데 FTP를 사용한다. FTP를 사용하여 서버에 있는 파일을 지우거나 이름을 바꾸거나 옮기거나 복사하는 등 갱신작업을 할 수도 있다. FTP 서버에는 로그온을 해야하지만익명의 FTP를 사용하여 모든 사람들에게 공개된 파일들을 쉽게 접근할 수 있도록 하고 있다.

 

FTP는 보통 TCP/IP에 함께 딸려오는 일련의 프로그램 속에 포함되어 있다.

 

## Active Mode, Passive Mode ##

보안쪽 신입사원 기술면접에 자주 나온다.

FTP 는 두 개의 모드가 있다.

오래된 전통적인 한 방식이 바로 Active mode 라는 것과 좀 더 최근에 나타난 것이 Passive mode 이다.

 

이 두가지를 비교해 보면인터넷 사용자들이 가장 흔하게 접하는 웹 브라우저들이 일반적으로

Passive 모드로 설정되어 있다그러나, FTP 클라이언트 프로그램들은

일반적으로 Active 모드가 기본값으로 설정되어 있다.

 

Active 모드에서는 원격지의 서버가 어떠한 출력을 내보낼 때

이를테면 ls  dir 같은 명령어가 입력되면 결과를 출력하려고 할 때 혹은 파일을 전송할 때 -

반드시 현재 내가 사용중인 컴퓨터와 별도의 추가적인 TCP/IP 연결을 맺어야 한다.

(이때 일반적인 FTP 포트인 21번이 아니라 FTP-Data 포트인 TCP 20번을 사용한다.)

 

이는 기존에 연결된 FTP 를 끊지 않고 Data 커넥션을 필터링 하는 것이 불가능하다는 얘기이므로 방화벽이 설치되어 있는 경우 Active 모드는 상당히 곤란한 환경이 된다.

 

반면에 Passive mode 에서는 TCP 20번 포트 대신에 1024 번 이상의 시스템에서 예약해 놓지 않은 포트를 사용하여 데이터를 주고받을 수 있다.

 

Passive 모드를 끄고 접속하라는 것은 해당 FTP 서버가 Passive 모드를 지원하지 않고 기본적이고도 전통적인 Active 모드로만 운영이 된다는 뜻이며 또한, Passive 모드를 지원하지 않는 서버의 경우에

Passive 모드로 접속하는 것이 불가능하다.

 

## 간단한 FTP TFTP ##

TFTP

TFTP(Trivial File Transfer Protocol)란 이더넷을 이용하여 파일을 다운 받는 프로토콜로직이다. UDP 방식을 사용한다. TFTP ftp와 같은 파일 전송 프로토콜이지만매우 간단한 프로토콜로 구성되므로 부트로더와 같은 작은 크기의 프로그램에서 수행할 수가 있다.

 

보통 BOOTP와 연동하여 네트워크 부트를 할 때 사용하게 된다.

 

TFTP는 다음의 두 가지 방법에 의해 사용될 수 있다.

 

일반 ftp프로토콜은 tcp프로토콜(3웨이 핸드쉐이킹방식자세한 사항은 네트웍 관련서적을 참고 하기 바람.)을 사용하지만, tftp udp프로토콜(단방향 핸드쉐이킹 방식자세한 사항은 네트웍 관련 서적을 참고 하기 바람.)을 사용하여 전송한다.

 

동작되는 방식은 클라이언트가 서버에 접속하여 파일을 요청하면 해당 파일을 서버는 전송하고 이를 클라이언트는 응답하는 방식을 취한다매번 파일의 블록을 전송 시 블록의 길이를 전송하는데 이 블록의 크기는 고정되어 있어 이 크기보다 작은 블록이 오면 이를 마지막 블록으로 인식한다.

 

단점은 하나의 블록 전송이라도 실패하면 전송을 중지하므로 패켓 손실이 많은 환경에서는 사용이 곤란하다.

 

거의 모든 유닉스의 구현에 있어서 tftp 서버를 포함하고아마 스스로 설치할 일은 없을 것이다.

 

- TFTP 구축 필요성

 

리눅스를 다운로드 하는 방식에는 시리얼을 이용하는 방식과 랜을 이용하는 방식이 있다.

 

다운 받아야 할 내용이 매우 큰 램 디스크 이미지를 시리얼로 다운 받게 되면 개발속도가 현저히 떨어진다시리얼은 전송속도가 매우 늦기 때문이다랜을 이용하여 파일을 타겟보드5에 다운로드하는 방법으로 TFTP를 이용하도록 하고 있다. TFTP를 사용하면 매우 빠른 속도로 다운 받기 때문에 개발속도가 향상될 수 있다.

 

## 명령어 ##

ascii : 전송모드를 ASCII모드로 설정한다.(ascii또는 as)

binary : 전송모드를 BINARY모드로 설정한다.( binary또는 bi)

bell : 명령어 완료시에 벨소리를 나게한다.(bell)

bye : ftp접속을 종료하고 빠져나간다.(bye)

cd : remote시스템의 디렉토리를 변경한다.(cd 디렉토리명)

cdup : remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup)

chmod : remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html)

close : ftp접속을 종료한다. (close)

delete : remote시스템의 파일을 삭제한다.(delete index.old)

dir : remote시스템의 디렉토리 내용을 디스플레이한다.(dir)

disconnect : ftp접속을 종료한다.(disconnect)

exit : ftp접속을 종료하고 빠져나간다.(exit)

get : 지정된 파일하나를 가져온다.(get index.html)

hash : 파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash)

help : ftp명령어 도움말을 볼 수 있다.(help또는 help 명령어)

lcd : local시스템의 디렉토리를 변경한다.(lcd 디렉토리명)

ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l)

mdelete : 여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old)

mget : 여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz)

mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html)

open : ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net)

prompt : 파일전송시에 확인과정을 거친다. on/off 토글 (prompt)

put : 하나의 파일을 remote시스템에 올린다.(put index.html)

pwd : remote시스템의 현재 작업디렉토리를 표시한다.(pwd)

quit : ftp접속을 종료하고 빠져나간다.(quit)

rstatus : remote시스템의 상황(version, 어디서접속ID)을 표시한다.(rstatus)

rename : remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명)

rmdir : remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명)

size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html)

status : 현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status)

type : 전송모드를 설정한다.(type 또는 type ascii 또는 type binary)

 

 

 

 

## FTP 보안강화 ##

FTP (File Transport Protocol는 네트워크 상에서 파일을 전송하기 위해 설계된 이전 TCP 프로토콜입니다사용자 인증을 포함한 서버와 주고받는 통신이 모두 암호화되지 않았기 때문에 이 프로토콜은 비보안 프로토콜로 간주되며 주의하여 설정하셔야 합니다.

다음은 vsftpd FTP 서비스를 설정하는데 사용되는 보안 정책입니다.

FTP 환영 배너

사용자명과 암호를 입력하기 전에 환경 배너가 나타납니다이 배너에는 버전 정보가 포함되어 있으며이 정보는 크래커가 시스템 약점을 찾아내는데 유용하게 사용됩니다.

따라서 vsftpd의 환영 배너를 변경하시려면 /etc/vsftpd/vsftpd.conf 파일에 다음 지시자를 추가하시기 바랍니다:

ftpd_banner=<insert_greeting_here>

위의 지시자에서 <insert_greeting_here> 부분에 새로운 환영 메시지를 입력하십시오.

여러 개의 줄로 이루어진 배너 메시지를 입력하시려면 배너 파일을 사용하시는 것이 좋습니다 여러 배너를 손쉽게 관리하기 위하여 /etc/banners/라는 새 디렉토리를 만드신 후 모든 패너 파일을 이 디렉토리에 저장하십시오이 예시에서 FTP 접속에 사용되는 배너 파일은 /etc/banners/ftp.msg 입니다다음은 이 파일의 내용 예제입니다:

####################################################

# Hello, all activity on ftp.example.com is logged.#

####################################################

vsftpd에 이 환경 배너 파일을 사용하기 위해서는 /etc/vsftpd/vsftpd.conf 파일에 다음과 같은 지시자를 추가하십시오:

banner_file=/etc/banners/ftp.msg

 

익명 계정(anonymous) 접속

/var/ftp/ 디렉토리를 생성하시면 익명 계정이 활성화됩니다.

이 디렉토리를 생성할 수 있는 가장 쉬운 방법은 vsftpd 패키지를 설치하는 것입니다이 패키지는 익명 사용자를 위한 디렉토리 구조를 설정하고익명 사용자에게 이 디렉토리를 읽기만 할 수 있는 허가를 설정합니다.

익명 사용자는 어느 디렉토리에도 쓰기 작업을 할 수 없도록 기본 설정되어 있습니다.

익명 사용자 계정으로 업로드

익명 사용자가 업로드하는 것을 허용하시려면 /var/ftp/pub/에 쓰기 전용 디렉토리를 생성하시기를 권장합니다.

다음 명령을 입력하십시오:

mkdir /var/ftp/pub/upload

다음으로 익명 계정 사용자가 디렉토리 내의 내용을 보지 못하도록 허가를 변경하기 위해 다음 명령을 입력하십시오:

chmod 730 /var/ftp/pub/upload

디렉토리 목록은 다음과 같이 나타나야 합니다:

drwx-wx---    2 root     ftp          4096 Feb 13 20:05 upload

vsftpd에서 추가적으로 다음 줄을 /etc/vsftpd/vsftpd.conf 파일에 첨가하십시오:

anon_upload_enable=YES

사용자 계정

FTP는 비보안 네트워크 상에서 인증을 위해 암호화되지 않은 사용자명과 암호를 전달하기 때문에 시스템 사용자가 사용자 계정을 통해 서버에 접속하는 것을 거부하도록 설정하는 것이 좋습니다.

vsftpd에서 사용자 계정을 비활성화하시려면 /etc/vsftpd/vsftpd.conf 파일에 다음 지시자를 추가하십시오:

local_enable=NO

사용자 계정 제한하기

루트 사용자와 sudo 허가를 가진 사용자와 같은 특정 그룹의 계정이 FTP 서버에 접속하는 것을 막을 수 있는 가장 쉬운 방법은 4.4.2.4 에서 설명된 것처럼 PAM 목록 파일을 사용하는 것입니다vsftpd에 사용되는 PAM 설정 파일은 /etc/pam.d/vsftpd 입니다.

각 서비스에서 직접 사용자 계정을 비활성화시키는 것도 가능합니다.

vsftpd에서 특정 사용자 계정을 비활성화시키려면 /etc/vsftpd.ftpusers에 해당 사용자명을 추가하시면 됩니다.

접근 제어를 위해 TCP 래퍼 사용하기

5.1.1 에서 설명된 것처럼 FTP 데몬으로 접근을 제어하기 위해서 TCP 래퍼를 사용하십시오.


 

 

 

 

 

## 참고자료

http://web.mit.edu

http://www.terms.co.kr

http://kin.naver.com

'Server' 카테고리의 다른 글

아파치 인증창 띄우기  (0) 2017.01.07
CentOS/Apache SSL 설정  (0) 2017.01.06
윈도우 net user 커맨드  (0) 2017.01.06
윈도우 커맨드 net rkill at 등  (0) 2017.01.06
윈도우 CMD 명령어  (0) 2017.01.06

net user administrator *

C:\>net user administrator *
사용자에 대한 암호를 입력하십시오:
암호를 확인하기 위해 다시 입력하십시오:
명령을 잘 실행했습니다.

보너스 팁 - net user 명령을 이용한 랜덤하게 암호 설정하기!
C:\>net user administrator /random
administrator의 암호: JTE7B-tz

명령을 잘 실행했습니다.


C:\>net user administrator /random
administrator의 암호: n$XGj5@y

명령을 잘 실행했습니다.

잊어버리면.. ㄷㄷ....

이 명령에 대한 구문:
NET USER 
[사용자이름 [암호 | *] [옵션]] [/DOMAIN]
         사용자이름{암호 | *} /ADD [옵션] [/DOMAIN]
         사용자이름 [/DELETE] [/DOMAIN]

NET USER는 컴퓨터의 사용자 계정을 만들거나 수정합니다. 스위치 없이 사용될
경우, 컴퓨터에 있는 사용자 계정을 열거해 줍니다. 사용자 계정 정보는 사용자
계정 데이터베이스에 저장됩니다.

이 명령은 서버상에서만 실행됩니다.

사용자이름   추가, 삭제, 수정, 또는 보고자 하는 사용자 계정의 이름입니다.
             사용자 계정의 이름은 20자까지 쓸 수 있습니다. 
암호         사용자 계정에 대한 암호를 부여하거나 바꿔줍니다. 암호는 NET
             ACCOUNTS 명령의 /MINPWLEN 옵션으로 설정된 최저 길이 조건을
             만족시켜야 합니다.
             14자까지 쓸 수 있습니다.
*            암호를 칠 수 있는 프롬프트 상태로 만들어줍니다. 암호 프롬프트
             에서는 입력된 암호가 보이지 않습니다.
/DOMAIN      현재 도메인의 도메인 컨트롤러에 대한 작업을 수행합니다.
/ADD         사용자 계정 데이터베이스에 사용자 계정을 추가합니다.
/DELETE      사용자 계정 데이터베이스에서 사용자 계정을 삭제합니다.

옵션      옵션은 다음과 같습니다.

   옵션                       설명
   -----------------------------------------------------------------------
   /ACTIVE:{YES | NO}      해당 계정을 활성화시키거나 비활성화시킵니다. 해
                           당 계정이 활성화되어 있지 않을 경우 사용자는
                           서버에 연결할 수 없습니다.
                           기본설정은 YES입니다.
   /COMMENT:"문자열"       사용자의 계정에 관한 설명을 제공합니다.
                           (최고 48자까지 쓸 수 있습니다). 문자열은 인용
                           부호 안에 넣습니다.
   /COUNTRYCODE:nnn        사용자의 도움말과 오류 메시지를 위한 특정 언어
                           파일을 만들기 위해 운영 시스템의 국가 코드를
                           이용합니다. 0은 기본 설정 국가 코드를 나타냅니다.
   /EXPIRES:{날짜| NEVER}  날짜를 지정해주면 계정이 지정된 날짜에 만료됩니
                           다. NEVER는 시간 제한을 주지 않음을 의미합니다.
                           만료 날짜는 국가 코드에 따라 월/일/년 혹은 일/월/
                           년의 형태로 표시합니다. 월은 숫자로 하거나 문자로 표기해도
                           되고 3자로 약자표기 할 수도 있습니다. 년도는 2자
                           혹은 4자의 숫자로 표기합니다. 날짜를 표기할 때는
                           슬래시(/) (공백이 아니라)를 써서 년월일을 구분합니다.
   /FULLNAME:"이름"        사용자의 전체 이름입니다(사용자이름이라기보다).
                           이름은 인용부호 안에 넣어줍니다.
   /HOMEDIR:경로명         사용자의 홈 디렉터리에 대한 경로를 지정해줍니다.
                           경로는 반드시 있어야 합니다.
   /PASSWORDCHG:{YES| NO}  사용자가 자신의 암호를 변경할 수 있는지 
                           지정해 줍니다. 기본 설정은 YES입니다.
   /PASSWORDREQ:{YES | NO} 사용자 계정에 암호가 있어야 하는지를 지정합니다.
                           기본설정은 YES입니다.
   /PROFILEPATH[:경로]     사용자의 로그온 프로필 경로를 지정합니다.
   /SCRIPTPATH:경로명      사용자의 로그온 스크립트의 위치입니다.
   /TIMES:{시간 | ALL}     로그온 시간입니다. 요일[-요일][,요일[-요일]],
                           시간[-시간[,시간[-시간]]으로 표기되며 1시간씩
                           늘어나도록 제한됩니다. 요일은 영문으로 표기하되 
                           전부 풀어 쓰거나 줄여 쓸 수 있습니다. 시간은 12시간 
                           표기법이나 24시간 표기법 둘 다 가능합니다. 12시간 
                           표기법으로 쓸 때는 am, pm, a.m., 또는 p.m. 으로 
                           구분시켜줍니다. ALL은 사용자가 항상 로그온할 수 
                           있다는 의미이고 공란은 사용자가 절대로 로그온할
                           수 없음을 표시합니다. 요일과 시간은 쉼표(,)로
                           구분시켜주고, 요일과 시간을 여러 개 쓸 경우에는
                           세미콜론(;)으로 구분시킵니다.
   /USERCOMMENT:"문자열"   관리자가 계정에 대한 사용자 설명을 추가하거나
                           변경시킬 수 있게 해줍니다.
   /WORKSTATIONS:{컴퓨터이름[,...] | *}
                           사용자가 어느 컴퓨터에서 네트워크로 로그온 할
                           수 있는지 보여줍니다. 최고 8개 컴퓨터까지
                           보여줍니다. 목록이 없거나 *일 경우 사용자는
                           어느 컴퓨터에서도 로그온 할 수 있습니다.

NET HELP 명령| MORE 는 도움말을 한번에 한 화면씩 보여줍니다.

'Server' 카테고리의 다른 글

CentOS/Apache SSL 설정  (0) 2017.01.06
FTP 정리 Active/Passive 그리고 TFTP  (0) 2017.01.06
윈도우 커맨드 net rkill at 등  (0) 2017.01.06
윈도우 CMD 명령어  (0) 2017.01.06
HTTP Method  (0) 2017.01.06

+ Recent posts