파티션 시스템 변경시도
스왑파티션 : 여유 파티션 하드와 메모리 사이의,overflow방지
----------------------------------------------------------------------------------------------------------
FTP통신에 대해 알아보겠다.
√FTP통신방식의 정식명칭은 file transport protocol이다.
FTP통신은 요즘에는 많이 사용하지 않는 방식이다. 사용이 어렵기 때문에 유저의 접근성이 떨어지게되기 때문이다. 하지만 개발 엔지니어가 사용하는 경우는 많다. 개발사 쪽에서는 배포시 ftp서버를 사용해서 올리기만 하고 서버와 연결이 가능한 계정을 알려주면 되기 때문이다.
FTP통신은 대용량 파일 송수신 안정성 속도 높다. 왜냐하면 파일 송수신 연결(서비스망)과 제어연결(관리망)에 사용하는 포트를 각각 하나씩 사용한다. 이것을 'out of band'라고 한다. <참조> 그러므로 포트를 기본적으로 2배씩 사용하기때문에 리소스사용도 2배가 된다.
서버에서 데이터 요청하는 상태는 active모드와, passive모드 두가지가 있다. active모드는 서버가 클라이언트에게 '데이터 받아'라고 먼저 요청한다. passive모드는 클라이언트가 서버에게 '데이터 줘요'라고 먼저 요청하는 것이다. control connection에 사용하는 포트는 21번이다. data connection에서 Active mode로 사용하는 포트는 20번이다. 하지만 Passive mode로 사용하는경우에는 1024번 이후의 임의의 포트를 이용한다. 따라서 Passive mode를 사용하는경우에는 방화벽은 범위 필수다. 그렇지 않다면 1024포트 뒤에 있는 포트는 전부 사용이 가능해서 어떤 포트로 연결해야 하는지 전부 찾아야 하기 때문이다. 여기서 당연한 얘기지만 접속요청의 시작은 항상 클라이언트가 한다.
설정 파일인 /etc/vsftpd/vsftpd.conf에서는Passive mode가 기본으로 설정되어있다.
참고해야 할 부분은 FTP client는 Passive mode와 Active mode 모두 사용이 가능하지만, web client는 Passive mode만 사용이 가능하다.
√ FTP 접속및 전송 과정을 살펴보겠다.
1. FTP client는 21번 port를 통해서 서버와 control connection을 설정한다.
2. 이 제어연결을 통해 사용자 계정과 비밀번호를 전송한다.
3. Client는 제어연결을 통해 원격지의 디렉토리 변경과 같은 명령을 전송한다.
4. 서버측은 제어연결을 통해 파일 전송을 위한 명령을 받으면 TCP data connection을 초기화 한다.
5. 하나의 파일 전송이 끝나면 data연결은 close된다. 이러한 방식을 nonpersistent방식이라고 하는데 전송 한번에 연결 을 한번씩 하고 끊는 방식이다. 즉, 지속적으로 연결이 안되는 것이다. 반면 webbrowser의 경우에는 nonpersistent와 persistent 둘다 가능하다.
6. 다음 파일 전송을 위해서는 새로운 TCP connection을 생성한다.
√ linux에서는 ftp클라이언트와 ftp서버는 daemon으로 있기 때문에 yum으로 설치한다.
system compile은 yum을 하게 되면 프로그램에 원하는 기능이 없을때 사용한다.
관련 파일중에 PAM모듈이란 것이 있는데 이것은 개발자가 사용하는 모듈(module:프로그래밍을좀더 편하게, 매크로 같은것)이다. 예를 들어 프로그래밍에서 보안관련된것은 계정 접근성(권한)과 리소스 차지비율이 있는데 여러 프로그래밍에 같은 권한을 주는 작업등을 할때 모듈을 사용한다.
√ 접근 제한 파일은 /etc/vsftpd/ftpusers와 /etc/vsftpd/user_list가 있다.
ftpusers와 user_list 둘다 접근 권한을 부여할때 사용하는 파일이다. 한 파일에서 접근권한을 설정하나 두 파일 모두에서 접근권한을 사용하나 결과는 같다. 그렇다면 같은 역할을 하는 파일이 두가지 인데 사용하는 이유는 기존 혹은 회사 정책이 어느 것을 사용하는지 모르기 때문에 둘다 존재 하는것이다. 이 파일들 중 하나로만 설정해서 사용해야 한다. 왜냐하면 접근 권한의 허용과 거부하는 파일을 따로 쓰다보면 시스템의 효율성에서 크게 떨어지기 때문이다. 또한 잘못 설정하다가는 접근 권한이 꼬일 수 있다.
√ 제한 설정
max_clients=30 // 접속자를 제한하여 리소스 조절하기 위해 사용한다.
max_per_ip=3 // IP당 접속수를 제한하는 것으로 NAT방식을 사용하는 공유기에 치명적이다. 0은 무제한이다.
ls_recurse_enable=YES // ls –R 명령은 부하가 크다. 리눅스외의 FTP클라이언트에서는 사용할 수 없어 의미가 없지만
리눅스에서 사용가능하기 때문에 설정이 필요하다.
√c hroot 설정
chroot_local_user=YES // default는 No이다.
chroot_list_enable=YES
chroot_list_enable | chroot_local_user | 의미 |
YES | YES | chroot_list_file에 지정된 사용자만 chroot를 적용하지 않는다. |
No | chroot_list_file에 지정된 사용자만 chroot를 적용한다. |
|
No | 무관 |
chroot_list_enable이 No가 되면 chroot_local_user는 의미가 없으며chroot_list_file을 사용하지 않는다. |
chroot_list_file=/etc/vsftpd/chroot_list // Default 값이 /etc/vsftpd/chroot_list이다.
allow_writeable_chroot=YES // chroot 적용 사용자의 경우 이 설정이 반드시 필요하다. No로 설정하게 되면 read only 상태가 된다.
※ chroot 설정은 외부 디렉토리로 연결된 link 디렉토리에 접근도 금지된다. 이때는 mount 명령을 이용한다.
mount --bind 원본디렉토리 연결할디렉토리 // 이렇게 하면 외부 디렉토리로도 이동이 가능하다 왜냐하면 mount는 link
보다 강력해서 chroot설정을 빠져나갈 수 있기 때문이다.
√ standalone 인 경우만 사용되는 항목
listen=YES
tcp_wrappers=YES // IP로 사용자의 접근 권한을 제어하는 것이다. /etc/hosts.deny, /etc/hosts.allow 파일에 의해 결정
된다. 'network주소. '로 표현해서 네트워크 전체를 가르킬수도 있고 개별 주소를 적을수도 있다.
local_max_rate=1024 // watch dog으로 퍼포먼스 제한할때 사용한다. 단위는 byte/sec이다.
anon_max_rate=1024 //watch dog으로 퍼포먼스 제한할때 사용한다. 단위는 byte/sec이다.
√ 등록된 사용자(/etc/passwd)마다 설정을 할 수 있다.
local_enable=YES // No로 하게되면 계정접속이 되지 않고 anonymous로 접속하게 된다.
write_enable=YES // No로 하게되면 read only가 된다.
local_umask=022 // 등록된 사용자의 권한이 644가 되게 한다. 즉 -rwxr--r-- 상태로 권한을 준다.
√ 사용자 제한 설정(user_list)
userlist_file(/etc/vsftpd/user_list)에 등록된 계정에 대한 접속 제어는 userlist_enable과 userlist_deny에 따라 결정된다. userlist_enable의 defaul는 No지만 YUM으로 설치된 경우 Yes로 설정되어 있다.
userlist_ enable | userlist _deny | 의미 |
Yes | Yes | user_list 파일에 등록된 사용자는 접속이 불허된다. |
No | user_list 파일에 등록된 사용자만 접속이 가능하다. | |
No | 무관 | userlist_enable이 No로 설정되면 userlist_deny 설정은 의미가 없으며 userlist_file은 사용되지 않는다. |
√ 사용자 제한 설정(ftpusers)
PAM(Pluggable Authentication Module)에 의한 접속 제어는 앞서 본 userlist를 이용한 방법과 유사하다. 이 기능은 /etc/pam.d/vsftpd 파일에 접속 제한 방식을 설정하고 접속이 제한된 계정의 목록은 ftpusers 파일을 이용한다.
이용하는 파일 : pam_service_name = vsftpd
- vsftpd 서버의 PAM 제어를 위한 서비스명을 등록한다. 등록된 이름으로 /etc/pam.d/에 설정 파일이 만들어진다. /etc/pam.d/vsftpd 파일 설정에 따라 제한 설정이 달라진다. /etc/vaftpd/ftpusers가 목록 파일로 정의되어 있다. 만일 sense 설정을 deny가 아니라 allow로 변경하면 ftpuser 파일에 등록된 사용자만 FTP 서버 접속이 허용된다.
'/etc/pam.d/vsftpd : sense 옵션' 설정에 따라 /etc/vsftpd/ftpusers 설정이 바뀐다.
Deny : ftpusers에 등록된 계정은 ftp 접속을 불허한다. / Allow : ftpusers에 등록된 계정만 ftp 접속을 허용한다.
----------------------------------------------------------------------------------------------------------------
HTML실습
1.
<html>
<head>
<title>0-1.html</title>//브라우저제목
<meta http-equiv="content-type" content="text/html; charset=euc-kr"> //파일속성정의 //euc-kr : 윈도우호환글자 코드
</head> //주석 설명
<body>//내용
<hr>//수평선
<?//프로그램이 시작
$a = 1;//interprinter방식 : 실행 결과 나옴 // 오른쪽은 값으로 해석
$b = 2;//compile 실행 프로그램나옴 // 왼쪽은 변수(메모리)로 해석 과거 변수는 없었고 메모리 주소값으로 작성
$c = $a + $b; //c언어 사용은 가능하나 퍼포먼스가 떨어져서 db에서는 사용안함//자바 객체지향 프로그램//성능 : 느림 (아마 랭귀지중) 생산성이 높다 : 코드 재사용성=>rdb도 같은 맥락
echo("두 수의 합은 {$c}입니다.");//화면에 출력할때 변수는 {}로 묶는다
?>//프로그램 끝
<hr>
</body>
</html>
2.
<html>
<head>
<title>0-2.php</title>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<body>
<?
$a = 1;
$b = 2;
$c = $a + $b;
?>
<table border="1"> //표설정
<tr>
<td align="center" width="140" height="10" colspan="2">
<? echo("₩$a=$a, ₩$b=$b"); ?>
</td>
</tr>
<tr>
<td width="120" height="10">두 수의 합은 </td>
<td width="20" height="10"><? echo("{$c}"); ?></td>
</tr>
</table>
</body>
</html>
3.
<html>
<head>
<title>0-3.html 폼파일</title>// 폼 입력값을 받는것
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
</head>
<form method="post" action="0-3.php">//method/action필수=>0-3.php가 실행
입력 값 : <input type="text" name="in"><br>//in 입력공간
<input type="submit" name="확인" value="확인">
<input type="reset" name="취소" value="취소"><br>
</form>
</html>
<?
$in = $_POST["in"]; //미리 defined된 것//in에는 입력된값
echo(" 입력된 값은 {$in} 입니다. ");//$in대신 $_POST["in"]로도 가능
?>
실습
- 집에서 Chrome 및 Explore로 연결하면 php연결은 되는데 php가 실행되는것이 아니라 코드자체를 불러옴 왜그럴까?
'교육 > Server' 카테고리의 다른 글
Day 17 (apache) (0) | 2019.12.10 |
---|---|
Day 16 (DNS) (0) | 2019.12.09 |
Day 14 (DNS) (0) | 2019.12.05 |
Day 13 (DNS) (0) | 2019.12.04 |
Day 12 (DNS) (0) | 2019.12.04 |