저는 UFW에 처음 입문했습니다. 우리 서버 중 하나가 손상되었으므로 즉시 다음을 수행해야 합니다.
- 모든 인바운드를 거부합니다.
- 모든 아웃바운드를 거부합니다.
- 모든 SSH를 허용합니다.
- 아웃바운드 DNS를 허용합니다.
- Git에서 복제, 푸시, 풀 등을 수행할 수 있습니다.
- 인바운드 HTTP/S(80 및 8081, 443)만 허용됩니다. 서버에서 시작되는 아웃바운드 HTTP/S를 차단해야 합니다.
- MySQL이 127.0.0.1 또는 localhost에만 연결하도록 허용하고 들어오는 모든 MySQL을 차단합니다.
나는 이러한 규칙 중 일부가 이상하다는 것을 알고 있지만 그것이 내가 해야 할 일입니다. 나는 실제로 UFW에서 이러한 작업 중 일부를 완료하는 방법을 전혀 모른다는 것을 깨달았습니다.
이것이 내가 가진 것입니다:
# Deny all outgoing.
ufw default deny incoming
# Deny all outgoing.
ufw default deny outgoing
# Allow outgoing DNS.
ufw allow out 53
# Allow SSH.
ufw allow 22
# Allow outbound Git (I need to be able to clone, pull, push, etc).
ufw allow out 9418/tcp
# Allow only incoming HTTP on port 80 and 8081 without outbound.
# Allow only incoming HTTPS on port 443 without outbound.
ufw allow in to any port 80 proto tcp
# Allow MySQL to connect to localhost only.
ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp
위 명령을 실행한 후 다음을 수행할 수 있습니다.
curl --request GET 'http://foo.bar'
다른 사이트로 HTTP 요청을 보내는 데 사용됩니다 . 서버 내에서 발생하는 HTTP 요청을 거부해야 합니다.- Git 클론을 사용하지 마세요. 그냥 멈춰 있어요.
아직 MySQL을 테스트 하지는 127.0.0.1
않았지만 .localhost
내가 원하는 대로 작동하려면 무엇을 변경해야 합니까?
답변1
나가는 트래픽뿐만 아니라 열려 있는 포트로 들어오는 트래픽도 허용해야 합니다. 그렇지 않으면 대상 서버가 응답을 보낼 수 없습니다. 눈치채셨다면 들어오고 나가는 것을 허용하기 때문에 SSH가 제대로 작동하는 것입니다. 원격 서버의 응답을 차단하고 있으므로 GIT가 작동하지 않습니다. DNS도 손상되었을 수 있습니다.
MySQL: my.cnf는 기본적으로 원격 연결을 허용해서는 안 됩니다. 일반적으로 바인드 주소에서 이를 명시적으로 허용해야 합니다.