FTP (ACTIVE mode & PASSIVE mode) Xinetd

Linux/Linux (CentOS) 2018. 7. 26. 18:43

--------------------------------------------- [ 실 습 ] -------------------------------------------------------


FTP 서비스 안될시 해결 방법


Host           : Server A ( 100.100.100.100 )

Username   : s1

password    : a

Port            : 21 ( x)


Error : Could not connect to server

---> 연결이 되도록 설정 사항 변경

( 상위 디렉터리 접근 허용 )



1. Host 접근제어


Windows <----------- 100.100.100.1

( 방화벽에서 접근 제어 할수도 있다)


# vi /etc/hosts.allow   <----- 확인

# vi /etc/hosts.deny   <----- 확인



2. 사용자 접근 제어


 # vi /etc/vsftpd/user_list   <-------- 이름이 적혀있으면 접근 불가




- userlist_deny= YES (default)

-> user_list에 있는 사용자는 접근불가

- userlist_deny=NO

-> user_list에 있는 사용자만 접근 가능




3. pam.d


# vi /etc/vsftpd/ftpuser  <-------- pam모듈 인증  <--------- 이곳에 적혀있으면 비밀번호                                                                                             증 불가




4. chroot


# vi /etc/vsftpd/chroot_list  <--------- 특정사용자만 허용



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




* 20 , 21 port 사용하는방식 ACTIVE 방식

* 21 , 사용자 범위 지정 port 사용하는 방식 PASSIVE 방식




FTP 


ACTIVE mode & PASSIVE mode


# vi /etc/vsftpd/vsftpd.conf <------- 이곳에서 설정



124 listen_ipv6=YES 아래에


         - 작성 -

pasv_enable=YES

pasv_max_port=50003 ( unknown port ) service port만 아니면 된다

pasv_min_port=50000

저장후



# systemctl restart vsftpd  <---------- 해주고 경고가나오면 오타가 있다.


 <---- 오타가 없다.


# cp /etc/services /home/s1/  





Xinetd ( 슈퍼 데몬 )


- 데몬을 관리하는 데몬 ( inetd -> xinted )


1. 설치

# yum -y install xinetd.x86_64



2. 설정 파일


1) /etc/xinetd.conf

- 글로벌 설정 파일

- 모든 서비스( 슈퍼 데몬이 관리하는 모든 서비스)에 해당 설정 적용


