웹사이트 검색

RHCSA 시리즈: 웹 및 FTP 서버 설치, 구성 및 보안 - 9부


웹 서버(HTTP 서버라고도 함)는 네트워크의 클라이언트에 대한 콘텐츠(가장 일반적으로 웹 페이지이지만 다른 유형의 문서도 포함)를 처리하는 서비스입니다.

FTP 서버는 FTP가 사용자 이름을 사용하므로 인증이 필요하지 않은 경우 네트워크의 클라이언트가 파일을 사용할 수 있도록 하기 위해(현재까지도) 가장 오래되고 가장 일반적으로 사용되는 리소스 중 하나입니다. 비밀번호는 암호화되지 않습니다.

RHEL 7에서 사용 가능한 웹 서버는 Apache HTTP Server 버전 2.4입니다. FTP 서버의 경우 Very Secure Ftp Daemon(일명 vsftpd)을 사용하여 TLS로 보안된 연결을 설정합니다.

이 문서에서는 RHEL 7에서 웹 서버와 FTP 서버를 설치, 구성 및 보호하는 방법을 설명합니다.

Apache 및 FTP 서버 설치

이 가이드에서는 고정 IP 주소가 192.168.0.18/24인 RHEL 7 서버를 사용합니다. Apache 및 VSFTPD를 설치하려면 다음 명령을 실행하십시오.


yum update && yum install httpd vsftpd

설치가 완료되면 처음에는 두 서비스가 모두 비활성화되므로 당분간 수동으로 시작하고 다음 부팅부터 자동으로 시작되도록 활성화해야 합니다.


systemctl start httpd
systemctl enable httpd
systemctl start vsftpd
systemctl enable vsftpd

또한 외부에서 해당 서비스에 대한 액세스를 허용하려면 웹 및 FTP 데몬이 각각 수신 대기하는 포트 8021을 열어야 합니다.


firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

웹 서버가 제대로 작동하는지 확인하려면 브라우저를 실행하고 서버의 IP를 입력하세요. 테스트 페이지가 표시됩니다.

FTP 서버에 관해서는 추가 구성을 해야 하며, 예상대로 작동하는지 확인하기 전에 잠시 후에 완료하겠습니다.

Apache 웹 서버 구성 및 보안

Apache의 기본 구성 파일은 /etc/httpd/conf/httpd.conf에 있지만 /etc/httpd 내부에 있는 다른 파일에 의존할 수도 있습니다. /conf.d.

대부분의 경우 기본 구성으로 충분하지만 공식 문서에 설명된 대로 사용 가능한 모든 옵션을 숙지하는 것이 좋습니다.

언제나 그렇듯이 기본 구성 파일을 편집하기 전에 백업 복사본을 만드십시오.


cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.$(date +%Y%m%d)

그런 다음 원하는 텍스트 편집기로 열고 다음 변수를 찾으세요.

  1. ServerRoot: 서버의 구성, 오류 및 로그 파일이 보관되는 디렉터리입니다.
  2. 수신: Apache가 특정 IP 주소 및/또는 포트를 수신하도록 지시합니다.
  3. 포함: 존재해야 하는 다른 구성 파일을 포함할 수 있습니다. 그렇지 않으면 지정된 구성 파일이 없으면 자동으로 무시되는 includeOptional 지시문과 달리 서버가 실패합니다.
  4. 사용자 및 그룹: httpd 서비스를 실행할 사용자/그룹의 이름입니다.
  5. DocumentRoot: Apache가 문서를 제공할 디렉터리입니다. 기본적으로 모든 요청은 이 디렉터리에서 가져오지만 기호 링크와 별칭을 사용하여 다른 위치를 가리킬 수도 있습니다.
  6. ServerName: 이 지시문은 서버가 자신을 식별하는 데 사용하는 호스트 이름(또는 IP 주소) 및 포트를 설정합니다.

