Accessing WebApplication exposed by EC2 instance in Private Subnet - amazon-web-services

We have a web-application page exposed at port 9090 on an EC2 instance that lives in the private subnet of our AWS setup.
We have a bastion host that is in the public subnet, and it can talk to the instance in the private subnet. We can also ssh to the instance thru the ssh tunnel of the bastion.
Is there a guide to setting up a proxy on this bastion host to access the webpage in the browser that is served on the http://PrivateSubnetEC2Isntance:9090/, by redirecting the traffic to/from http://PublicBastion:9090/?
I tried setting up a HAProxy (on bastion), but it doesn't seem to work: there are no errors in the HAproxy logs, but accessing the page http://PublicBastion:9090 just times-out.

Though this is not an answer, most likely it could be due to:
Security group rules: Did you open port 9090 for everyone in Bastion security group?
Is your HAProxy listening on 0.0.0.0 and not on 127.0.0.1?

Related

Can't access the EC2 instance remotely

I'm trying to connect my friend's MySQL database remotely but I'm getting connection timeout error. I tried to ssh. But same result.
Then I check that instance. It has public IP. Also allowed 3306 and 22 ports on the security group. Allowed 100th rule for all sources in subnet NACL.
What I'm missing? Is there any other way to block those traffic? Can anyone help me? I'm a still beginner
When an SSH connection times-out, it is normally an indication that network traffic is not getting to the Amazon EC2 instance.
Things to check:
The instance is running Linux
The instance is launched in a public subnet, which is defined as having a Route Table entry to points to an Internet Gateway
The instance has a public IP address, which you are using for the connection
The Network Access Control Lists (NACLs) are set to their default "Allow All" values
A Security Group associated with the instance that permits inbound access on port 22 (SSH) either from your IP address, or from the Internet (0.0.0.0/0)
Your corporate network permits an outbound SSH connection (try alternate networks, eg home vs work vs tethered to your phone)
See also: Troubleshooting connecting to your instance - Amazon Elastic Compute Cloud
Based on your descriptions, I would suggest checking whether the instance was launched in a public subnet.
I found the reason. That instance was deployed in a private subnet and didn't have inbound access.
Solution:-
I deployed a bastion host in a public subnet and used SSH agent forwarding to access the instance through the bastion host.

AWS EC2 IPv4 Public Address not reachable

I have deployed a Strapi.io app on AWS EC2 Following the documentation provided by strapi.io on their site.
Everything went great but when i try to reach the public IP of my EC2 instance, it is unreachable.
I have checked assigned an elastic ip.
I have also checked the gateway and security group, every thing is good but still my IP is unreachable.
Security Group Setting
Check your routing table of the subnet. If it routes the cidr 0.0.0.0/0 to the internet gateway, then the subnet is public and can connect by the public ip. If it routes to the NAT gateway, then the subnet is private and you need the load balancer or bastion to connect the ec2 on the private subnet by private ip. On the private subnet, the public ip is useless.
The issue here is that you need a web serever or reverse proxy like nginx, apache to listen on the port 80 and server your application. Currently, you would not have a web server configured for your app so you do not get any response when you hit the IP Address in your browser.

Can't access another AWS ec2 instance (in the same subnet)

I'm setting up an AWS VPC with both private and public subnets. In public subnets, I created 2 instances: one as bastion host and one as a web server. For the web server, I only want to make port 80 open to public, but SSH access needs to done through the bastion host.
I created 2 paris of SSH keys. One is dedicated for public access to bastion host from external. Another is for private SSH access from bastion host to the web server (and all other instances that will be created in the private subnets).
At the moment, I can SSH to bastion host as expected. But from bastion host, I can't SSH into the web server, althoug I have the right inbound securiy rules. In order to find the issue, I did some more tests. First, I expanded the inbound rule on the web server to allow public SSH access. Once I do so, I can SSH into the web server from external. Second, I add rules for ICMP traffic both from bastion host only and from public (0.0.0.0/0). But again, I can ping from external, but not from bastion host.
Below is the webserver (IP: 191.100.0.56) inbound and outbound rules. Note that IP 191.100.0.162 is the bastion host IP.
[WebServer Inbound rules]
Ports Protocol Source
22 tcp 191.100.0.160/32, 0.0.0.0/0
[WebServer Outbound rules]
Ports Protocol Source
All All 0.0.0.0/0
The subnet ACL is default which is Allow ALL for both inbound and outbound.
100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
* ALL Traffic ALL ALL 0.0.0.0/0 DENY
I'm wondering where could be the problem? This is a bit strange to me. Why I can access (SSH or ping) from public, but not from the bastion host?

