나는 오래된 하드웨어와 Ubuntu 12.04 또는 Debian 6을 사용하여 적당한 규모의 웹 서버를 설정하려고 생각하고 있습니다. 나는 LAN에 있는 컴퓨터를 외부 세계에 노출함으로써 보안 위반 및 공격에 취약해진다는 것을 알고 있습니다. 즉, 저는 Linux를 사용하여 컴퓨터를 보호한 경험이 거의 없기 때문에 이 웹 서버를 보호하기 위해 무엇을 해야 하는지에 대해 몇 가지 권장 사항을 요청하고 싶습니다. 특히 내 홈 LAN에 민감한 정보가 포함된 다른 컴퓨터가 있기 때문입니다( 홈뱅킹 계좌 등에 관한 정보) 매우 감사합니다.
답변1
먼저, 아마 알고 계시겠지만 동적 IP가 있는 경우 DynDNS나 같은 동적 DNS가 필요합니다.DNSexit.
보안 부분에서는 iptables
(또는 다음과 같은 방화벽 GUI를 사용하는 것 같습니다.방화범원하는 경우) SSH 포트(포트 22) 또는 FTP(21)를 열 필요가 없고 메일 서버를 설치하지 않을 경우 홈 서버에는 인바운드 연결을 위해 포트 80만 여는 것으로 충분합니다.
귀하의 사이트에 로그인 페이지가 있거나 ssh, ftp 또는 smtp를 열어야 하는 경우 최소한 다음과 같은 것을 설치하는 것이 좋습니다.실패2금지성공하지 못한 채 연결을 시도하는 IP를 차단하여 영원히 시도하지 않도록 합니다.
주목해야 할 한 가지 중요한 점은 로그를 살펴보고 쉽게 설치하도록 감시해야 한다는 것입니다.logwatch
(Debian 및 Ubuntu의 기본 저장소에 있어야 함) 매일 또는 매주 메일로 경고합니다. 자주 읽으면 무엇이 잘못되었는지 찾는 방법을 빠르게 배울 수 있습니다.
서버 관리를 위해 외부에서 연결해야 하는 경우 VPN을 사용하고 어쨌든 OS를 항상 최신 상태로 유지하세요!
업데이트: SSH 및 sftp의 경우, 나는 fall2ban + SSH 키만(또는 키 + 비밀번호, 비밀번호뿐만 아니라) 필요한 최소값이라고 생각합니다(루트 액세스를 허용하지 않음).
연결하는 데 사용하는 컴퓨터에 고정 IP가 있는 경우 이러한 수신 IP에 대해서만 방화벽을 엽니다.
암호화된 VPN(저는오픈 VPN)은 액세스 보안에도 많은 도움이 됩니다.
여기를 살펴보세요.'빠른' 공식 튜토리얼, 15~30분 안에 하나의 클라이언트, 하나의 서버에 대해 작동하는 VPN 서버를 갖게 됩니다. 더 나은 설정을 위해클라이언트 인증서 인증 및 CA 사용(무료 자체 CA) 몇 분 더 시간이 걸립니다. :D
사이트에 MySQL이 필요하거나 다른 이유로 인터넷에서 MySQL(또는 다른 데이터베이스)을 관리해야 하는 경우, VPN을 사용하지 않는 경우 SSH 터널을 사용하여 머신의 로컬 포트에 연결하면 터널이 암호화됩니다. 데이터베이스 포트를 열 필요가 없도록 서버에 연결하려면 의 -L
및 -D
인수를 살펴보세요 man ssh
.
데이터베이스를 전 세계에 공개하는 공용 IP를 수신하기 위해 phpmyadmin을 설치하지 않을 것입니다. 필요하다면 여기에 터널에 대한 예제 스크립트를 넣을 수 있습니다.