가능한 한 Ubuntu Server를 보호하는 프로젝트가 있습니다. 서버는 웹 호스팅 서버입니다. 서버는 LAMP, Mail 및 DNS를 실행합니다.
답변
다음은 서버를 보호하기 위해 수행하는 작업 목록입니다.
- UFW (
sudo ufw enable
)를 켜고 실제로 사용되는 포트만 허용하십시오. (sudo ufw allow 80
) - MySQL이 로컬 호스트에서의 연결 만 허용하는지 확인하십시오.
- 메일 서비스에서 TLS를 활성화하십시오. 자체 서명 인증서 인 경우에도 마찬가지입니다. 비밀번호를 비밀번호로 보내지 않으려 고합니다.
- denyhosts 또는 fail2ban과 같은 ssh bruteforce 차단기를 설치하십시오. (
sudo apt-get install denyhosts
) - ssh 키 기반 로그인 만 작성하십시오.
- AppArmor를 배우십시오. 상당히 바닐라 구성을 사용하면 매우 쉽습니다. 전원이 켜져 있는지 확인하십시오. 제로 데이 악용을 줄이는 데 도움이됩니다.
- 서버에 대한 물리적 액세스에 따라 하드 디스크의 데이터 암호화를보고 싶을 수도 있습니다.
- 이 링크의 다른 권장 사항을 따르십시오. 편집 : 링크를 추가 할만 큼 평판이 충분하지 않은 경우 이것을 편집하는 것을 잊었습니다. 여기서 의미하는 링크는 아래의 마지막 링크입니다.
- 사용자를 신뢰하지 마십시오. 시스템에 액세스 할 수있는 여러 사용자가있는 경우이를 잠그십시오. sudo 액세스 권한을 부여해야하는 경우 필요한 항목 만 제공하십시오.
- 상식을 사용하십시오. 당신이 잠겨 있다면 어떻게 들어올 지에 대해 열심히 생각하십시오. 그런 다음 그 구멍을 닫으십시오.
고려해야 할 몇 가지 사항이 더 있습니다. 대부분의 사람들은 신체적 접근을 잊습니다. 전 세계의 모든 소프트웨어 구성이 실제로 LiveCD를 사용하여 데이터를 훔칠 수 있다면 아무 의미가 없습니다. 사회 공학을 조심하십시오. 전화중인 사람을 확인하고 요청을 할 수있는 권한이 있는지 질문하십시오.
여전히 ‘새로운’사용자이므로 2 개 이상의 링크를 게시 할 수 없습니다. 이 주제에 대한 자세한 내용은 https://help.ubuntu.com/12.04/serverguide/index.html을 참조 하고 https://help.ubuntu.com/12.04/serverguide/security.html에 특히주의 하십시오.
답변
안전한 공유 메모리
/ dev / shm은 httpd와 같은 실행중인 서비스에 대한 공격에 사용될 수 있습니다. 보다 안전하게하려면 / etc / fstab을 수정하십시오.
터미널 창을 열고 다음을 입력하십시오.
sudo vi /etc/fstab
다음 줄을 추가하고 저장하십시오. 이 설정을 적용하려면 재부팅해야합니다.
tmpfs /dev/shm tmpfs defaults,noexec,nosuid 0 0
sysctl 설정으로 네트워크 강화
/etc/sysctl.conf 파일에는 모든 sysctl 설정이 포함되어 있습니다. 들어오는 패킷의 소스 라우팅을 방지하고 잘못된 IP를 기록하면 터미널 창에 다음을 입력하십시오.
sudo vi /etc/sysctl.conf
/etc/sysctl.conf 파일을 편집하고 주석을 제거하거나 다음 줄을 추가하십시오.
# IP Spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignore ICMP broadcast requests
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disable source packet routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
# Block SYN attacks
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# Log Martians
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
# Ignore Directed pings
net.ipv4.icmp_echo_ignore_all = 1
최신 변경 사항으로 sysctl을 다시로드하려면 다음을 입력하십시오.
sudo sysctl -p
IP 스푸핑 방지
터미널을 열고 다음을 입력하십시오.
sudo vi /etc/host.conf
다음 줄을 추가하거나 편집하십시오.
order bind,hosts
nospoof on
보안을 위해 PHP 강화
php.ini 파일을 편집하십시오 :
sudo vi /etc/php5/apache2/php.ini
다음 줄을 추가하거나 편집하십시오.
disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
magic_quotes_gpc = On
웹 애플리케이션 방화벽-ModSecurity
DDOS (서비스 거부) 공격으로부터 보호-ModEvasive
로그 검사 및 의심스러운 호스트 금지-DenyHosts 및 Fail2Ban
@DenyHosts
DenyHosts는 /etc/hosts.deny에 항목을 추가하여 SSH 공격을 자동으로 차단하는 Python 프로그램입니다. DenyHosts는 또한 Linux 관리자에게 문제가있는 호스트, 공격받은 사용자 및 의심스러운 로그인에 대해 알려줍니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install denyhosts
설치 후 구성 파일 /etc/denyhosts.conf를 편집하고 이메일 및 필요에 따라 기타 설정을 변경하십시오.
관리자 이메일 설정을 편집하려면 터미널 창을 열고 다음을 입력하십시오.
sudo vi /etc/denyhosts.conf
서버에서 필요에 따라 다음 값을 변경하십시오.
ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES
@ Fail2Ban
Fail2ban은 SSH, Apache, Courier, FTP 등을 포함한 다른 서비스로 로그 모니터링을 확장하므로 DenyHosts보다 고급입니다.
Fail2ban은 로그 파일을 검사하고 악의적 인 징후 (너무 많은 암호 오류, 악용 시도 등)를 나타내는 IP를 차단합니다.
그런 다음 Fail2Ban은 방화벽 규칙을 업데이트하여 지정된 시간 동안 IP 주소를 거부했지만 임의의 다른 작업도 구성 할 수있었습니다. 기본적으로 Fail2Ban에는 다양한 서비스 (아파치, 택배, ftp, ssh 등)에 대한 필터가 제공됩니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install fail2ban
설치 후 구성 파일 /etc/fail2ban/jail.local을 편집하고 필요에 따라 필터 규칙을 작성하십시오.
설정을 편집하려면 터미널 창을 열고 다음을 입력하십시오.
sudo vi /etc/fail2ban/jail.conf
모든 사용자가 변경하여 모니터에 fail2ban하고 싶은 서비스를 활성화 활성화 = 거짓 *이 = 사실 활성화 *
예를 들어 SSH 모니터링 및 금지 감옥을 활성화하려면 아래 행을 찾아 enabled를 false에서 true로 변경하십시오 . 그게 다야.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
호스트가 금지 된 경우 Fail2Ban으로부터 이메일 을 수신 하려면 다음 행을 이메일 주소로 변경하십시오.
destemail = root@localhost
다음 행을 다음에서 변경하십시오.
action = %(action_)s
에:
action = %(action_mwl)s
또한 fail2ban이 기본적으로 제공되지 않은 것을 모니터하기 위해 원하는 다양한 서비스에 대한 규칙 필터 를 작성할 수도 있습니다 .
sudo vi /etc/fail2ban/jail.local
다양한 필터를 만드는 방법과 구성에 fail2ban에 좋은 지침에서 찾을 수 있습니다 HowtoForge – 예를 보려면 여기를 클릭
Fail2Ban 구성을 완료하면 다음을 사용하여 서비스를 다시 시작하십시오.
sudo /etc/init.d/fail2ban restart
상태를 확인할 수도 있습니다.
sudo fail2ban-client status
루트킷 확인-RKHunter 및 CHKRootKit.
두 RKHunter 및 CHKRootkit은 기본적으로 같은 일을 – 루트킷은 시스템을 확인합니다. 둘 다 사용하면 아무런 해가 없습니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install rkhunter chkrootkit
chkrootkit을 실행하려면 터미널 창을 열고 다음을 입력하십시오.
sudo chkrootkit
RKHunter를 업데이트하고 실행합니다. 터미널을 열고 다음을 입력하십시오
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
열린 포트 스캔-Nmap
Nmap ( “Network Mapper”)은 네트워크 검색 및 보안 감사를위한 무료 오픈 소스 유틸리티입니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install nmap
다음을 사용하여 시스템에서 열린 포트를 스캔하십시오.
nmap -v -sT localhost
다음과 같은 SYN 스캔 :
sudo nmap -v -sS localhost
시스템 LOG 파일 분석-LogWatch
Logwatch는 사용자 정의 가능한 로그 분석 시스템입니다. Logwatch는 시스템의 로그를 구문 분석하고 지정한 영역을 분석하는 보고서를 만듭니다. Logwatch는 사용하기 쉽고 대부분의 시스템에서 패키지에서 바로 작동합니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install logwatch libdate-manip-perl
logwatch 출력을 보려면 less를 사용하십시오.
sudo logwatch | less
지난 7 일간의 로그 워치 보고서를 이메일 주소로 이메일로 보내려면 다음을 입력하고 mail@domain.com을 필수 이메일로 바꿉니다. :
sudo logwatch --mailto mail@domain.com --output mail --format html --range 'between -7 days and today'
시스템 보안 감사-Tiger.
Tiger는 보안 감사 및 침입 탐지 시스템으로 사용할 수있는 보안 도구입니다.
터미널을 열고 다음을 입력하십시오.
sudo apt-get install tiger
타이거를 실행하려면 다음을 입력하십시오.
sudo tiger
모든 Tiger 출력은 / var / log / tiger에서 찾을 수 있습니다
Tiger 보안 보고서를 보려면 터미널을 열고 다음을 입력하십시오.
sudo less /var/log/tiger/security.report.*
답변
당신이 이것이 웹 호스팅 서버 라고 말했기 때문에 … 나는 웹 호스팅 라인에서 5 년 동안 의 모범 사례와 경험을 공유하고 싶습니다 .
-
저의 과거 경험에서, 바로 구성 환경으로 들어가기보다는 주어진 기사에 표시된 것처럼 낮은 보안 고리를 조립해야합니다.
-
LAMP가 있으므로 PHP 와 php.ini 설정에 매우 신중해야합니다 . 이것은 PHP 보안을위한 좋은 링크 입니다. PHP는 제대로 설정하지 않으면 보안 루프가 될 수있는 강력한 기능을 가지고 있습니다.
-
크론 작업 을 사용하여 사용자의 허락없이 파일이 수정되고 해킹되었을 때 확인할 수 있습니다. 이 크론 작업을 사용 합니다 . cron 결과를 비교하기 위해 Notepad ++ 를 선호 합니다 (웹 서버에서 cron 전자 메일을 직접 다운로드하고 메모장 ++에서 열림).
-
일부 SEM을 설치하려면 cPanel을 사용하는 것이 가장 좋습니다 (그러나 유료). Webmin 과 zpanel 은 매우 좋은 무료 대안입니다. Webmin은 자체 서명 인증서를 사용하고 보안을 추가하는 것이 좋습니다.
-
즉시 작동하는 것을 원한다면 Turnkey Linux 로 갈 수 있습니다 . Ubuntu를 기반으로하며 구현이 매우 쉽고 필요에 유연합니다. 약간의 노력만으로도 보안을 즉시 얻을 수 있습니다. 이것은 그들의 램프 스택 입니다. 나는 개인적으로 이것을 사용하고 선호합니다.
-
처음부터 시작하는 경우 ISPconfig3을 설치할 수도 있습니다. 여기에 지시 .
-
Back-Track-Linux를 사용 하여 보안을 침투하여 보안을 테스트 할 수 있습니다 .
-
길고 임의의 복잡한 암호를 유지하십시오 . PC에 보관하지 마십시오 . 를 적어. 라이브 CD를 사용하여이 로그인에 액세스하십시오.
-
받으려는 브 루트 포스 보호 fail2ban 같은 소프트웨어를.
-
필요하지 않은 데몬을 실행하지 마십시오.
-
불필요한 포트를 모두 차단하십시오 . SSH 포트 (22)에 매우주의하십시오.
-
서버를 관리 할 시스템에서 고정 IP를 사용하십시오. IP를 대부분 차단하고 특정 IP 만 포트 22와 같은 구성 위치 에 액세스하도록 허용하십시오 .
하루가 끝나면 … 마음을 다해 작업 하고, 설치에 감정 을 가지지 말고 상식을 적용하면 훨씬 더 멀리 갈 수 있습니다.
**My heartiest best wishes to you. good luck.**
답변
Bastille Linux 프로젝트를 활용하십시오.
전체 보안을 강화하고 Ubuntu 시스템에 대한 타협의 가능성을 줄이기 위해 추가 보안 강화 조치를 수행하는 대화식 도구를 제공합니다 ( Bastille Linux에서 ).
평가 및보고 기능을 제공하므로 시스템의 어떤 부분이 잠겨 있지 않은지 알 수 있습니다. 시스템을 읽기 전용 방식으로 검사하여 각 강화 항목의 상태를보고합니다. 예를 들어 Bastille은 DNS 서버가 chroot prison에 잠겨 있는지, telnet이 꺼져 있는지 또는 암호의 길이가 좋은지 여부를 확인할 수 있습니다. 이 링크를 통해 웹 전용 데모를 살펴볼 수 있습니다 (추가 정보 ).
여기서 웹 (전용) 데모를 미리 볼 수 있습니다 .
답변
nmap
머신의 모든 인터페이스에서 사용 하므로 머신에서 어떤 서비스를 실행하는지 알 수 있습니다. 이것은 보안을위한 필수 도구입니다.
외부 인터페이스에 필요하지 않은 모든 서비스를 제거하십시오. localhost와 같은 특정 인터페이스에서만 수신하도록 MySQL을 구성 할 수 있습니다.
동일한 시스템에서 분당 너무 많은 (실패한) 연결을 허용하지 않도록 ufw를 사용하여 SSH 서비스 (및 가능한 기타)를 보호하십시오. 그렇게하면 무차별 대입 공격이 더 어려워집니다. 포트 번호를 변경하는 것은 유용하지 않으며 단지 모호하며 보안이 없습니다.
컴퓨터의 계정 수를 제한하십시오. 또한 실제로 사용하는 것보다 많은 패키지 / 프로그램을 설치하지 마십시오. X11 서버가 아닌 X11 클라이언트 만 설치하십시오.
비밀번호 없이 디지털 인증서로 시스템에 ssh-login 만 허용하십시오 . 그것은 또한 무차별 대입 공격을 어렵게 / 불가능하게 만듭니다.
답변
또한 CIS 데비안 벤치 마크 문서를 참조하고 데비안 의 파생물이기 때문에 우분투에 적용될 운영 체제를 강화하기위한 많은 절차와 프로세스가 있습니다. 나는 또한 상담 할 것이다 :
답변
보안은 항상 가격과 함께 제공됩니다. 현실적인 경계를 설정하면 목표를 달성하는 데 도움이됩니다. 다음과 같은 측면을 고려할 것입니다.
- 당신은 무엇을 보호하고 있습니까 (어떤 종류의 악당, 그의 예산은 얼마입니까)?
- 공격 벡터는 무엇입니까?
여기에 게시 된 모든 링크를 확인하면이 링크를 추가해야한다고 생각합니다. 소프트웨어 설정 방법뿐만 아니라 보안 계획에 대해서도 생각합니다. 또한 실행하는 모든 명령에 소스가 설명되어 있습니다.