AWS Pfsense OpenVPN no access to private subnet

My question is about not being able to connect to my private instance in AWS VPC through a VPN.
I have set up a pfsense instance that also acts as the OpenVPN server.
Then I installed pfsense on AWS with the official pfsense AMI and everything is working as expected so far.
I have 1 public subnet and 1 private subnet containing a linux instance that I want to reach via the VPN.
When connecting to the VPN I can't ping the linux instance in the private subnet.
The pfsense firewall (2.4.4) has the following interfaces:
**WAN** 10.3.0.245
**LAN** 10.3.1.5
The OpenVPN tunnel network is 10.3.2.0/24 going to 10.3.1.0/24 channeling all trafic trough the VPN.
The linux instance has the following private IP: 10.3.1.58
The firewall itself can ping the instance and when I connect to the VPN (windows host) I can ping the firewall on 10.3.1.5 .
However, I can't ping 10.3.1.58 (request timed out).
I cant SSH either into the instance.
Could the route table be wrong?
Route print on windows vpn client:
The security group in amazon allows all trafic for now.
Disabled the firewall on the linux system.
Disabled source / destination checking on the instance and the secondary network interface.
I have allowed traffic from the vpn to the lan (for now I allowed all traffic to see where the problem lies).
Did you disable source/destination checks on the pfsense instance?
You can disable it by following this guide - https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck
My hosts have their gateway set as 10.3.1.1, it should be 10.3.1.5 (PFSense Lan).

Problems connecting to public IP address from EC2 instance

I'm new to setting up applications and currently facing issues connecting to my IP address.
Recently, I launched my first AWS instance and it was working fine before I attached it to an Elastic IP (trying to attach to my GoDaddy domain). The instance state is "running" and everything looks healthy, but when I go to the Public IP/Elastic IP, I get an error message saying: "This site can’t be reached. XX.XXX.XX.XXX refused to connect". I'm using a Mac and my web server is listening on port 80.
Things I have checked:
internet connection is working
not using any firewall/anitvirus
emptied all cache/cookies
not using a proxy server
My Security Group
– inbound ports 80, 8080, 22 and 3389;
– outbound ports 8080, All traffic.
My VPC
– subnet ID is verified and "available"
– route Tables 172.31.0.0/16 & 0.0.0.0/0 are "active", not propagated
Can someone help and please point out what I'm doing wrong?
Attaching an Elastic IP Address to an Amazon EC2 instance does not change anything on the instance itself. It is purely an assignment of a Public IP Address within the Amazon VPC.
Amazon EC2 instances do not normally know their own public IP address. Instead, traffic sent to the Public IP Address is routed through the Internet Gateway and then to the private IP address of the instance. As long as you did not somehow configure the old public IP address within the instance, the assignment of the Elastic IP Address should not be a problem.
You can remove the Elastic IP Address and try connecting again -- the instance will receive an auto-assigned IP address again (which might change whenever you start/stop the instance).
Some things you could try are:
Connect to another instance in the same subnet, with the same Security Group. If this works, then you know that the problem is with the instance itself, rather than the network.
Try connecting to the non-responsive instance from another instance in the same subnet using the private IP address of the non-responsive instance. This will eliminate potential networking problems.
The standard things to always check when attempting to connect from the Internet to an EC2 instance are:
Internet Gateway attached to the VPC
You are referencing the instance via a Public IP Address
Instance was launched in a public subnet, which means that the subnet is associated to a Route Table that routes to the Internet Gateways
Security Group is permitting the inbound traffic from your IP Address and port (outbound traffic configuration is irrelevant because Security Groups are stateful)
Network ACL is not blocking the traffic (by default it permits all inbound and outbound traffic)
The instance is listening on the port (eg Linux SSH on port 22, Windows RDP on port 3389)
There are no host-based firewalls on the instance blocking traffic (eg Windows Firewall)
I always reboot my Linux servers on AWS after associating an elastic IP. Normally I wouldn't blindly suggest rebooting a Linux server, but I have found it helpful in cases like this. There are several things you should think about before rebooting. Making sure you don't have important files exclusively on volatile storage would be one example.
Re "...when I go to the Public IP/Elastic IP..." How are you going to the address? Sounds like you're trying to connect with a web browser.
Have you tried connecting from your Mac over some other protocol, like ssh? That would be another way to confirm that your elastic IP is in effect
Have you tried to connect to the web server more directly? Like using wget from the server's shell? You would use the private IP address or localhost, so that doesn't help diagnose the elastic IP address.