글
FTP (ACTIVE mode & PASSIVE mode) Xinetd
--------------------------------------------- [ 실 습 ] -------------------------------------------------------
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 |