2) /etc/xinetd.d/*

- 각 서비스별 설정 파일



------------------------------------------ [ 실 습 ] ----------------------------------------------------------


vsftpd -> xinetd


1 . 설치

vsftpd.x86_64


2. 설정 변경

/etc/vsftpd/vsftpd.conf


123 listen_ipv6=YES <------ standalone

123 listen_ipv6=NO <------- 슈퍼데몬에 의해 동장




3. vsftpd 서비스 설정 파일 

# vi /etc/xinetd.d/vsftpd


---------- 작성 내용 -----------


service ftp

{

# 서비스 활성화 여부

disable    = no    <--------- yes면 동작 x


# socket type

socket_type    =    stream


#protocol

protocol    =    tcp


# single/multi thread

wait    =    no


# 프로세스 사용자 권한

user    =    root


# 실행 프로그램 경로 (# which < command > )

server    =    /usr/sbin/vsftpd


# 실행 프로그램 인자

server_args    =    /etc/vsftpd/vsftpd.conf

}



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


4. 서비스 시작

# systemctl restart xinetd


- 확인

# systemctl status xinetd

linux.korea.com xinetd[1517]: Started working: 1 available service ( 1 = 정상 )





5. 방화벽 설정


# firewall-cmd --zone=public --add-service=ftp --permanent

# firewall-cmd --reload


ex) ServerB 100.100.100.110 호스트에 root 로그인이 가능하도록 설정 변경


# vi /etc/vsftpd/ftpuser  


----> 



# vi /etc/vsftpd/user_list


 ----> 

- 두곳에서 root 라고 적혀있는것을 지워준다




6. 접근 제어


1) 호스트 접근제어 ( ip로 접근제어 )


only_from    =    < host >

-> 접근 허용할 호스트 목록


no_access    =    < host >

-> 접근 거부할 호스트 목록




ex) 100.100.100.0 네트워크 대역대는 xinetd 데몬이 관리하는 모든 서비스에 대해서 거부


# vi /etc/xinetd.conf  <--------- 글로벌 설정 파일


------ 작성 --------


defaults

{

:

:

no_access    = 100.100.100.0

}



 --> 





ex) 100.100.100.0 네트워크 대역대는 vsftpd 서비스에 대해서 거부


# vi /etc/xinetd.d/vsftpd  <------- 특정 서비스 설정


---------- 작성 -----------

service ftp

{

:

:

no_access    = 100.100.100.0

}


or


# vi /etc/hosts.deny


--------- 작성 ---------

vsftpd    :    100.100.100.





# vi /etc/xinetd.conf


ex) 100.100.100.1 , 100.100.100.110 xinetd 데몬이 관리하는 모든 서비스 허용


defaults

{

:

only_from    = 100.100.100.1

only_from    += 100.100.100.110

}




# Define access restriction defaults

#

#       no_access       =

        only_from       = 100.100.100.0

#       max_load        = 0

        cps             = 50 10

        instances       = 50

        per_source      = 10




# systemctl restart xinetd





2) 시간 접근제어 


- 서비스 접근이 가능한 시간


access_times    = < time >


ex) vsftpd 서비스 접근을 18:00-20:00에만 허용


# vi /etc/xinetd.d/vsftpd


access_times    =    18:00-20:00 <---------- 추가




# systemctl restart xinetd



SYSLOG

 

- 리눅스에서 로그를 관리하는 데몬

->  /var/log/messages  <---- 이곳에 저장

Jul 26 18:35:57 linux xinetd[1649]: FAIL: ftp time from=::ffff:100.100.100.1

-xinetd 데몬이 로그를 기록






원격 제어


ex) Windows에서 ServerB root 사용자로 ftp 접속


---- 원격제어 service ----


- Telnet 

: 평문으로 데이터를 주고받기때문에 사용을 안한다

- SSH

: 데이터가 평문으로 전송되지 않는다

- VNC

:



Telnet


1. 설치


# yum -y install telnet-server.x86_64


2. 설정


# vi /etc/xinetd.d/telnet


--------------- 작성 ---------------

service telnet

{

disable              = no

flags                 = REUSE

socket_type     = stream

wait                  = no

user                  = root

server               = /usr/sbin/in.telnetd

}




3. 서비스 시작


# systemctl restart xinetd   <--------- 설정파일 수정했으므로 restart

# systenctl status xinetd  <----------- 실행중인 슈퍼데몬으로 실행중인 데몬 2개




4. 방화벽 설정


# firewall-cmd --zone=public --add-service=telnet --permanent

# firewall-cmd --reload




5. securetty


# vi /etc/securetty   <------------- telnet 으로 root 접속을 하고싶으면 이곳에


pts/0   <---------------- 추가

pts/1    <--------------- 추가

pts/2   <--------------- 추가





SSH ( Secure Shell )


- telnet 과 마찬가지로 원격지에 있는 시스템을 제어하기 위해 사용되는 프로토콜 ( port 22 )


1. 설치


# yum -y install openssh-server.x86_64   <------------ 자동으로 설치돼어있음


2. 설정 


# vi /etc/ssh/sshd_config   <------------- server 용


-rw-r--r--. 1 root root           581843  4월 11 13:21 moduli

-rw-r--r--. 1 root root           2276  4월 11 13:21 ssh_config                  <------ client

-rw-r-----. 1 root ssh_keys    227  7월 12 17:42 ssh_host_ecdsa_key

-rw-r--r--. 1 root root            162  7월 12 17:42 ssh_host_ecdsa_key.pub

-rw-r-----. 1 root ssh_keys    387  7월 12 17:42 ssh_host_ed25519_key

-rw-r--r--. 1 root root            82  7월 12 17:42 ssh_host_ed25519_key.pub

-rw-r-----. 1 root ssh_keys    1679  7월 12 17:42 ssh_host_rsa_key

-rw-r--r--. 1 root root           382  7월 12 17:42 ssh_host_rsa_key.pub

-rw-------. 1 root root            3907  4월 11 13:21 sshd_config                 <------ server



 17 #Port 22 <--------- 주석풀고 포트번호 변경가능

 18 #AddressFamily any

 19 #ListenAddress 0.0.0.0   <-------- 다허용        특정ip만허용 주석풀고 설정

 20 #ListenAddress ::



3. 서비스 시작


# systemctl restart sshd     <-------- 수정했다면 꼭 재시작



4. 방화벽 설정


# firewall-cmd --zone=public --add-service=ssh --permanent   

# firewall-cmd --reload



5. Client ( Server A )


1) 설치


# yum -y install openssh-clients.x86_64   <--------- 클라이언트용 ssh 패키지 


2) 실행


- ssh ( Secure Shell ) : 접속


ex) ssh < user_name >@< server_ip >


[root@korea ~]# ssh root@100.100.100.110


The authenticity of host '100.100.100.110 (100.100.100.110)' can't be established.

ECDSA key fingerprint is SHA256:m/kb53z7lxnH83nhm/b5qxKd36XvQ2Nmwk4Oyyzxoa4.

ECDSA key fingerprint is MD5:6d:5f:22:55:a5:ee:9e:b8:51:eb:1f:a8:be:f6:b7:92.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '100.100.100.110' (ECDSA) to the list of known hosts.

root@100.100.100.110's password:

Last login: Fri Jul 27 17:12:23 2018 from 100.100.100.1

[root@linux ~]# 





- scp ( Secure Copy ) : 원격 데이터 복사


ex)  scp < src_file > < dst_file >


ex) ServerA에 /root/serverA.txt 파일을 ServerB에 root 사용자 홈디렉터리로 복        사

# scp /root/serverA.txt root@100.100.100.110:/root/serverA.txt  <-- 업로드




Server B 에서 확인 결과



ex) ServerB에 /root/serverB.txt 파일을 ServerA에 root 사용자 홈디렉토리로 복         


# scp root@100.100.100.110:/root/serverB.txt /root/serverB.txt <-- 다운로드




  



ex) estrellita.org 서버에 사용자 홈디렉터리에 zombie 실행파일

ServerA에 root 사용자 홈디렉터리로 복사


ex) scp < user_name >@estrellita.org:/home/< user_name >/zombie /root/zombie


# scp it5@estrellita.org:/home/it5/zombie /root/zombie




-sftp ( Secure FTP )


ex) sftp < user_name >@< server_ip >


# sftp root@100.100.100.110




6. Key ( Private Key , Public Key )


1) Key 생성


# ssh-keygen



Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):      < 키 저장위치 >

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase):                      < password >

Enter same passphrase again:                                             

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:Qu3QApizJ92OS1JZdv9VLw7+lLeOgtP26HedTWnMsYo root@linux.korea.com

The key's randomart image is:

+---[RSA 2048]----+

|   o.                       |

|  +  .oo.                 .|

|   + =+.o.               ..|

|  o =..+  .           . o..|

|   + o. S        o +oo+|

|  . o ..             o +*o|

|   o .            o .ooo=|

|    .            o E.oo+o|

|                   +o+oo. |

+----[SHA256]-----+






2) key 확인


# ls -l /root/.ssh


-rw-------  1 root root 1675  7월 27 18:19 id_rsa   <--- Private Key 

-rw-r--r--  1 root root  402  7월 27 18:19 id_rsa.pub <--- Public Key




3) Private Key 를 Client ( Server A ) 로 전송


Server A # cd /root/.ssh

Server A # scp root@100.100.100.110:/root/.ssh/id_rsa /root/.ssh/






4) Server ( ServerB ) 에서 Public key 등록


.ssh/authorized_keys


# touch authorized_keys

# chmod 600 authorized_keys

# cat id_rsa.pub >> authorized_keys
























































'Linux > Linux (CentOS)' 카테고리의 다른 글

DNS ( Domain Name Service )  (0) 2018.07.30
GNOME Desktop  (0) 2018.07.27
FTP & 접근제어  (0) 2018.07.20
확장된 파일 시스템  (0) 2018.07.17
디스크 관리  (0) 2018.07.16

설정

트랙백

댓글