첫 번째 보안 조치는 웹 서버를 실행할 전용 사용자 및 그룹(예: tecmint/tecmint)을 생성하고 기본 포트를 더 높은 포트(< 이 경우에는 Strong>9000):


ServerRoot "/etc/httpd"
Listen 192.168.0.18:9000
User tecmint
Group tecmint
DocumentRoot "/var/www/html"
ServerName 192.168.0.18:9000

구성 파일을 테스트할 수 있습니다.


apachectl configtest

모든 것이 정상이면 웹 서버를 다시 시작하세요.


systemctl restart httpd

방화벽에서 새 포트를 활성화하고 기존 포트를 비활성화하는 것을 잊지 마세요.


firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload

SELinux 정책으로 인해 반환된 포트만 사용할 수 있습니다.


semanage port -l | grep -w '^http_port_t'

웹 서버용.

다른 포트(예: TCP 포트 8100)를 사용하려면 해당 포트를 httpd 서비스의 SELinux 포트 컨텍스트에 추가해야 합니다.


semanage port -a -t http_port_t -p tcp 8100

Apache 설치를 더욱 안전하게 보호하려면 다음 단계를 따르세요.

1. Apache가 실행 중인 사용자는 셸에 액세스할 수 없어야 합니다.


usermod -s /sbin/nologin tecmint

2. 해당 디렉토리에 index.html이 없는 경우 브라우저가 해당 디렉토리의 내용을 표시하지 않도록 하려면 디렉토리 목록을 비활성화합니다.

/etc/httpd/conf/httpd.conf(및 가상 호스트에 대한 구성 파일(있는 경우))을 편집하고 상단과 상단 모두에 Options 지시어가 있는지 확인하세요. 디렉터리 블록 수준에서는 없음으로 설정됩니다.


Options None

3. HTTP 응답에서 웹 서버 및 운영 체제에 대한 정보를 숨깁니다. /etc/httpd/conf/httpd.conf를 다음과 같이 편집합니다.


ServerTokens Prod 
ServerSignature Off

이제 /var/www/html 디렉토리에서 콘텐츠 제공을 시작할 준비가 되었습니다.

FTP 서버 구성 및 보안

Apache의 경우와 마찬가지로 Vsftpd (/etc/vsftpd/vsftpd.conf)의 기본 구성 파일에 주석이 잘 설명되어 있으며 대부분의 응용 프로그램에서는 기본 구성으로 충분합니다. , FTP 서버를 보다 효율적으로 작동하려면 문서와 매뉴얼 페이지 (man vsftpd.conf)에 익숙해져야 합니다(그것은 아무리 강조해도 지나치지 않습니다!).

우리의 경우에는 다음과 같은 지시문이 사용됩니다.


anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

chroot_local_user=YES를 사용하면 로컬 사용자는 (기본적으로) 로그인 직후 홈 디렉터리에 있는 chroot 감옥에 배치됩니다. 이는 로컬 사용자가 해당 홈 디렉터리 외부의 파일에 액세스할 수 없음을 의미합니다.

마지막으로, ftp가 사용자의 홈 디렉터리에 있는 파일을 읽을 수 있도록 허용하려면 다음 SELinux 부울을 설정하세요.


setsebool -P ftp_home_dir on

이제 Filezilla와 같은 클라이언트를 사용하여 FTP 서버에 연결할 수 있습니다.

/var/log/xferlog 로그는 위의 디렉토리 목록과 일치하는 다운로드 및 업로드를 기록합니다.

추가 읽기: Trickle을 사용하여 Linux 시스템의 응용 프로그램에서 사용하는 FTP 네트워크 대역폭 제한

요약

이 튜토리얼에서는 웹 및 FTP 서버를 설정하는 방법을 설명했습니다. 주제가 방대하기 때문에 이러한 주제(예: 가상 웹 호스트)의 모든 측면을 다루는 것은 불가능합니다. 따라서 이 웹사이트에서 Apache에 관한 다른 훌륭한 기사도 확인해 보시기 바랍니다.